> -----Original Message-----
> From: Cédric Le Goater [mailto:c...@kaod.org]
> Sent: Thursday, July 07, 2016 2:57 PM
> To: Krzeminski, Marcin (Nokia - PL/Wroclaw)
> <marcin.krzemin...@nokia.com>; qemu-devel@nongnu.org
> Cc: crosthwaitepe...@gmail.com; rfsw-patc...@mlist.nokia.com;
> peter.mayd...@linaro.org; c...@fr.ibm.com
> Subject: Re: [PATCH] m25p80: Fix QIOR/DIOR handling for Winbond
> 
> Hello Marcin,
> 
> On 07/06/2016 02:43 PM, marcin.krzemin...@nokia.com wrote:
> > From: Marcin Krzeminski <marcin.krzemin...@nokia.com>
> >
> > Winbond also support continuous read mode, but as an opposite for
> > other flash type read mode clock cycles are included to dummy cycles
> number.
> > This path add proper handling of read mode byte and update needed
> > dummy cycles. QPI mode and dummy cycles configuration are not
> supported.
> >
> > Signed-off-by: Marcin Krzeminski <marcin.krzemin...@nokia.com>
> > ---
> >  hw/block/m25p80.c | 6 ++++--
> >  1 file changed, 4 insertions(+), 2 deletions(-)
> >
> > diff --git a/hw/block/m25p80.c b/hw/block/m25p80.c index
> > d9b2793..a349544 100644
> > --- a/hw/block/m25p80.c
> > +++ b/hw/block/m25p80.c
> > @@ -149,6 +149,7 @@ typedef struct FlashPartInfo {  */
> >
> >  #define SPANSION_CONTINUOUS_READ_MODE_CMD_LEN 1
> > +#define WINBOND_CONTINUOUS_READ_MODE_CMD_LEN 1
> 
> I checked the W25Q256FV datasheet and
> 
> >  static const FlashPartInfo known_devices[] = {
> >      /* Atmel -- some are (confusingly) marketed as "DataFlash" */ @@
> > -775,7 +776,7 @@ static void decode_dio_read_cmd(Flash *s)
> >      /* Dummy cycles modeled with bytes writes instead of bits */
> >      switch (get_man(s)) {
> >      case MAN_WINBOND:
> > -        s->needed_bytes += 8;
> > +        s->needed_bytes +=
> WINBOND_CONTINUOUS_READ_MODE_CMD_LEN;
> 
> this looks fine,
> 
> >          break;
> >      case MAN_SPANSION:
> >          s->needed_bytes +=
> SPANSION_CONTINUOUS_READ_MODE_CMD_LEN;
> > @@ -814,7 +815,8 @@ static void decode_qio_read_cmd(Flash *s)
> >      /* Dummy cycles modeled with bytes writes instead of bits */
> >      switch (get_man(s)) {
> >      case MAN_WINBOND:
> > -        s->needed_bytes += 8;
> > +        s->needed_bytes +=
> WINBOND_CONTINUOUS_READ_MODE_CMD_LEN;
> > +        s->needed_bytes += 4;
> 
> but I don't understand the above. I see the address + M7-0 + 2 dummies.
> 
Hello Cedric,

This is because the problematic interface in here. Generally you need
to send 2 dummy bytes, but this is four clocks in this mode (Fig 24a).
I want to send a proposal to change this dummy clock interface
after 2.7 will be released, because now it is really confusing and unclear.

Thanks,
Marcin

> Thanks,
> 
> C.
> 
> >          break;
> >      case MAN_SPANSION:
> >          s->needed_bytes +=
> SPANSION_CONTINUOUS_READ_MODE_CMD_LEN;
> >


Reply via email to