[Qemu-devel] [PATCH 4/9] m25p80: Introduce COLLECTING_VAR_LEN_DATA state.
From: Marcin Krzeminski Some flash allows to stop read at any time. Allow framework to support this. Signed-off-by: Marcin Krzeminski --- hw/block/m25p80.c | 5 + 1 file changed, 5 insertions(+) diff --git a/hw/block/m25p80.c b/hw/block/m25p80.c index 6910c52..ca1f882 100644 --- a/hw/block/m25p80.c +++ b/hw/block/m25p80.c @@ -330,6 +330,7 @@ typedef enum { STATE_PAGE_PROGRAM, STATE_READ, STATE_COLLECTING_DATA, +STATE_COLLECTING_VAR_LEN_DATA, STATE_READING_DATA, } CMDState; @@ -872,6 +873,9 @@ static int m25p80_cs(SSISlave *ss, bool select) Flash *s = M25P80(ss); if (select) { +if (s->state == STATE_COLLECTING_VAR_LEN_DATA) { +complete_collecting_data(s); +} s->len = 0; s->pos = 0; s->state = STATE_IDLE; @@ -905,6 +909,7 @@ static uint32_t m25p80_transfer8(SSISlave *ss, uint32_t tx) break; case STATE_COLLECTING_DATA: +case STATE_COLLECTING_VAR_LEN_DATA: s->data[s->len] = (uint8_t)tx; s->len++; -- 2.7.4
Re: [Qemu-devel] [PATCH 4/9] m25p80: Introduce COLLECTING_VAR_LEN_DATA state.
On 06/15/2016 03:41 PM, marcin.krzemin...@nokia.com wrote: > From: Marcin Krzeminski > > Some flash allows to stop read at any time. > Allow framework to support this. > > Signed-off-by: Marcin Krzeminski > --- > hw/block/m25p80.c | 5 + > 1 file changed, 5 insertions(+) > > diff --git a/hw/block/m25p80.c b/hw/block/m25p80.c > index 6910c52..ca1f882 100644 > --- a/hw/block/m25p80.c > +++ b/hw/block/m25p80.c > @@ -330,6 +330,7 @@ typedef enum { > STATE_PAGE_PROGRAM, > STATE_READ, > STATE_COLLECTING_DATA, > +STATE_COLLECTING_VAR_LEN_DATA, > STATE_READING_DATA, > } CMDState; > > @@ -872,6 +873,9 @@ static int m25p80_cs(SSISlave *ss, bool select) > Flash *s = M25P80(ss); > > if (select) { > +if (s->state == STATE_COLLECTING_VAR_LEN_DATA) { > +complete_collecting_data(s); > +} So for example, we could trigger an erase without a completed address ? C. > s->len = 0; > s->pos = 0; > s->state = STATE_IDLE; > @@ -905,6 +909,7 @@ static uint32_t m25p80_transfer8(SSISlave *ss, uint32_t > tx) > break; > > case STATE_COLLECTING_DATA: > +case STATE_COLLECTING_VAR_LEN_DATA: > s->data[s->len] = (uint8_t)tx; > s->len++; >
Re: [Qemu-devel] [PATCH 4/9] m25p80: Introduce COLLECTING_VAR_LEN_DATA state.
> -Original Message- > From: Cédric Le Goater [mailto:c...@kaod.org] > Sent: Thursday, June 16, 2016 9:14 AM > To: Krzeminski, Marcin (Nokia - PL/Wroclaw) > ; qemu-devel@nongnu.org > Cc: crosthwaitepe...@gmail.com; pawel.len...@itlen.com; > peter.mayd...@linaro.org > Subject: Re: [PATCH 4/9] m25p80: Introduce COLLECTING_VAR_LEN_DATA > state. > > On 06/15/2016 03:41 PM, marcin.krzemin...@nokia.com wrote: > > From: Marcin Krzeminski > > > > Some flash allows to stop read at any time. > > Allow framework to support this. > > > > Signed-off-by: Marcin Krzeminski > > --- > > hw/block/m25p80.c | 5 + > > 1 file changed, 5 insertions(+) > > > > diff --git a/hw/block/m25p80.c b/hw/block/m25p80.c index > > 6910c52..ca1f882 100644 > > --- a/hw/block/m25p80.c > > +++ b/hw/block/m25p80.c > > @@ -330,6 +330,7 @@ typedef enum { > > STATE_PAGE_PROGRAM, > > STATE_READ, > > STATE_COLLECTING_DATA, > > +STATE_COLLECTING_VAR_LEN_DATA, > > STATE_READING_DATA, > > } CMDState; > > > > @@ -872,6 +873,9 @@ static int m25p80_cs(SSISlave *ss, bool select) > > Flash *s = M25P80(ss); > > > > if (select) { > > +if (s->state == STATE_COLLECTING_VAR_LEN_DATA) { > > +complete_collecting_data(s); > > +} > > So for example, we could trigger an erase without a completed address ? > > C. Yes if you explicitly want that. This is new state and you need to go into it in decode_new_cmd. For now this is only used in WRSR command only. Thanks, Marcin > > > s->len = 0; > > s->pos = 0; > > s->state = STATE_IDLE; > > @@ -905,6 +909,7 @@ static uint32_t m25p80_transfer8(SSISlave *ss, > uint32_t tx) > > break; > > > > case STATE_COLLECTING_DATA: > > +case STATE_COLLECTING_VAR_LEN_DATA: > > s->data[s->len] = (uint8_t)tx; > > s->len++; > >
Re: [Qemu-devel] [PATCH 4/9] m25p80: Introduce COLLECTING_VAR_LEN_DATA state.
On 06/16/2016 09:43 AM, Krzeminski, Marcin (Nokia - PL/Wroclaw) wrote: > > >> -Original Message- >> From: Cédric Le Goater [mailto:c...@kaod.org] >> Sent: Thursday, June 16, 2016 9:14 AM >> To: Krzeminski, Marcin (Nokia - PL/Wroclaw) >> ; qemu-devel@nongnu.org >> Cc: crosthwaitepe...@gmail.com; pawel.len...@itlen.com; >> peter.mayd...@linaro.org >> Subject: Re: [PATCH 4/9] m25p80: Introduce COLLECTING_VAR_LEN_DATA >> state. >> >> On 06/15/2016 03:41 PM, marcin.krzemin...@nokia.com wrote: >>> From: Marcin Krzeminski >>> >>> Some flash allows to stop read at any time. >>> Allow framework to support this. >>> >>> Signed-off-by: Marcin Krzeminski >>> --- >>> hw/block/m25p80.c | 5 + >>> 1 file changed, 5 insertions(+) >>> >>> diff --git a/hw/block/m25p80.c b/hw/block/m25p80.c index >>> 6910c52..ca1f882 100644 >>> --- a/hw/block/m25p80.c >>> +++ b/hw/block/m25p80.c >>> @@ -330,6 +330,7 @@ typedef enum { >>> STATE_PAGE_PROGRAM, >>> STATE_READ, >>> STATE_COLLECTING_DATA, >>> +STATE_COLLECTING_VAR_LEN_DATA, >>> STATE_READING_DATA, >>> } CMDState; >>> >>> @@ -872,6 +873,9 @@ static int m25p80_cs(SSISlave *ss, bool select) >>> Flash *s = M25P80(ss); >>> >>> if (select) { >>> +if (s->state == STATE_COLLECTING_VAR_LEN_DATA) { >>> +complete_collecting_data(s); >>> +} >> >> So for example, we could trigger an erase without a completed address ? >> >> C. > Yes if you explicitly want that. This is new state and you need to go > into it in decode_new_cmd. > For now this is only used in WRSR command only. OK. I see and I understand the use in that case. Reviewed-by: Cédric Le Goater C. > > Thanks, > Marcin >> >>> s->len = 0; >>> s->pos = 0; >>> s->state = STATE_IDLE; >>> @@ -905,6 +909,7 @@ static uint32_t m25p80_transfer8(SSISlave *ss, >> uint32_t tx) >>> break; >>> >>> case STATE_COLLECTING_DATA: >>> +case STATE_COLLECTING_VAR_LEN_DATA: >>> s->data[s->len] = (uint8_t)tx; >>> s->len++; >>> >