mirror of
https://review.coreboot.org/flashrom.git
synced 2025-04-26 06:32:34 +02:00
Add support for Nantronics N25 series
Add... - N25S10 - N25S20 - N25S40 - N25S80 - N25S16 Corresponding to flashrom svn r1683. Signed-off-by: Stefan Tauner <stefan.tauner@alumni.tuwien.ac.at> Acked-by: Carl-Daniel Hailfinger <c-d.hailfinger.devel.2006@gmx.net>
This commit is contained in:
parent
579f1e0b67
commit
b6b00e99aa
196
flashchips.c
196
flashchips.c
@ -6233,6 +6233,202 @@ const struct flashchip flashchips[] = {
|
||||
.voltage = {4500, 5500},
|
||||
},
|
||||
|
||||
{
|
||||
.vendor = "Nantronics",
|
||||
.name = "N25S10",
|
||||
.bustype = BUS_SPI,
|
||||
.manufacture_id = NANTRONICS_ID_NOPREFIX,
|
||||
.model_id = NANTRONICS_N25S10,
|
||||
.total_size = 128,
|
||||
.page_size = 256,
|
||||
.feature_bits = FEATURE_WRSR_WREN,
|
||||
.tested = TEST_UNTESTED,
|
||||
.probe = probe_spi_rdid,
|
||||
.probe_timing = TIMING_ZERO,
|
||||
.block_erasers =
|
||||
{
|
||||
{
|
||||
.eraseblocks = { {4 * 1024, 32} },
|
||||
.block_erase = spi_block_erase_20,
|
||||
}, {
|
||||
.eraseblocks = { {4 * 1024, 32} },
|
||||
.block_erase = spi_block_erase_d7,
|
||||
}, {
|
||||
.eraseblocks = { {32 * 1024, 4} },
|
||||
.block_erase = spi_block_erase_52,
|
||||
}, {
|
||||
.eraseblocks = { {64 * 1024, 2} },
|
||||
.block_erase = spi_block_erase_d8,
|
||||
}, {
|
||||
.eraseblocks = { {128 * 1024, 1} },
|
||||
.block_erase = spi_block_erase_60,
|
||||
}, {
|
||||
.eraseblocks = { {128 * 1024, 1} },
|
||||
.block_erase = spi_block_erase_c7,
|
||||
}
|
||||
},
|
||||
.printlock = spi_prettyprint_status_register_default_bp3,
|
||||
.unlock = spi_disable_blockprotect_bp3_srwd,
|
||||
.write = spi_chip_write_256,
|
||||
.read = spi_chip_read, /* Fast read (0x0B), dual I/O read (0x3B) supported */
|
||||
.voltage = {2700, 3600},
|
||||
},
|
||||
|
||||
{
|
||||
.vendor = "Nantronics",
|
||||
.name = "N25S20",
|
||||
.bustype = BUS_SPI,
|
||||
.manufacture_id = NANTRONICS_ID_NOPREFIX,
|
||||
.model_id = NANTRONICS_N25S20,
|
||||
.total_size = 256,
|
||||
.page_size = 256,
|
||||
.feature_bits = FEATURE_WRSR_WREN,
|
||||
.tested = TEST_UNTESTED,
|
||||
.probe = probe_spi_rdid,
|
||||
.probe_timing = TIMING_ZERO,
|
||||
.block_erasers =
|
||||
{
|
||||
{
|
||||
.eraseblocks = { {4 * 1024, 64} },
|
||||
.block_erase = spi_block_erase_20,
|
||||
}, {
|
||||
.eraseblocks = { {4 * 1024, 64} },
|
||||
.block_erase = spi_block_erase_d7,
|
||||
}, {
|
||||
.eraseblocks = { {32 * 1024, 8} },
|
||||
.block_erase = spi_block_erase_52,
|
||||
}, {
|
||||
.eraseblocks = { {64 * 1024, 4} },
|
||||
.block_erase = spi_block_erase_d8,
|
||||
}, {
|
||||
.eraseblocks = { {256 * 1024, 1} },
|
||||
.block_erase = spi_block_erase_60,
|
||||
}, {
|
||||
.eraseblocks = { {256 * 1024, 1} },
|
||||
.block_erase = spi_block_erase_c7,
|
||||
}
|
||||
},
|
||||
.printlock = spi_prettyprint_status_register_default_bp3,
|
||||
.unlock = spi_disable_blockprotect_bp3_srwd,
|
||||
.write = spi_chip_write_256,
|
||||
.read = spi_chip_read, /* Fast read (0x0B), dual I/O read (0x3B) supported */
|
||||
.voltage = {2700, 3600},
|
||||
},
|
||||
|
||||
{
|
||||
.vendor = "Nantronics",
|
||||
.name = "N25S40",
|
||||
.bustype = BUS_SPI,
|
||||
.manufacture_id = NANTRONICS_ID_NOPREFIX,
|
||||
.model_id = NANTRONICS_N25S40,
|
||||
.total_size = 512,
|
||||
.page_size = 256,
|
||||
.feature_bits = FEATURE_WRSR_WREN,
|
||||
.tested = TEST_UNTESTED,
|
||||
.probe = probe_spi_rdid,
|
||||
.probe_timing = TIMING_ZERO,
|
||||
.block_erasers =
|
||||
{
|
||||
{
|
||||
.eraseblocks = { {4 * 1024, 128} },
|
||||
.block_erase = spi_block_erase_20,
|
||||
}, {
|
||||
.eraseblocks = { {4 * 1024, 128} },
|
||||
.block_erase = spi_block_erase_d7,
|
||||
}, {
|
||||
.eraseblocks = { {32 * 1024, 16} },
|
||||
.block_erase = spi_block_erase_52,
|
||||
}, {
|
||||
.eraseblocks = { {64 * 1024, 8} },
|
||||
.block_erase = spi_block_erase_d8,
|
||||
}, {
|
||||
.eraseblocks = { {512 * 1024, 1} },
|
||||
.block_erase = spi_block_erase_60,
|
||||
}, {
|
||||
.eraseblocks = { {512 * 1024, 1} },
|
||||
.block_erase = spi_block_erase_c7,
|
||||
}
|
||||
},
|
||||
.printlock = spi_prettyprint_status_register_default_bp3,
|
||||
.unlock = spi_disable_blockprotect_bp3_srwd,
|
||||
.write = spi_chip_write_256,
|
||||
.read = spi_chip_read, /* Fast read (0x0B), dual I/O read (0x3B) supported */
|
||||
.voltage = {2700, 3600},
|
||||
},
|
||||
|
||||
{
|
||||
.vendor = "Nantronics",
|
||||
.name = "N25S80",
|
||||
.bustype = BUS_SPI,
|
||||
.manufacture_id = NANTRONICS_ID_NOPREFIX,
|
||||
.model_id = NANTRONICS_N25S80,
|
||||
.total_size = 1024,
|
||||
.page_size = 256,
|
||||
.feature_bits = FEATURE_WRSR_WREN,
|
||||
.tested = TEST_UNTESTED,
|
||||
.probe = probe_spi_rdid,
|
||||
.probe_timing = TIMING_ZERO,
|
||||
.block_erasers =
|
||||
{
|
||||
{
|
||||
.eraseblocks = { {4 * 1024, 256} },
|
||||
.block_erase = spi_block_erase_20,
|
||||
}, {
|
||||
.eraseblocks = { {32 * 1024, 32} },
|
||||
.block_erase = spi_block_erase_52,
|
||||
}, {
|
||||
.eraseblocks = { {64 * 1024, 16} },
|
||||
.block_erase = spi_block_erase_d8,
|
||||
}, {
|
||||
.eraseblocks = { {1024 * 1024, 1} },
|
||||
.block_erase = spi_block_erase_60,
|
||||
}, {
|
||||
.eraseblocks = { {1024 * 1024, 1} },
|
||||
.block_erase = spi_block_erase_c7,
|
||||
}
|
||||
},
|
||||
.printlock = spi_prettyprint_status_register_default_bp3,
|
||||
.unlock = spi_disable_blockprotect_bp3_srwd,
|
||||
.write = spi_chip_write_256,
|
||||
.read = spi_chip_read, /* Fast read (0x0B), dual I/O read (0x3B) supported */
|
||||
.voltage = {2700, 3600},
|
||||
},
|
||||
|
||||
{
|
||||
.vendor = "Nantronics",
|
||||
.name = "N25S16",
|
||||
.bustype = BUS_SPI,
|
||||
.manufacture_id = NANTRONICS_ID_NOPREFIX,
|
||||
.model_id = NANTRONICS_N25S16,
|
||||
.total_size = 2048,
|
||||
.page_size = 256,
|
||||
.feature_bits = FEATURE_WRSR_WREN,
|
||||
.tested = TEST_UNTESTED,
|
||||
.probe = probe_spi_rdid,
|
||||
.probe_timing = TIMING_ZERO,
|
||||
.block_erasers =
|
||||
{
|
||||
{
|
||||
.eraseblocks = { {4 * 1024, 512} },
|
||||
.block_erase = spi_block_erase_20,
|
||||
}, {
|
||||
.eraseblocks = { {64 * 1024, 32} },
|
||||
.block_erase = spi_block_erase_d8,
|
||||
}, {
|
||||
.eraseblocks = { {2048 * 1024, 1} },
|
||||
.block_erase = spi_block_erase_60,
|
||||
}, {
|
||||
.eraseblocks = { {2048 * 1024, 1} },
|
||||
.block_erase = spi_block_erase_c7,
|
||||
}
|
||||
},
|
||||
.printlock = spi_prettyprint_status_register_default_bp3,
|
||||
.unlock = spi_disable_blockprotect_bp3_srwd,
|
||||
.write = spi_chip_write_256,
|
||||
.read = spi_chip_read, /* Fast read (0x0B), dual I/O read (0x3B) supported */
|
||||
.voltage = {2700, 3600},
|
||||
},
|
||||
|
||||
{
|
||||
.vendor = "Numonyx",
|
||||
.name = "M25PE10",
|
||||
|
10
flashchips.h
10
flashchips.h
@ -449,6 +449,16 @@
|
||||
#define MACRONIX_MX29SL800CB 0x6B /* Same as MX29SL802CB */
|
||||
#define MACRONIX_MX29SL800CT 0xEA /* Same as MX29SL802CT */
|
||||
|
||||
/* Nantronics Semiconductors is listed in JEP106AJ in bank 7, so it should have 6 continuation codes in front
|
||||
* of the manufacturer ID of 0xD5. http://www.nantronicssemi.com */
|
||||
#define NANTRONICS_ID 0x7F7F7F7F7F7FD5 /* Nantronics */
|
||||
#define NANTRONICS_ID_NOPREFIX 0xD5 /* Nantronics, missing prefix */
|
||||
#define NANTRONICS_N25S10 0x3011
|
||||
#define NANTRONICS_N25S20 0x3012
|
||||
#define NANTRONICS_N25S40 0x3013
|
||||
#define NANTRONICS_N25S80 0x3014
|
||||
#define NANTRONICS_N25S16 0x3015
|
||||
|
||||
/*
|
||||
* Programmable Micro Corp is listed in JEP106W in bank 2, so it should
|
||||
* have a 0x7F continuation code prefix.
|
||||
|
@ -223,10 +223,10 @@ static void spi_prettyprint_status_register_hex(uint8_t status)
|
||||
msg_cdbg("Chip status register is 0x%02x.\n", status);
|
||||
}
|
||||
|
||||
/* Common highest bit: Status Register Write Disable (SRWD). */
|
||||
/* Common highest bit: Status Register Write Disable (SRWD) or Status Register Protect (SRP). */
|
||||
static void spi_prettyprint_status_register_srwd(uint8_t status)
|
||||
{
|
||||
msg_cdbg("Chip status register: Status Register Write Disable (SRWD) is %sset\n",
|
||||
msg_cdbg("Chip status register: Status Register Write Disable (SRWD, SRP, ...) is %sset\n",
|
||||
(status & (1 << 7)) ? "" : "not ");
|
||||
}
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user