From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from eggs.gnu.org ([2001:4830:134:3::10]:60451) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1bDRV3-00015v-UB for qemu-devel@nongnu.org; Thu, 16 Jun 2016 03:14:02 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1bDRV0-0007bb-OF for qemu-devel@nongnu.org; Thu, 16 Jun 2016 03:14:01 -0400 Received: from 16.mo3.mail-out.ovh.net ([188.165.56.217]:37749) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1bDRV0-0007aR-He for qemu-devel@nongnu.org; Thu, 16 Jun 2016 03:13:58 -0400 Received: from player772.ha.ovh.net (b7.ovh.net [213.186.33.57]) by mo3.mail-out.ovh.net (Postfix) with ESMTP id A1813100024A for ; Thu, 16 Jun 2016 09:13:52 +0200 (CEST) References: <1465998071-7355-1-git-send-email-marcin.krzeminski@nokia.com> <1465998071-7355-5-git-send-email-marcin.krzeminski@nokia.com> From: =?UTF-8?Q?C=c3=a9dric_Le_Goater?= Message-ID: <576251AB.7030600@kaod.org> Date: Thu, 16 Jun 2016 09:13:47 +0200 MIME-Version: 1.0 In-Reply-To: <1465998071-7355-5-git-send-email-marcin.krzeminski@nokia.com> Content-Type: text/plain; charset=windows-1252 Content-Transfer-Encoding: 7bit Subject: Re: [Qemu-devel] [PATCH 4/9] m25p80: Introduce COLLECTING_VAR_LEN_DATA state. List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: marcin.krzeminski@nokia.com, qemu-devel@nongnu.org Cc: crosthwaitepeter@gmail.com, pawel.lenkow@itlen.com, peter.maydell@linaro.org On 06/15/2016 03:41 PM, marcin.krzeminski@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++; >