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. > 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++; >