From: Bin Meng <[email protected]> Per datasheet [1], the number of dummy cycles for Macronix flashes is configurable via two volatible bits (DC1, DC2) in a configuration register.
Do the same dummy cycle to dummy byte conversion fix as others. [1] https://www.macronix.com/Lists/Datasheet/Attachments/7674/MX66U51235F,%201.8V,%20512Mb,%20v1.1.pdf Fixes: cf6f1efe0b57 ("m25p80: Fast read commands family changes") Signed-off-by: Bin Meng <[email protected]> --- hw/block/m25p80.c | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/hw/block/m25p80.c b/hw/block/m25p80.c index c8cd12a6d3..44508b3da9 100644 --- a/hw/block/m25p80.c +++ b/hw/block/m25p80.c @@ -949,10 +949,10 @@ static void decode_fast_read_cmd(Flash *s) break; case MAN_MACRONIX: if (extract32(s->volatile_cfg, 6, 2) == 1) { - s->needed_bytes += 6; - } else { - s->needed_bytes += 8; + qemu_log_mask(LOG_UNIMP, + "M25P80: the number of dummy bits is not multiple of 8"); } + s->needed_bytes += 1; break; case MAN_SPANSION: s->needed_bytes += extract32(s->spansion_cr2v, @@ -989,13 +989,14 @@ static void decode_dio_read_cmd(Flash *s) case MAN_MACRONIX: switch (extract32(s->volatile_cfg, 6, 2)) { case 1: - s->needed_bytes += 6; - break; + qemu_log_mask(LOG_UNIMP, + "M25P80: the number of dummy bits is not multiple of 8"); + /* fall-through */ case 2: - s->needed_bytes += 8; + s->needed_bytes += 2; break; default: - s->needed_bytes += 4; + s->needed_bytes += 1; break; } break; @@ -1028,13 +1029,13 @@ static void decode_qio_read_cmd(Flash *s) case MAN_MACRONIX: switch (extract32(s->volatile_cfg, 6, 2)) { case 1: - s->needed_bytes += 4; + s->needed_bytes += 2; break; case 2: - s->needed_bytes += 8; + s->needed_bytes += 4; break; default: - s->needed_bytes += 6; + s->needed_bytes += 3; break; } break; -- 2.25.1
