[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [Qemu-devel] [PATCH v4 08/11] block: m25p80: Fast read and 4bytes co
From: |
Peter Crosthwaite |
Subject: |
Re: [Qemu-devel] [PATCH v4 08/11] block: m25p80: Fast read and 4bytes commands |
Date: |
Thu, 17 Mar 2016 10:35:41 -0700 |
On Mon, Feb 22, 2016 at 12:03 AM, <address@hidden> wrote:
> From: Marcin Krzeminski <address@hidden>
>
> Adds fast read and 4bytes commands family.
> This work is based on Pawel Lenkow patch from v1.
>
> Signed-off-by: Marcin Krzeminski <address@hidden>
> ---
> hw/block/m25p80.c | 48 +++++++++++++++++++++++++++++++++++++++++++++---
> 1 file changed, 45 insertions(+), 3 deletions(-)
>
> diff --git a/hw/block/m25p80.c b/hw/block/m25p80.c
> index aff28f3..4acc79a 100644
> --- a/hw/block/m25p80.c
> +++ b/hw/block/m25p80.c
> @@ -224,19 +224,28 @@ typedef enum {
> BULK_ERASE = 0xc7,
>
> READ = 0x3,
You should fix READ as "0x03"
> - FAST_READ = 0xb,
> + READ4 = 0x13,
> + FAST_READ = 0x0b,
To match this context change
> + FAST_READ4 = 0x0c,
> DOR = 0x3b,
> + DOR4 = 0x3c,
> QOR = 0x6b,
> + QOR4 = 0x6c,
> DIOR = 0xbb,
> + DIOR4 = 0xbc,
> QIOR = 0xeb,
> + QIOR4 = 0xec,
>
> PP = 0x2,
> + PP4 = 0x12,
> DPP = 0xa2,
> QPP = 0x32,
>
> ERASE_4K = 0x20,
> + ERASE4_4K = 0x21,
> ERASE_32K = 0x52,
> ERASE_SECTOR = 0xd8,
> + ERASE4_SECTOR = 0xdc,
>
> EN_4BYTE_ADDR = 0xB7,
> EX_4BYTE_ADDR = 0xE9,
> @@ -359,6 +368,7 @@ static void flash_erase(Flash *s, int offset, FlashCMD
> cmd)
>
> switch (cmd) {
> case ERASE_4K:
> + case ERASE4_4K:
> len = 4 << 10;
> capa_to_assert = ER_4K;
> break;
> @@ -367,6 +377,7 @@ static void flash_erase(Flash *s, int offset, FlashCMD
> cmd)
> capa_to_assert = ER_32K;
> break;
> case ERASE_SECTOR:
> + case ERASE4_SECTOR:
> len = s->pi->sector_size;
> break;
> case BULK_ERASE:
> @@ -425,7 +436,20 @@ void flash_write8(Flash *s, uint64_t addr, uint8_t data)
>
> static inline int get_addr_length(Flash *s)
> {
> - return s->four_bytes_address_mode ? 4 : 3;
> + switch (s->cmd_in_progress) {
> + case PP4:
> + case READ4:
> + case QIOR4:
> + case ERASE4_4K:
> + case ERASE4_SECTOR:
> + case FAST_READ4:
> + case DOR4:
> + case QOR4:
> + case DIOR4:
> + return 4;
> + default:
> + return s->four_bytes_address_mode ? 4 : 3;
> + }
> }
>
> static void complete_collecting_data(Flash *s)
> @@ -449,19 +473,28 @@ static void complete_collecting_data(Flash *s)
> case DPP:
> case QPP:
> case PP:
> + case PP4:
> s->state = STATE_PAGE_PROGRAM;
> break;
> case READ:
> + case READ4:
> case FAST_READ:
> + case FAST_READ4:
> case DOR:
> + case DOR4:
> case QOR:
> + case QOR4:
> case DIOR:
> + case DIOR4:
> case QIOR:
> + case QIOR4:
> s->state = STATE_READ;
> break;
> case ERASE_4K:
> + case ERASE4_4K:
> case ERASE_32K:
> case ERASE_SECTOR:
> + case ERASE4_SECTOR:
> flash_erase(s, s->cur_addr, s->cmd_in_progress);
> break;
> case WRSR:
> @@ -550,12 +583,16 @@ static void decode_new_cmd(Flash *s, uint32_t value)
> switch (value) {
>
> case ERASE_4K:
> + case ERASE4_4K:
> case ERASE_32K:
> case ERASE_SECTOR:
> + case ERASE4_SECTOR:
> case READ:
> + case READ4:
> case DPP:
> case QPP:
> case PP:
> + case PP4:
> s->needed_bytes = get_addr_length(s);
> s->pos = 0;
> s->len = 0;
> @@ -563,11 +600,14 @@ static void decode_new_cmd(Flash *s, uint32_t value)
> break;
>
> case FAST_READ:
> + case FAST_READ4:
> case DOR:
> + case DOR4:
> case QOR:
> + case QOR4:
> s->needed_bytes = get_addr_length(s);
> if (((s->pi->jedec >> 16) & 0xFF) == JEDEC_NUMONYX) {
> - /* Dummy cycles modeled with bytes writes instead of bits */
> + /* Dummy cycles - modeled with bytes writes instead of bits */
White change shouldn't be here.
Otherwise:
Reviewed-by: Peter Crosthwaite <address@hidden>
> s->needed_bytes += extract32(s->volatile_cfg, 4, 4);
> }
> s->pos = 0;
> @@ -576,6 +616,7 @@ static void decode_new_cmd(Flash *s, uint32_t value)
> break;
>
> case DIOR:
> + case DIOR4:
> switch ((s->pi->jedec >> 16) & 0xFF) {
> case JEDEC_WINBOND:
> case JEDEC_SPANSION:
> @@ -595,6 +636,7 @@ static void decode_new_cmd(Flash *s, uint32_t value)
> break;
>
> case QIOR:
> + case QIOR4:
> switch ((s->pi->jedec >> 16) & 0xFF) {
> case JEDEC_WINBOND:
> case JEDEC_SPANSION:
> --
> 2.5.0
>
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- Re: [Qemu-devel] [PATCH v4 08/11] block: m25p80: Fast read and 4bytes commands,
Peter Crosthwaite <=