> -----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) > <marcin.krzemin...@nokia.com>; 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 <marcin.krzemin...@nokia.com> > > > > Some flash allows to stop read at any time. > > Allow framework to support this. > > > > Signed-off-by: Marcin Krzeminski <marcin.krzemin...@nokia.com> > > --- > > 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++; > >