[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;
>