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) >> <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.
OK. I see and I understand the use in that case. Reviewed-by: Cédric Le Goater <c...@kaod.org> 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++; >>> >