hw/block/pflash_cfi01: Rename 'reset_flash' label as 'mode_read_array'

Rename the 'reset_flash' as 'mode_read_array' to make explicit we
do not reset the device, we simply set its internal state machine
in the READ_ARRAY mode. We do not reset the status register error
bits, as a device reset would do.

Reviewed-by: John Snow <jsnow@redhat.com>
Reviewed-by: Alistair Francis <alistair.francis@wdc.com>
Message-Id: <20190716221555.11145-5-philmd@redhat.com>
Signed-off-by: Philippe Mathieu-Daudé <philmd@redhat.com>
This commit is contained in:
Philippe Mathieu-Daudé 2019-07-16 19:11:57 +02:00
parent aba53a12bd
commit 3072182dc1

View File

@ -454,7 +454,7 @@ static void pflash_write(PFlashCFI01 *pfl, hwaddr offset,
/* read mode */ /* read mode */
switch (cmd) { switch (cmd) {
case 0x00: /* This model reset value for READ_ARRAY (not CFI) */ case 0x00: /* This model reset value for READ_ARRAY (not CFI) */
goto reset_flash; goto mode_read_array;
case 0x10: /* Single Byte Program */ case 0x10: /* Single Byte Program */
case 0x40: /* Single Byte Program */ case 0x40: /* Single Byte Program */
DPRINTF("%s: Single Byte Program\n", __func__); DPRINTF("%s: Single Byte Program\n", __func__);
@ -477,7 +477,7 @@ static void pflash_write(PFlashCFI01 *pfl, hwaddr offset,
case 0x50: /* Clear status bits */ case 0x50: /* Clear status bits */
DPRINTF("%s: Clear status bits\n", __func__); DPRINTF("%s: Clear status bits\n", __func__);
pfl->status = 0x0; pfl->status = 0x0;
goto reset_flash; goto mode_read_array;
case 0x60: /* Block (un)lock */ case 0x60: /* Block (un)lock */
DPRINTF("%s: Block unlock\n", __func__); DPRINTF("%s: Block unlock\n", __func__);
break; break;
@ -502,10 +502,10 @@ static void pflash_write(PFlashCFI01 *pfl, hwaddr offset,
break; break;
case 0xf0: /* Probe for AMD flash */ case 0xf0: /* Probe for AMD flash */
DPRINTF("%s: Probe for AMD flash\n", __func__); DPRINTF("%s: Probe for AMD flash\n", __func__);
goto reset_flash; goto mode_read_array;
case 0xff: /* Read array mode */ case 0xff: /* Read Array */
DPRINTF("%s: Read array mode\n", __func__); DPRINTF("%s: Read array mode\n", __func__);
goto reset_flash; goto mode_read_array;
default: default:
goto error_flash; goto error_flash;
} }
@ -531,8 +531,8 @@ static void pflash_write(PFlashCFI01 *pfl, hwaddr offset,
if (cmd == 0xd0) { /* confirm */ if (cmd == 0xd0) { /* confirm */
pfl->wcycle = 0; pfl->wcycle = 0;
pfl->status |= 0x80; pfl->status |= 0x80;
} else if (cmd == 0xff) { /* read array mode */ } else if (cmd == 0xff) { /* Read Array */
goto reset_flash; goto mode_read_array;
} else } else
goto error_flash; goto error_flash;
@ -558,16 +558,16 @@ static void pflash_write(PFlashCFI01 *pfl, hwaddr offset,
} else if (cmd == 0x01) { } else if (cmd == 0x01) {
pfl->wcycle = 0; pfl->wcycle = 0;
pfl->status |= 0x80; pfl->status |= 0x80;
} else if (cmd == 0xff) { } else if (cmd == 0xff) { /* Read Array */
goto reset_flash; goto mode_read_array;
} else { } else {
DPRINTF("%s: Unknown (un)locking command\n", __func__); DPRINTF("%s: Unknown (un)locking command\n", __func__);
goto reset_flash; goto mode_read_array;
} }
break; break;
case 0x98: case 0x98:
if (cmd == 0xff) { if (cmd == 0xff) { /* Read Array */
goto reset_flash; goto mode_read_array;
} else { } else {
DPRINTF("%s: leaving query mode\n", __func__); DPRINTF("%s: leaving query mode\n", __func__);
} }
@ -627,7 +627,7 @@ static void pflash_write(PFlashCFI01 *pfl, hwaddr offset,
" the data is already written to storage!\n" " the data is already written to storage!\n"
"Flash device reset into READ mode.\n", "Flash device reset into READ mode.\n",
__func__); __func__);
goto reset_flash; goto mode_read_array;
} }
break; break;
default: default:
@ -637,7 +637,7 @@ static void pflash_write(PFlashCFI01 *pfl, hwaddr offset,
default: default:
/* Should never happen */ /* Should never happen */
DPRINTF("%s: invalid write state\n", __func__); DPRINTF("%s: invalid write state\n", __func__);
goto reset_flash; goto mode_read_array;
} }
return; return;
@ -646,7 +646,7 @@ static void pflash_write(PFlashCFI01 *pfl, hwaddr offset,
"(offset " TARGET_FMT_plx ", wcycle 0x%x cmd 0x%x value 0x%x)" "(offset " TARGET_FMT_plx ", wcycle 0x%x cmd 0x%x value 0x%x)"
"\n", __func__, offset, pfl->wcycle, pfl->cmd, value); "\n", __func__, offset, pfl->wcycle, pfl->cmd, value);
reset_flash: mode_read_array:
trace_pflash_reset(); trace_pflash_reset();
memory_region_rom_device_set_romd(&pfl->mem, true); memory_region_rom_device_set_romd(&pfl->mem, true);
pfl->wcycle = 0; pfl->wcycle = 0;