mirror of
https://review.coreboot.org/flashrom.git
synced 2025-07-02 22:43:17 +02:00
flashchips: Add Spansion S25FS512S
Tested probe, read, erase, write on FS512SAIF01 chips using Linux SPI and DediProg SF100 programmers. This change affects S25FL512S identification as well, so that both chips can be unambiguously detected by probing. Datasheets used: * Infineon-S25FS512S_512_Mb_1-DataSheet-v16_00-EN.pdf at https://www.infineon.com/dgdl/?fileId=8ac78c8c7d0d8da4017d0ed681a356fe * Infineon-S25FL512S_512_Mb_64_MB_FL-S_Flash_SPI_Multi-I_O_3-DataSheet-v21_00-EN.pdf at https://www.infineon.com/dgdl/?fileId=8ac78c8c7d0d8da4017d0ed046ae4b53 Change-Id: I40b6c081ec7d57eac4f6d2b69cea3878bc92bb47 Signed-off-by: Anton Samsonov <devel@zxlab.ru> Reviewed-on: https://review.coreboot.org/c/flashrom/+/85585 Tested-by: build bot (Jenkins) <no-reply@coreboot.org> Reviewed-by: Anastasia Klimchuk <aklm@chromium.org>
This commit is contained in:

committed by
Anastasia Klimchuk

parent
2e6b0510cf
commit
52a495b443
@ -935,14 +935,14 @@
|
||||
.name = "S25FL512S",
|
||||
.bustype = BUS_SPI,
|
||||
.manufacture_id = SPANSION_ID,
|
||||
.model_id = SPANSION_S25FL512,
|
||||
.model_id = SPANSION_S25FL512S_UL,
|
||||
.total_size = 65536, /* 512 Mb (=> 64 MB)) */
|
||||
.page_size = 256,
|
||||
/* OTP: 1024B total, 32B reserved; read 0x4B; write 0x42 */
|
||||
.feature_bits = FEATURE_WRSR_WREN | FEATURE_OTP |
|
||||
FEATURE_4BA_NATIVE | FEATURE_4BA_ENTER_EAR7 | FEATURE_4BA_EAR_1716,
|
||||
.tested = TEST_UNTESTED,
|
||||
.probe = PROBE_SPI_RDID,
|
||||
.probe = PROBE_SPI_BIG_SPANSION,
|
||||
.probe_timing = TIMING_ZERO,
|
||||
.block_erasers =
|
||||
{
|
||||
@ -1028,3 +1028,49 @@
|
||||
.read = SPI_CHIP_READ,
|
||||
.voltage = {1700, 2000},
|
||||
},
|
||||
|
||||
{
|
||||
.vendor = "Spansion",
|
||||
.name = "S25FS512S",
|
||||
.bustype = BUS_SPI,
|
||||
.manufacture_id = SPANSION_ID,
|
||||
.model_id = SPANSION_S25FS512S_UL,
|
||||
.total_size = 65536,
|
||||
.page_size = 256, /* 256 or 512 bytes page programming buffer */
|
||||
/* OTP: 1024B total, 32B reserved; read 0x4B; write 0x42 */
|
||||
.feature_bits = FEATURE_WRSR_WREN | FEATURE_OTP | FEATURE_QPI |
|
||||
FEATURE_4BA_NATIVE | FEATURE_4BA_ENTER,
|
||||
/* Note on FEATURE_4BA_ENTER: the command set only defines command 0xB7
|
||||
to enter 4BA mode, but there is no counterpart command "Exit 4BA mode",
|
||||
and the code 0xE9 is assigned to another command ("Password unlock"). */
|
||||
/* Note on FEATURE_4BA_ENTER_EAR7 (not set): the "Extended address mode" bit
|
||||
is stored in configuration register CR2V[7], which can only be read / written
|
||||
by generic commands ("Read any register" / "Write any register"), that itself
|
||||
expect a 3- or 4-byte address of register in question, which in turn depends on
|
||||
the same register, that is initially set from non-volatile register CR2NV[7]
|
||||
that defaults to 0, but can be programmed to 1 for starting in 32-bit mode. */
|
||||
.tested = TEST_OK_PREW,
|
||||
.probe = PROBE_SPI_BIG_SPANSION,
|
||||
.probe_timing = TIMING_ZERO,
|
||||
.block_erasers =
|
||||
{
|
||||
{
|
||||
.eraseblocks = { { 256 * 1024, 256} },
|
||||
.block_erase = SPI_BLOCK_ERASE_DC,
|
||||
}, {
|
||||
.eraseblocks = { { 256 * 1024, 256} },
|
||||
.block_erase = SPI_BLOCK_ERASE_D8,
|
||||
}, {
|
||||
.eraseblocks = { { 65536 * 1024, 1} },
|
||||
.block_erase = SPI_BLOCK_ERASE_60,
|
||||
}, {
|
||||
.eraseblocks = { { 65536 * 1024, 1} },
|
||||
.block_erase = SPI_BLOCK_ERASE_C7,
|
||||
}
|
||||
},
|
||||
.printlock = SPI_PRETTYPRINT_STATUS_REGISTER_BP2_EP_SRWD, /* TODO: SR2 and many others */
|
||||
.unlock = SPI_DISABLE_BLOCKPROTECT_BP2_SRWD, /* TODO: various other locks */
|
||||
.write = SPI_CHIP_WRITE256,
|
||||
.read = SPI_CHIP_READ,
|
||||
.voltage = {1700, 2000},
|
||||
},
|
||||
|
Reference in New Issue
Block a user