aboutsummaryrefslogtreecommitdiff
path: root/hw/pflash_cfi01.c
diff options
context:
space:
mode:
authorbalrog <balrog@c046a42c-6fe2-441c-8c8c-71466251a162>2008-10-11 09:19:57 +0000
committerbalrog <balrog@c046a42c-6fe2-441c-8c8c-71466251a162>2008-10-11 09:19:57 +0000
commit71fb2348663e291c99284844b35d5991ded389a1 (patch)
tree67ea2404a5ea9e3a9b37f02dbce88c90168b944c /hw/pflash_cfi01.c
parent998a050186aaab43ae0027f7aceba158ed03766b (diff)
Increase write buffer size in pflash emulation (Thomas Petazzoni).
The current flash emulation code advertises a write buffer size of 16 bytes (1 << 4, according to offset 0x2A of the CFI table). This is very small compared to normal write buffer sizes, and makes the process of writing to the flash very slow (at least from U-Boot). This patch increases this size to 2048 bytes. Except the modification of the CFI table, the only other required modification is to use "value" instead of "cmd" to set pfl->counter, because cmd is truncated to the 8 lower bits of value, while the number of bytes for a write can now be greater than 255 bytes. Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com> git-svn-id: svn://svn.savannah.nongnu.org/qemu/trunk@5454 c046a42c-6fe2-441c-8c8c-71466251a162
Diffstat (limited to 'hw/pflash_cfi01.c')
-rw-r--r--hw/pflash_cfi01.c6
1 files changed, 3 insertions, 3 deletions
diff --git a/hw/pflash_cfi01.c b/hw/pflash_cfi01.c
index 356237c90b..57892c251e 100644
--- a/hw/pflash_cfi01.c
+++ b/hw/pflash_cfi01.c
@@ -276,8 +276,8 @@ static void pflash_write (pflash_t *pfl, target_ulong offset, uint32_t value,
break;
case 0xe8:
- DPRINTF("%s: block write of %x bytes\n", __func__, cmd);
- pfl->counter = cmd;
+ DPRINTF("%s: block write of %x bytes\n", __func__, value);
+ pfl->counter = value;
pfl->wcycle++;
break;
case 0x60:
@@ -583,7 +583,7 @@ pflash_t *pflash_cfi01_register(target_phys_addr_t base, ram_addr_t off,
pfl->cfi_table[0x28] = 0x02;
pfl->cfi_table[0x29] = 0x00;
/* Max number of bytes in multi-bytes write */
- pfl->cfi_table[0x2A] = 0x04;
+ pfl->cfi_table[0x2A] = 0x0B;
pfl->cfi_table[0x2B] = 0x00;
/* Number of erase block regions (uniform) */
pfl->cfi_table[0x2C] = 0x01;