[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Qemu-devel] [PULL 13/17] block: m25p80: at25128a/at25256a models
From: |
Peter Maydell |
Subject: |
[Qemu-devel] [PULL 13/17] block: m25p80: at25128a/at25256a models |
Date: |
Wed, 30 Mar 2016 15:57:45 +0100 |
From: Marcin Krzeminski <address@hidden>
Signed-off-by: Marcin Krzeminski <address@hidden>
Reviewed-by: Peter Crosthwaite <address@hidden>
Message-id: address@hidden
Signed-off-by: Peter Maydell <address@hidden>
---
hw/block/m25p80.c | 15 +++++++++++++--
1 file changed, 13 insertions(+), 2 deletions(-)
diff --git a/hw/block/m25p80.c b/hw/block/m25p80.c
index bdd87fa..906b712 100644
--- a/hw/block/m25p80.c
+++ b/hw/block/m25p80.c
@@ -47,7 +47,7 @@
/* set to allow the page program command to write 0s back to 1. Useful for
* modelling EEPROM with SPI flash command set
*/
-#define WR_1 0x100
+#define EEPROM 0x100
/* 16 MiB max in 3 byte address mode */
#define MAX_3BYTES_SIZE 0x1000000
@@ -123,6 +123,12 @@ static const FlashPartInfo known_devices[] = {
{ INFO("at45db081d", 0x1f2500, 0, 64 << 10, 16, ER_4K) },
+ /* Atmel EEPROMS - it is assumed, that don't care bit in command
+ * is set to 0. Block protection is not supported.
+ */
+ { INFO("at25128a-nonjedec", 0x0, 0, 1, 131072, EEPROM) },
+ { INFO("at25256a-nonjedec", 0x0, 0, 1, 262144, EEPROM) },
+
/* EON -- en25xxx */
{ INFO("en25f32", 0x1c3116, 0, 64 << 10, 64, ER_4K) },
{ INFO("en25p32", 0x1c2016, 0, 64 << 10, 64, 0) },
@@ -450,7 +456,7 @@ void flash_write8(Flash *s, uint64_t addr, uint8_t data)
" -> %" PRIx8 "\n", addr, prev, data);
}
- if (s->pi->flags & WR_1) {
+ if (s->pi->flags & EEPROM) {
s->storage[s->cur_addr] = data;
} else {
s->storage[s->cur_addr] &= data;
@@ -462,6 +468,11 @@ void flash_write8(Flash *s, uint64_t addr, uint8_t data)
static inline int get_addr_length(Flash *s)
{
+ /* check if eeprom is in use */
+ if (s->pi->flags == EEPROM) {
+ return 2;
+ }
+
switch (s->cmd_in_progress) {
case PP4:
case READ4:
--
1.9.1
- [Qemu-devel] [PULL 00/17] target-arm queue, Peter Maydell, 2016/03/30
- [Qemu-devel] [PULL 17/17] arm: implement query-gic-capabilities, Peter Maydell, 2016/03/30
- [Qemu-devel] [PULL 12/17] block: m25p80: n25q256a/n25q512a models, Peter Maydell, 2016/03/30
- [Qemu-devel] [PULL 11/17] block: m25p80: Implemented FSR register, Peter Maydell, 2016/03/30
- [Qemu-devel] [PULL 14/17] arm: qmp: add query-gic-capabilities interface, Peter Maydell, 2016/03/30
- [Qemu-devel] [PULL 13/17] block: m25p80: at25128a/at25256a models,
Peter Maydell <=
- [Qemu-devel] [PULL 04/17] block: m25p80: RESET_ENABLE and RESET_MEMORY commands, Peter Maydell, 2016/03/30
- [Qemu-devel] [PULL 09/17] block: m25p80: Dummy cycles for N25Q256/512, Peter Maydell, 2016/03/30
- [Qemu-devel] [PULL 06/17] block: m25p80: Extend address mode, Peter Maydell, 2016/03/30
- [Qemu-devel] [PULL 08/17] block: m25p80: Add configuration registers, Peter Maydell, 2016/03/30
- [Qemu-devel] [PULL 07/17] block: m25p80: 4byte address mode, Peter Maydell, 2016/03/30
- [Qemu-devel] [PULL 05/17] block: m25p80: Widen flags variable, Peter Maydell, 2016/03/30
- [Qemu-devel] [PULL 16/17] kvm: add kvm_device_supported() helper function, Peter Maydell, 2016/03/30
- [Qemu-devel] [PULL 10/17] block: m25p80: Fast read and 4bytes commands, Peter Maydell, 2016/03/30
- [Qemu-devel] [PULL 15/17] arm: enhance kvm_arm_create_scratch_host_vcpu, Peter Maydell, 2016/03/30
- [Qemu-devel] [PULL 01/17] hw/gpio: Add the emulation of gpio_key, Peter Maydell, 2016/03/30