diff options
-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)", |