qemu-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Qemu-devel] [PATCH] m25p80: Fix QIOR/DIOR handling for Winbond


From: Cédric Le Goater
Subject: Re: [Qemu-devel] [PATCH] m25p80: Fix QIOR/DIOR handling for Winbond
Date: Thu, 7 Jul 2016 14:57:23 +0200
User-agent: Mozilla/5.0 (X11; Linux x86_64; rv:45.0) Gecko/20100101 Icedove/45.1.0

Hello Marcin,

On 07/06/2016 02:43 PM, address@hidden wrote:
> From: Marcin Krzeminski <address@hidden>
> 
> 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 <address@hidden>
> ---
>  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.

Thanks,

C. 

>          break;
>      case MAN_SPANSION:
>          s->needed_bytes += SPANSION_CONTINUOUS_READ_MODE_CMD_LEN;
> 




reply via email to

[Prev in Thread] Current Thread [Next in Thread]