aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-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)",