diff options
author | Francis Rowe <info@gluglug.org.uk> | 2014-12-29 21:13:49 (EST) |
---|---|---|
committer | Francis Rowe <info@gluglug.org.uk> | 2014-12-29 21:30:36 (EST) |
commit | 3e60ad76e2cef38bc59f6055c677ea2d890e10fe (patch) | |
tree | 782a8a0bb988aae3db5847aae9d56e832e480056 | |
parent | 05d821cecb953efd2cbc2d7cb21278a33a59000b (diff) | |
download | libreboot-3e60ad76e2cef38bc59f6055c677ea2d890e10fe.zip libreboot-3e60ad76e2cef38bc59f6055c677ea2d890e10fe.tar.gz libreboot-3e60ad76e2cef38bc59f6055c677ea2d890e10fe.tar.bz2 |
Removed redundant flashchip definitions in flashrom
For X200 owners with one of the Macronix flash chips. There are
multiple definitions for almost the same chip, and they are
all detected at once. Normally the user has to use the -c argument
in flashrom to select a flash chip. With this modification, they
can run flashrom without the argument.
Deletion of redundant flash chip definitions is now also handled
by getflashrom instead of builddeps-flashrom. builddeps-flashrom
now only patches for i945 lenovo bios sst/macronix.
-rwxr-xr-x | builddeps-flashrom | 21 | ||||
-rw-r--r-- | docs/release.html | 3 | ||||
-rwxr-xr-x | getflashrom | 8 | ||||
-rw-r--r-- | resources/flashrom/patch/flashchips.c.diff.lenovobios_macronix | 148 | ||||
-rw-r--r-- | resources/flashrom/patch/flashchips.c.diff.lenovobios_sst | 142 | ||||
-rw-r--r-- | resources/flashrom/patch/flashchips.c.diff.normal | 83 | ||||
-rw-r--r-- | resources/flashrom/patch/lenovobios_macronix.diff | 26 | ||||
-rw-r--r-- | resources/flashrom/patch/lenovobios_sst.diff | 26 | ||||
-rw-r--r-- | resources/flashrom/patch/purged_chips.diff | 293 |
9 files changed, 371 insertions, 379 deletions
diff --git a/builddeps-flashrom b/builddeps-flashrom index 1765e4b..4ae96bc 100755 --- a/builddeps-flashrom +++ b/builddeps-flashrom @@ -27,13 +27,22 @@ set -u -e -v cd flashrom/ -# build patched binary for libreboot X60/T60 (MX25L1605D chip) -# - this patch removes redundant definitions from flashchips.c -# - this patch removes the need to use the -c parameter in flashrom +# build regular flashrom (redundant flash chip definitions removed) +make clean +if (( $# != 1 )); then + # build it dynamically linked + make +else + # build it statically linked + make SHARED=0 CC='gcc -static' +fi + +mv flashrom flashrom_normal + # build patched binaries for MX25L1605D and SST25VF016B flash chips # - these patches are needed for initial installation on an X60 or T60 # - these patches are for people who have lenovo bios running -for patchname in "normal" "lenovobios_macronix" "lenovobios_sst" +for patchname in "lenovobios_macronix" "lenovobios_sst" do # first remove the existing build make clean @@ -42,7 +51,7 @@ do # backup the unpatched flashchips.c (it will be patched) cp flashchips.c flashchips.c_ # patch flashchips.c - patch flashchips.c < ../resources/flashrom/patch/flashchips.c.diff."$patchname" + patch flashchips.c < ../resources/flashrom/patch/"$patchname".diff if (( $# != 1 )); then # build it dynamically linked @@ -59,7 +68,7 @@ do rm -f flashchips.c mv flashchips.c_ flashchips.c done -# flashrom normal should actually be considered the default + mv flashrom_normal flashrom cd ../ diff --git a/docs/release.html b/docs/release.html index 2d8ce38..0ed0963 100644 --- a/docs/release.html +++ b/docs/release.html @@ -120,8 +120,11 @@ Changes for this release (latest changes first, earliest changes last) </h2> <ul> + <li>Flashrom: removed redundant Macronix flashchip definitions (for X200 owners).</li> <li>Flashrom: added whitelist for ThinkPad X200.</li> <li>X200: fixed uneven backlight (at low levels)</li> + <li>ich9macchange (new script, uses ich9gen): for changing the default MAC address on X200 ROM images.</li> + <li>ich9gen: added capability to change the default MAC address (and update the checksum)</li> <li>ich9deblob: added new utility <b>ich9gen</b>: this can generate a descriptor+gbe image without a factory.rom dump present.</li> <li>Modified ich9deblob to use a struct for Gbe, documenting everything.</li> <li>Massively updated the ich9deblob utility: re-factored everything completely.</li> diff --git a/getflashrom b/getflashrom index 2a20b14..b74ff6e 100755 --- a/getflashrom +++ b/getflashrom @@ -36,9 +36,17 @@ rm -rf flashrom svn co -r 1858 svn://flashrom.org/flashrom/trunk flashrom # apply patches + cd flashrom/ + # Add whitelist for X200: patch board_enable.c < ../resources/flashrom/patch/x200whitelist.diff + +# Remove redundant definitions for the flash chips that +# supported libreboot machines use. This removes the need +# for the user to run with the "-c" argument on these machines +patch flashchips.c < ../resources/flashrom/patch/purged_chips.diff + cd ../ echo "FINISHED DOWNLOADING FLASHROM" diff --git a/resources/flashrom/patch/flashchips.c.diff.lenovobios_macronix b/resources/flashrom/patch/flashchips.c.diff.lenovobios_macronix deleted file mode 100644 index 9cdedcc..0000000 --- a/resources/flashrom/patch/flashchips.c.diff.lenovobios_macronix +++ /dev/null @@ -1,148 +0,0 @@ ---- flashchips.c 2014-12-14 11:05:12.512662091 +0000 -+++ flashchips.c.patch.i945_lenovobios_macronix 2014-12-14 11:16:51.224126814 +0000 -@@ -6602,89 +6602,15 @@ - - { - .vendor = "Macronix", -- .name = "MX25L1605", -- .bustype = BUS_SPI, -- .manufacture_id = MACRONIX_ID, -- .model_id = MACRONIX_MX25L1605, -- .total_size = 2048, -- .page_size = 256, -- .feature_bits = FEATURE_WRSR_WREN, -- .tested = TEST_OK_PREW, -- .probe = probe_spi_rdid, -- .probe_timing = TIMING_ZERO, -- .block_erasers = -- { -- { -- .eraseblocks = { {64 * 1024, 32} }, -- .block_erase = spi_block_erase_20, -- }, { -- .eraseblocks = { {64 * 1024, 32} }, -- .block_erase = spi_block_erase_d8, -- }, { -- .eraseblocks = { {2 * 1024 * 1024, 1} }, -- .block_erase = spi_block_erase_60, -- }, { -- .eraseblocks = { {2 * 1024 * 1024, 1} }, -- .block_erase = spi_block_erase_c7, -- }, -- }, -- .printlock = spi_prettyprint_status_register_bp2_srwd, /* bit6: error flag */ -- .unlock = spi_disable_blockprotect, -- .write = spi_chip_write_256, -- .read = spi_chip_read, /* Fast read (0x0B) supported */ -- .voltage = {2700, 3600}, -- }, -- -- { -- .vendor = "Macronix", -- .name = "MX25L1605A/MX25L1606E", -- .bustype = BUS_SPI, -- .manufacture_id = MACRONIX_ID, -- .model_id = MACRONIX_MX25L1605, -- .total_size = 2048, -- .page_size = 256, -- /* OTP: 64B total; enter 0xB1, exit 0xC1 (MX25L1606E only) */ -- .feature_bits = FEATURE_WRSR_WREN | FEATURE_OTP, -- .tested = TEST_OK_PREW, -- .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_52, -- }, { -- .eraseblocks = { {64 * 1024, 32} }, -- .block_erase = spi_block_erase_d8, -- }, { -- .eraseblocks = { {2 * 1024 * 1024, 1} }, -- .block_erase = spi_block_erase_60, -- }, { -- .eraseblocks = { {2 * 1024 * 1024, 1} }, -- .block_erase = spi_block_erase_c7, -- }, -- }, -- .printlock = spi_prettyprint_status_register_bp3_srwd, /* MX25L1605A bp2 only */ -- .unlock = spi_disable_blockprotect, -- .write = spi_chip_write_256, -- .read = spi_chip_read, /* Fast read (0x0B) supported */ -- .voltage = {2700, 3600}, -- }, -- -- { -- .vendor = "Macronix", - .name = "MX25L1605D/MX25L1608D/MX25L1673E", - .bustype = BUS_SPI, - .manufacture_id = MACRONIX_ID, -- .model_id = MACRONIX_MX25L1605, -+ .model_id = 0x14, - .total_size = 2048, - .page_size = 256, - .feature_bits = FEATURE_WRSR_WREN, - .tested = TEST_OK_PREW, -- .probe = probe_spi_rdid, -+ .probe = probe_spi_res1, - .probe_timing = TIMING_ZERO, - .block_erasers = - { -@@ -6704,7 +6630,7 @@ - }, - .printlock = spi_prettyprint_status_register_bp3_srwd, /* bit6: Continuously Program (CP) mode */ - .unlock = spi_disable_blockprotect, -- .write = spi_chip_write_256, -+ .write = spi_chip_write_1, - .read = spi_chip_read, /* Fast read (0x0B), dual I/O supported */ - .voltage = {2700, 3600}, - }, -@@ -11141,44 +11067,6 @@ - .unlock = spi_disable_blockprotect, - .write = spi_aai_write, - .read = spi_chip_read, -- .voltage = {2700, 3600}, -- }, -- -- { -- .vendor = "SST", -- .name = "SST25VF016B", -- .bustype = BUS_SPI, -- .manufacture_id = SST_ID, -- .model_id = SST_SST25VF016B, -- .total_size = 2048, -- .page_size = 256, -- .feature_bits = FEATURE_WRSR_EITHER, -- .tested = TEST_OK_PREW, -- .probe = probe_spi_rdid, -- .probe_timing = TIMING_ZERO, -- .block_erasers = -- { -- { -- .eraseblocks = { {4 * 1024, 512} }, -- .block_erase = spi_block_erase_20, -- }, { -- .eraseblocks = { {32 * 1024, 64} }, -- .block_erase = spi_block_erase_52, -- }, { -- .eraseblocks = { {64 * 1024, 32} }, -- .block_erase = spi_block_erase_d8, -- }, { -- .eraseblocks = { {2 * 1024 * 1024, 1} }, -- .block_erase = spi_block_erase_60, -- }, { -- .eraseblocks = { {2 * 1024 * 1024, 1} }, -- .block_erase = spi_block_erase_c7, -- }, -- }, -- .printlock = spi_prettyprint_status_register_sst25vf016, -- .unlock = spi_disable_blockprotect, -- .write = spi_aai_write, -- .read = spi_chip_read, - .voltage = {2700, 3600}, - }, - diff --git a/resources/flashrom/patch/flashchips.c.diff.lenovobios_sst b/resources/flashrom/patch/flashchips.c.diff.lenovobios_sst deleted file mode 100644 index aa6c97d..0000000 --- a/resources/flashrom/patch/flashchips.c.diff.lenovobios_sst +++ /dev/null @@ -1,142 +0,0 @@ ---- flashchips.c 2014-12-14 11:05:12.512662091 +0000 -+++ flashchips.c.patch.i945_lenovobios_sst 2014-12-14 11:11:27.790522994 +0000 -@@ -6602,115 +6602,6 @@ - - { - .vendor = "Macronix", -- .name = "MX25L1605", -- .bustype = BUS_SPI, -- .manufacture_id = MACRONIX_ID, -- .model_id = MACRONIX_MX25L1605, -- .total_size = 2048, -- .page_size = 256, -- .feature_bits = FEATURE_WRSR_WREN, -- .tested = TEST_OK_PREW, -- .probe = probe_spi_rdid, -- .probe_timing = TIMING_ZERO, -- .block_erasers = -- { -- { -- .eraseblocks = { {64 * 1024, 32} }, -- .block_erase = spi_block_erase_20, -- }, { -- .eraseblocks = { {64 * 1024, 32} }, -- .block_erase = spi_block_erase_d8, -- }, { -- .eraseblocks = { {2 * 1024 * 1024, 1} }, -- .block_erase = spi_block_erase_60, -- }, { -- .eraseblocks = { {2 * 1024 * 1024, 1} }, -- .block_erase = spi_block_erase_c7, -- }, -- }, -- .printlock = spi_prettyprint_status_register_bp2_srwd, /* bit6: error flag */ -- .unlock = spi_disable_blockprotect, -- .write = spi_chip_write_256, -- .read = spi_chip_read, /* Fast read (0x0B) supported */ -- .voltage = {2700, 3600}, -- }, -- -- { -- .vendor = "Macronix", -- .name = "MX25L1605A/MX25L1606E", -- .bustype = BUS_SPI, -- .manufacture_id = MACRONIX_ID, -- .model_id = MACRONIX_MX25L1605, -- .total_size = 2048, -- .page_size = 256, -- /* OTP: 64B total; enter 0xB1, exit 0xC1 (MX25L1606E only) */ -- .feature_bits = FEATURE_WRSR_WREN | FEATURE_OTP, -- .tested = TEST_OK_PREW, -- .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_52, -- }, { -- .eraseblocks = { {64 * 1024, 32} }, -- .block_erase = spi_block_erase_d8, -- }, { -- .eraseblocks = { {2 * 1024 * 1024, 1} }, -- .block_erase = spi_block_erase_60, -- }, { -- .eraseblocks = { {2 * 1024 * 1024, 1} }, -- .block_erase = spi_block_erase_c7, -- }, -- }, -- .printlock = spi_prettyprint_status_register_bp3_srwd, /* MX25L1605A bp2 only */ -- .unlock = spi_disable_blockprotect, -- .write = spi_chip_write_256, -- .read = spi_chip_read, /* Fast read (0x0B) supported */ -- .voltage = {2700, 3600}, -- }, -- -- { -- .vendor = "Macronix", -- .name = "MX25L1605D/MX25L1608D/MX25L1673E", -- .bustype = BUS_SPI, -- .manufacture_id = MACRONIX_ID, -- .model_id = MACRONIX_MX25L1605, -- .total_size = 2048, -- .page_size = 256, -- .feature_bits = FEATURE_WRSR_WREN, -- .tested = TEST_OK_PREW, -- .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 = { {2 * 1024 * 1024, 1} }, -- .block_erase = spi_block_erase_60, -- }, { -- .eraseblocks = { {2 * 1024 * 1024, 1} }, -- .block_erase = spi_block_erase_c7, -- }, -- }, -- .printlock = spi_prettyprint_status_register_bp3_srwd, /* bit6: Continuously Program (CP) mode */ -- .unlock = spi_disable_blockprotect, -- .write = spi_chip_write_256, -- .read = spi_chip_read, /* Fast read (0x0B), dual I/O supported */ -- .voltage = {2700, 3600}, -- }, -- -- { -- .vendor = "Macronix", - .name = "MX25L1635D", - .bustype = BUS_SPI, - .manufacture_id = MACRONIX_ID, -@@ -11149,12 +11040,12 @@ - .name = "SST25VF016B", - .bustype = BUS_SPI, - .manufacture_id = SST_ID, -- .model_id = SST_SST25VF016B, -+ .model_id = 0x41, - .total_size = 2048, - .page_size = 256, - .feature_bits = FEATURE_WRSR_EITHER, - .tested = TEST_OK_PREW, -- .probe = probe_spi_rdid, -+ .probe = probe_spi_res2, - .probe_timing = TIMING_ZERO, - .block_erasers = - { -@@ -11177,7 +11068,7 @@ - }, - .printlock = spi_prettyprint_status_register_sst25vf016, - .unlock = spi_disable_blockprotect, -- .write = spi_aai_write, -+ .write = spi_chip_write_1, - .read = spi_chip_read, - .voltage = {2700, 3600}, - }, diff --git a/resources/flashrom/patch/flashchips.c.diff.normal b/resources/flashrom/patch/flashchips.c.diff.normal deleted file mode 100644 index 9a08996..0000000 --- a/resources/flashrom/patch/flashchips.c.diff.normal +++ /dev/null @@ -1,83 +0,0 @@ ---- flashchips.c 2014-12-14 11:05:12.512662091 +0000 -+++ flashchips.c.patch.normal 2014-12-14 11:11:50.962637898 +0000 -@@ -6602,80 +6602,6 @@ - - { - .vendor = "Macronix", -- .name = "MX25L1605", -- .bustype = BUS_SPI, -- .manufacture_id = MACRONIX_ID, -- .model_id = MACRONIX_MX25L1605, -- .total_size = 2048, -- .page_size = 256, -- .feature_bits = FEATURE_WRSR_WREN, -- .tested = TEST_OK_PREW, -- .probe = probe_spi_rdid, -- .probe_timing = TIMING_ZERO, -- .block_erasers = -- { -- { -- .eraseblocks = { {64 * 1024, 32} }, -- .block_erase = spi_block_erase_20, -- }, { -- .eraseblocks = { {64 * 1024, 32} }, -- .block_erase = spi_block_erase_d8, -- }, { -- .eraseblocks = { {2 * 1024 * 1024, 1} }, -- .block_erase = spi_block_erase_60, -- }, { -- .eraseblocks = { {2 * 1024 * 1024, 1} }, -- .block_erase = spi_block_erase_c7, -- }, -- }, -- .printlock = spi_prettyprint_status_register_bp2_srwd, /* bit6: error flag */ -- .unlock = spi_disable_blockprotect, -- .write = spi_chip_write_256, -- .read = spi_chip_read, /* Fast read (0x0B) supported */ -- .voltage = {2700, 3600}, -- }, -- -- { -- .vendor = "Macronix", -- .name = "MX25L1605A/MX25L1606E", -- .bustype = BUS_SPI, -- .manufacture_id = MACRONIX_ID, -- .model_id = MACRONIX_MX25L1605, -- .total_size = 2048, -- .page_size = 256, -- /* OTP: 64B total; enter 0xB1, exit 0xC1 (MX25L1606E only) */ -- .feature_bits = FEATURE_WRSR_WREN | FEATURE_OTP, -- .tested = TEST_OK_PREW, -- .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_52, -- }, { -- .eraseblocks = { {64 * 1024, 32} }, -- .block_erase = spi_block_erase_d8, -- }, { -- .eraseblocks = { {2 * 1024 * 1024, 1} }, -- .block_erase = spi_block_erase_60, -- }, { -- .eraseblocks = { {2 * 1024 * 1024, 1} }, -- .block_erase = spi_block_erase_c7, -- }, -- }, -- .printlock = spi_prettyprint_status_register_bp3_srwd, /* MX25L1605A bp2 only */ -- .unlock = spi_disable_blockprotect, -- .write = spi_chip_write_256, -- .read = spi_chip_read, /* Fast read (0x0B) supported */ -- .voltage = {2700, 3600}, -- }, -- -- { -- .vendor = "Macronix", - .name = "MX25L1605D/MX25L1608D/MX25L1673E", - .bustype = BUS_SPI, - .manufacture_id = MACRONIX_ID, diff --git a/resources/flashrom/patch/lenovobios_macronix.diff b/resources/flashrom/patch/lenovobios_macronix.diff new file mode 100644 index 0000000..30f42bb --- /dev/null +++ b/resources/flashrom/patch/lenovobios_macronix.diff @@ -0,0 +1,26 @@ +--- flashchips.c 2014-12-30 01:59:49.846383043 +0000 ++++ flashchips.c.i945lenovobios_macronix 2014-12-30 02:05:16.060000647 +0000 +@@ -6605,12 +6605,12 @@ + .name = "MX25L1605D/MX25L1608D/MX25L1673E", + .bustype = BUS_SPI, + .manufacture_id = MACRONIX_ID, +- .model_id = MACRONIX_MX25L1605, ++ .model_id = 0x14, + .total_size = 2048, + .page_size = 256, + .feature_bits = FEATURE_WRSR_WREN, + .tested = TEST_OK_PREW, +- .probe = probe_spi_rdid, ++ .probe = probe_spi_res1, + .probe_timing = TIMING_ZERO, + .block_erasers = + { +@@ -6630,7 +6630,7 @@ + }, + .printlock = spi_prettyprint_status_register_bp3_srwd, /* bit6: Continuously Program (CP) mode */ + .unlock = spi_disable_blockprotect, +- .write = spi_chip_write_256, ++ .write = spi_chip_write_1, + .read = spi_chip_read, /* Fast read (0x0B), dual I/O supported */ + .voltage = {2700, 3600}, + }, diff --git a/resources/flashrom/patch/lenovobios_sst.diff b/resources/flashrom/patch/lenovobios_sst.diff new file mode 100644 index 0000000..d762bb2 --- /dev/null +++ b/resources/flashrom/patch/lenovobios_sst.diff @@ -0,0 +1,26 @@ +--- flashchips.c 2014-12-30 01:59:49.846383043 +0000 ++++ flashchips.c.i945lenovobios_sst 2014-12-30 02:03:51.367580645 +0000 +@@ -10886,12 +10886,12 @@ + .name = "SST25VF016B", + .bustype = BUS_SPI, + .manufacture_id = SST_ID, +- .model_id = SST_SST25VF016B, ++ .model_id = 0x41, + .total_size = 2048, + .page_size = 256, + .feature_bits = FEATURE_WRSR_EITHER, + .tested = TEST_OK_PREW, +- .probe = probe_spi_rdid, ++ .probe = probe_spi_res2, + .probe_timing = TIMING_ZERO, + .block_erasers = + { +@@ -10914,7 +10914,7 @@ + }, + .printlock = spi_prettyprint_status_register_sst25vf016, + .unlock = spi_disable_blockprotect, +- .write = spi_aai_write, ++ .write = spi_chip_write_1, + .read = spi_chip_read, + .voltage = {2700, 3600}, + }, diff --git a/resources/flashrom/patch/purged_chips.diff b/resources/flashrom/patch/purged_chips.diff new file mode 100644 index 0000000..8795495 --- /dev/null +++ b/resources/flashrom/patch/purged_chips.diff @@ -0,0 +1,293 @@ +--- flashchips.c 2014-12-29 23:36:27.463726125 +0000 ++++ flashchips.c_defspurged 2014-12-30 01:53:02.300362113 +0000 +@@ -6602,80 +6602,6 @@ + + { + .vendor = "Macronix", +- .name = "MX25L1605", +- .bustype = BUS_SPI, +- .manufacture_id = MACRONIX_ID, +- .model_id = MACRONIX_MX25L1605, +- .total_size = 2048, +- .page_size = 256, +- .feature_bits = FEATURE_WRSR_WREN, +- .tested = TEST_OK_PREW, +- .probe = probe_spi_rdid, +- .probe_timing = TIMING_ZERO, +- .block_erasers = +- { +- { +- .eraseblocks = { {64 * 1024, 32} }, +- .block_erase = spi_block_erase_20, +- }, { +- .eraseblocks = { {64 * 1024, 32} }, +- .block_erase = spi_block_erase_d8, +- }, { +- .eraseblocks = { {2 * 1024 * 1024, 1} }, +- .block_erase = spi_block_erase_60, +- }, { +- .eraseblocks = { {2 * 1024 * 1024, 1} }, +- .block_erase = spi_block_erase_c7, +- }, +- }, +- .printlock = spi_prettyprint_status_register_bp2_srwd, /* bit6: error flag */ +- .unlock = spi_disable_blockprotect, +- .write = spi_chip_write_256, +- .read = spi_chip_read, /* Fast read (0x0B) supported */ +- .voltage = {2700, 3600}, +- }, +- +- { +- .vendor = "Macronix", +- .name = "MX25L1605A/MX25L1606E", +- .bustype = BUS_SPI, +- .manufacture_id = MACRONIX_ID, +- .model_id = MACRONIX_MX25L1605, +- .total_size = 2048, +- .page_size = 256, +- /* OTP: 64B total; enter 0xB1, exit 0xC1 (MX25L1606E only) */ +- .feature_bits = FEATURE_WRSR_WREN | FEATURE_OTP, +- .tested = TEST_OK_PREW, +- .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_52, +- }, { +- .eraseblocks = { {64 * 1024, 32} }, +- .block_erase = spi_block_erase_d8, +- }, { +- .eraseblocks = { {2 * 1024 * 1024, 1} }, +- .block_erase = spi_block_erase_60, +- }, { +- .eraseblocks = { {2 * 1024 * 1024, 1} }, +- .block_erase = spi_block_erase_c7, +- }, +- }, +- .printlock = spi_prettyprint_status_register_bp3_srwd, /* MX25L1605A bp2 only */ +- .unlock = spi_disable_blockprotect, +- .write = spi_chip_write_256, +- .read = spi_chip_read, /* Fast read (0x0B) supported */ +- .voltage = {2700, 3600}, +- }, +- +- { +- .vendor = "Macronix", + .name = "MX25L1605D/MX25L1608D/MX25L1673E", + .bustype = BUS_SPI, + .manufacture_id = MACRONIX_ID, +@@ -6783,41 +6709,6 @@ + + { + .vendor = "Macronix", +- .name = "MX25L3205(A)", +- .bustype = BUS_SPI, +- .manufacture_id = MACRONIX_ID, +- .model_id = MACRONIX_MX25L3205, +- .total_size = 4096, +- .page_size = 256, +- .feature_bits = FEATURE_WRSR_WREN, +- .tested = TEST_OK_PREW, +- .probe = probe_spi_rdid, +- .probe_timing = TIMING_ZERO, +- .block_erasers = +- { +- { +- .eraseblocks = { {64 * 1024, 64} }, +- .block_erase = spi_block_erase_20, +- }, { +- .eraseblocks = { {64 * 1024, 64} }, +- .block_erase = spi_block_erase_d8, +- }, { +- .eraseblocks = { {4 * 1024 * 1024, 1} }, +- .block_erase = spi_block_erase_60, +- }, { +- .eraseblocks = { {4 * 1024 * 1024, 1} }, +- .block_erase = spi_block_erase_c7, +- }, +- }, +- .printlock = spi_prettyprint_status_register_bp2_srwd, /* bit6: error flag */ +- .unlock = spi_disable_blockprotect, +- .write = spi_chip_write_256, +- .read = spi_chip_read, /* Fast read (0x0B) supported */ +- .voltage = {2700, 3600}, +- }, +- +- { +- .vendor = "Macronix", + .name = "MX25L3205D/MX25L3208D", + .bustype = BUS_SPI, + .manufacture_id = MACRONIX_ID, +@@ -6854,84 +6745,6 @@ + + { + .vendor = "Macronix", +- .name = "MX25L3206E", +- .bustype = BUS_SPI, +- .manufacture_id = MACRONIX_ID, +- .model_id = MACRONIX_MX25L3205, +- .total_size = 4096, +- .page_size = 256, +- /* OTP: 64B total; enter 0xB1, exit 0xC1 */ +- .feature_bits = FEATURE_WRSR_WREN | FEATURE_OTP, +- .tested = TEST_OK_PREW, +- .probe = probe_spi_rdid, +- .probe_timing = TIMING_ZERO, +- .block_erasers = +- { +- { +- .eraseblocks = { {4 * 1024, 1024} }, +- .block_erase = spi_block_erase_20, +- }, { +- .eraseblocks = { {64 * 1024, 64} }, +- .block_erase = spi_block_erase_d8, +- }, { +- .eraseblocks = { {64 * 1024, 64} }, +- .block_erase = spi_block_erase_52, +- }, { +- .eraseblocks = { {4 * 1024 * 1024, 1} }, +- .block_erase = spi_block_erase_60, +- }, { +- .eraseblocks = { {4 * 1024 * 1024, 1} }, +- .block_erase = spi_block_erase_c7, +- }, +- }, +- .printlock = spi_prettyprint_status_register_bp3_srwd, +- .unlock = spi_disable_blockprotect, +- .write = spi_chip_write_256, +- .read = spi_chip_read, /* Fast read (0x0B) and dual I/O supported */ +- .voltage = {2700, 3600}, +- }, +- +- { +- .vendor = "Macronix", +- .name = "MX25L3273E", +- .bustype = BUS_SPI, +- .manufacture_id = MACRONIX_ID, +- .model_id = MACRONIX_MX25L3205, +- .total_size = 4096, +- .page_size = 256, +- /* OTP: 64B total; enter 0xB1, exit 0xC1 */ +- .feature_bits = FEATURE_WRSR_WREN | FEATURE_OTP, +- .tested = TEST_UNTESTED, +- .probe = probe_spi_rdid, +- .probe_timing = TIMING_ZERO, +- .block_erasers = +- { +- { +- .eraseblocks = { {4 * 1024, 1024} }, +- .block_erase = spi_block_erase_20, +- }, { +- .eraseblocks = { {32 * 1024, 128} }, +- .block_erase = spi_block_erase_52, +- }, { +- .eraseblocks = { {64 * 1024, 64} }, +- .block_erase = spi_block_erase_d8, +- }, { +- .eraseblocks = { {4 * 1024 * 1024, 1} }, +- .block_erase = spi_block_erase_60, +- }, { +- .eraseblocks = { {4 * 1024 * 1024, 1} }, +- .block_erase = spi_block_erase_c7, +- }, +- }, +- .printlock = spi_prettyprint_status_register_bp3_srwd, +- .unlock = spi_disable_blockprotect, +- .write = spi_chip_write_256, +- .read = spi_chip_read, /* Fast read (0x0B) and dual I/O supported */ +- .voltage = {2700, 3600}, +- }, +- +- { +- .vendor = "Macronix", + .name = "MX25L3235D", + .bustype = BUS_SPI, + .manufacture_id = MACRONIX_ID, +@@ -7002,82 +6815,6 @@ + .voltage = {2700, 3600}, + }, + +- { +- .vendor = "Macronix", +- .name = "MX25L6406E/MX25L6436E", +- .bustype = BUS_SPI, +- .manufacture_id = MACRONIX_ID, +- .model_id = MACRONIX_MX25L6405, +- .total_size = 8192, +- .page_size = 256, +- /* OTP: 06E 64B/36E 512B total; enter 0xB1, exit 0xC1 */ +- .feature_bits = FEATURE_WRSR_WREN | FEATURE_OTP, +- .tested = TEST_OK_PREW, +- .probe = probe_spi_rdid, +- .probe_timing = TIMING_ZERO, +- .block_erasers = +- { +- { +- .eraseblocks = { {4 * 1024, 2048} }, +- .block_erase = spi_block_erase_20, +- }, { +- .eraseblocks = { {64 * 1024, 128} }, +- .block_erase = spi_block_erase_d8, +- }, { +- .eraseblocks = { {8 * 1024 * 1024, 1} }, +- .block_erase = spi_block_erase_60, +- }, { +- .eraseblocks = { {8 * 1024 * 1024, 1} }, +- .block_erase = spi_block_erase_c7, +- } +- }, +- .printlock = spi_prettyprint_status_register_bp3_srwd, /* bit6 for 36E is quad enable */ +- .unlock = spi_disable_blockprotect, +- .write = spi_chip_write_256, +- .read = spi_chip_read, +- .voltage = {2700, 3600}, +- }, +- +- { +- .vendor = "Macronix", +- .name = "MX25L6445E/MX25L6473E", +- .bustype = BUS_SPI, +- .manufacture_id = MACRONIX_ID, +- .model_id = MACRONIX_MX25L6405, +- .total_size = 8192, +- .page_size = 256, +- /* supports SFDP */ +- /* OTP: 512B total; enter 0xB1, exit 0xC1 */ +- .feature_bits = FEATURE_WRSR_WREN | FEATURE_OTP, +- .tested = TEST_OK_PREW, +- .probe = probe_spi_rdid, +- .probe_timing = TIMING_ZERO, +- .block_erasers = +- { +- { +- .eraseblocks = { {4 * 1024, 2048} }, +- .block_erase = spi_block_erase_20, +- }, { +- .eraseblocks = { {32 * 1024, 256} }, +- .block_erase = spi_block_erase_52, +- }, { +- .eraseblocks = { {64 * 1024, 128} }, +- .block_erase = spi_block_erase_d8, +- }, { +- .eraseblocks = { {8 * 1024 * 1024, 1} }, +- .block_erase = spi_block_erase_60, +- }, { +- .eraseblocks = { {8 * 1024 * 1024, 1} }, +- .block_erase = spi_block_erase_c7, +- } +- }, +- .printlock = spi_prettyprint_status_register_bp3_srwd, /* bit6 is quad enable */ +- .unlock = spi_disable_blockprotect, +- .write = spi_chip_write_256, +- .read = spi_chip_read, /* Fast read (0x0B) and multi I/O supported */ +- .voltage = {2700, 3600}, +- }, +- + { + .vendor = "Macronix", + .name = "MX25L12805(D)", |