Generalize m25p80 Read-ID 0x90/0xAB beyond SST chips
This commit is contained in:
+10
-20
@@ -856,28 +856,18 @@ static void complete_collecting_data(Flash *s)
|
||||
break;
|
||||
case RDID_90:
|
||||
case RDID_AB:
|
||||
if (get_man(s) == MAN_SST) {
|
||||
if (s->cur_addr <= 1) {
|
||||
if (s->cur_addr) {
|
||||
s->data[0] = s->pi->id[2];
|
||||
s->data[1] = s->pi->id[0];
|
||||
} else {
|
||||
s->data[0] = s->pi->id[0];
|
||||
s->data[1] = s->pi->id[2];
|
||||
}
|
||||
s->pos = 0;
|
||||
s->len = 2;
|
||||
s->data_read_loop = true;
|
||||
s->state = STATE_READING_DATA;
|
||||
} else {
|
||||
qemu_log_mask(LOG_GUEST_ERROR,
|
||||
"M25P80: Invalid read id address\n");
|
||||
}
|
||||
// Read Manufacturer/Device ID - The address low bit selects which of the manufacturer/device pair comes first; real chips answer regardless of vendor, so this is not gated on MAN_SST. Reused for 0xAB (Release Power-Down + Device ID), whose trailing byte reads back the device id.
|
||||
if (s->cur_addr) {
|
||||
s->data[0] = s->pi->id[2];
|
||||
s->data[1] = s->pi->id[0];
|
||||
} else {
|
||||
qemu_log_mask(LOG_GUEST_ERROR,
|
||||
"M25P80: Read id (command 0x90/0xAB) is not supported"
|
||||
" by device\n");
|
||||
s->data[0] = s->pi->id[0];
|
||||
s->data[1] = s->pi->id[2];
|
||||
}
|
||||
s->pos = 0;
|
||||
s->len = 2;
|
||||
s->data_read_loop = true;
|
||||
s->state = STATE_READING_DATA;
|
||||
break;
|
||||
|
||||
case RDSFDP:
|
||||
|
||||
Reference in New Issue
Block a user