aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorFrancis Rowe <info@gluglug.org.uk>2014-12-30 02:13:49 +0000
committerFrancis Rowe <info@gluglug.org.uk>2014-12-30 02:30:36 +0000
commit3e60ad76e2cef38bc59f6055c677ea2d890e10fe (patch)
tree782a8a0bb988aae3db5847aae9d56e832e480056
parent05d821cecb953efd2cbc2d7cb21278a33a59000b (diff)
downloadlibrebootfr-3e60ad76e2cef38bc59f6055c677ea2d890e10fe.tar.gz
librebootfr-3e60ad76e2cef38bc59f6055c677ea2d890e10fe.zip
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-xbuilddeps-flashrom21
-rw-r--r--docs/release.html3
-rwxr-xr-xgetflashrom8
-rw-r--r--resources/flashrom/patch/flashchips.c.diff.lenovobios_macronix148
-rw-r--r--resources/flashrom/patch/flashchips.c.diff.lenovobios_sst142
-rw-r--r--resources/flashrom/patch/flashchips.c.diff.normal83
-rw-r--r--resources/flashrom/patch/lenovobios_macronix.diff26
-rw-r--r--resources/flashrom/patch/lenovobios_sst.diff26
-rw-r--r--resources/flashrom/patch/purged_chips.diff293
9 files changed, 371 insertions, 379 deletions
diff --git a/builddeps-flashrom b/builddeps-flashrom
index 1765e4b1..4ae96bc9 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 2d8ce389..0ed09633 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 2a20b141..b74ff6e7 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 9cdedcc6..00000000
--- 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 aa6c97da..00000000
--- 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 9a089962..00000000
--- 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 00000000..30f42bba
--- /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 00000000..d762bb25
--- /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 00000000..8795495c
--- /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)",