mirror of
https://review.coreboot.org/flashrom.git
synced 2025-07-02 14:33:18 +02:00
Add support for Spansion S25FL127S
This flash chip can be configured (one time) to use 64 KiB or 256 KiB sectors. Additionally, in the 64 KiB mode it supports 16 4 KiB sub-sectors that can be (one time) programmed to be on the top or bottom of the device. The sub-sectors can be erased with the 0x20 opcode but because this opcode does not work with the remaining sectors and flashrom can not cope with that the 0x20 opcode is not supported yet. This patch adds two definitions, one for the 64 KiB and 256 KiB configuration respectively. The device also shares the RDID with the various S25FL128 devices so we have to increase the maximum number of successfully probed chips to 8. The 64 KiB mode was tested on real hardware. Corresponding to flashrom svn r1858. Signed-off-by: Jernej Škrabec <jernej.skrabec@planet.si> Signed-off-by: Stefan Tauner <stefan.tauner@alumni.tuwien.ac.at> Acked-by: Stefan Tauner <stefan.tauner@alumni.tuwien.ac.at>
This commit is contained in:

committed by
Stefan Tauner

parent
b5f9d5c402
commit
e814a9b6e8
77
flashchips.c
77
flashchips.c
@ -10462,6 +10462,83 @@ const struct flashchip flashchips[] = {
|
||||
.voltage = {2700, 3600},
|
||||
},
|
||||
|
||||
{
|
||||
.vendor = "Spansion",
|
||||
.name = "S25FL127S-64kB", /* hybrid: 32 (top or bottom) 4 kB sub-sectors + 64 kB sectors */
|
||||
.bustype = BUS_SPI,
|
||||
.manufacture_id = SPANSION_ID,
|
||||
.model_id = SPANSION_S25FL128,
|
||||
.total_size = 16384,
|
||||
.page_size = 256,
|
||||
/* supports 4B addressing */
|
||||
/* OTP: 1024B total, 32B reserved; read 0x4B; write 0x42 */
|
||||
.feature_bits = FEATURE_WRSR_WREN | FEATURE_OTP,
|
||||
.tested = TEST_OK_PREW,
|
||||
/* FIXME: we should distinguish the configuration on probing time like we do for AT45DB chips */
|
||||
.probe = probe_spi_rdid,
|
||||
.probe_timing = TIMING_ZERO,
|
||||
.block_erasers = {
|
||||
{
|
||||
/* This chip supports erasing of 32 so-called "parameter sectors" with
|
||||
* opcode 0x20 which may be configured to be on top or bottom of the address
|
||||
* space. Trying to access an address outside these 4kB blocks does have no
|
||||
* effect on the memory contents, e.g.
|
||||
.eraseblocks = {
|
||||
{4 * 1024, 32},
|
||||
{64 * 1024, 254} // inaccessible
|
||||
},
|
||||
.block_erase = spi_block_erase_20,
|
||||
}, { */
|
||||
.eraseblocks = { { 64 * 1024, 256} },
|
||||
.block_erase = spi_block_erase_d8,
|
||||
}, {
|
||||
.eraseblocks = { { 16384 * 1024, 1} },
|
||||
.block_erase = spi_block_erase_60,
|
||||
}, {
|
||||
.eraseblocks = { { 16384 * 1024, 1} },
|
||||
.block_erase = spi_block_erase_c7,
|
||||
}
|
||||
},
|
||||
.printlock = spi_prettyprint_status_register_bp2_srwd,
|
||||
.unlock = spi_disable_blockprotect_bp2_srwd, /* #WP pin write-protects SRWP bit. */
|
||||
.write = spi_chip_write_256, /* Multi I/O supported */
|
||||
.read = spi_chip_read, /* Fast read (0x0B) and multi I/O supported */
|
||||
.voltage = {2700, 3600},
|
||||
},
|
||||
|
||||
{
|
||||
.vendor = "Spansion",
|
||||
.name = "S25FL127S-256kB", /* uniform 256kB sectors */
|
||||
.bustype = BUS_SPI,
|
||||
.manufacture_id = SPANSION_ID,
|
||||
.model_id = SPANSION_S25FL128,
|
||||
.total_size = 16384,
|
||||
.page_size = 512,
|
||||
/* supports 4B addressing */
|
||||
/* OTP: 1024B total, 32B reserved; read 0x4B; write 0x42 */
|
||||
.feature_bits = FEATURE_WRSR_WREN | FEATURE_OTP,
|
||||
.tested = TEST_UNTESTED,
|
||||
.probe = probe_spi_rdid,
|
||||
.probe_timing = TIMING_ZERO,
|
||||
.block_erasers = {
|
||||
{
|
||||
.eraseblocks = { {256 * 1024, 64} },
|
||||
.block_erase = spi_block_erase_d8,
|
||||
}, {
|
||||
.eraseblocks = { { 16384 * 1024, 1} },
|
||||
.block_erase = spi_block_erase_60,
|
||||
}, {
|
||||
.eraseblocks = { { 16384 * 1024, 1} },
|
||||
.block_erase = spi_block_erase_c7,
|
||||
}
|
||||
},
|
||||
.printlock = spi_prettyprint_status_register_bp2_srwd,
|
||||
.unlock = spi_disable_blockprotect_bp2_srwd, /* #WP pin write-protects SRWP bit. */
|
||||
.write = spi_chip_write_256, /* Multi I/O supported */
|
||||
.read = spi_chip_read, /* Fast read (0x0B) and multi I/O supported */
|
||||
.voltage = {2700, 3600},
|
||||
},
|
||||
|
||||
{
|
||||
.vendor = "Spansion",
|
||||
.name = "S25FL128P......0", /* uniform 64 kB sectors */
|
||||
|
Reference in New Issue
Block a user