summaryrefslogtreecommitdiff
path: root/hw/block
diff options
context:
space:
mode:
authorMarcin Krzeminski <marcin.krzeminski@nokia.com>2016-06-27 15:37:33 +0100
committerPeter Maydell <peter.maydell@linaro.org>2016-06-27 15:37:33 +0100
commite02b3bf263f81abb99164230e98043c60333d6e1 (patch)
treed3673c373a17dcd047e51c6b15aa1c3d020a5e51 /hw/block
parente3ba6cd67fbb9147f9f375f4925a3e882f8060e2 (diff)
downloadqemu-e02b3bf263f81abb99164230e98043c60333d6e1.zip
m25p80: Allow more than four banks.
Allow to have more than four 16MiB regions for bigger flash devices. Signed-off-by: Marcin Krzeminski <marcin.krzeminski@nokia.com> Reviewed-by: Cédric Le Goater <clg@kaod.org> Message-id: 1466755631-25201-4-git-send-email-marcin.krzeminski@nokia.com Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
Diffstat (limited to 'hw/block')
-rw-r--r--hw/block/m25p80.c5
1 files changed, 2 insertions, 3 deletions
diff --git a/hw/block/m25p80.c b/hw/block/m25p80.c
index 752c43e474..187899c402 100644
--- a/hw/block/m25p80.c
+++ b/hw/block/m25p80.c
@@ -129,7 +129,6 @@ typedef struct FlashPartInfo {
#define EVCFG_QUAD_IO_ENABLED (1 << 7)
#define NVCFG_4BYTE_ADDR_MASK (1 << 0)
#define NVCFG_LOWER_SEGMENT_MASK (1 << 1)
-#define CFG_UPPER_128MB_SEG_ENABLED 0x3
/* Numonyx (Micron) Flag Status Register macros */
#define FSR_4BYTE_ADDR_MODE_ENABLED 0x1
@@ -545,7 +544,7 @@ static void complete_collecting_data(Flash *s)
}
if (get_addr_length(s) == 3) {
- s->cur_addr += (s->ear & 0x3) * MAX_3BYTES_SIZE;
+ s->cur_addr += s->ear * MAX_3BYTES_SIZE;
}
s->state = STATE_IDLE;
@@ -644,7 +643,7 @@ static void reset_memory(Flash *s)
s->four_bytes_address_mode = true;
}
if (!(s->nonvolatile_cfg & NVCFG_LOWER_SEGMENT_MASK)) {
- s->ear = CFG_UPPER_128MB_SEG_ENABLED;
+ s->ear = s->size / MAX_3BYTES_SIZE - 1;
}
break;
default: