From 92ecdf75c6aba933c6e92328ade43a982d5b0430 Mon Sep 17 00:00:00 2001 From: Andrew Robbins Date: Fri, 2 Mar 2018 00:23:24 -0500 Subject: Update flashrom patch for redundant Macronix chips --- .../0001-Purge-redundant-Macronix-chips.patch | 91 ++++++ projects/flashrom/patches/0003-purged-chips.patch | 354 --------------------- 2 files changed, 91 insertions(+), 354 deletions(-) create mode 100644 projects/flashrom/patches/0001-Purge-redundant-Macronix-chips.patch delete mode 100644 projects/flashrom/patches/0003-purged-chips.patch (limited to 'projects') diff --git a/projects/flashrom/patches/0001-Purge-redundant-Macronix-chips.patch b/projects/flashrom/patches/0001-Purge-redundant-Macronix-chips.patch new file mode 100644 index 00000000..e14bfe0c --- /dev/null +++ b/projects/flashrom/patches/0001-Purge-redundant-Macronix-chips.patch @@ -0,0 +1,91 @@ +From 4a262ea16a10a6067d48d70a2195151dea9292c6 Mon Sep 17 00:00:00 2001 +From: Andrew Robbins +Date: Fri, 2 Mar 2018 00:13:16 -0500 +Subject: [PATCH] Purge redundant Macronix chips + +Removing the redundant Macronix chips avoids the situation where X60 +owners have to specify their particular chip on the command line with +flashrom's '--chip' flag. +--- + flashchips.c | 16 ++++++++-------- + 1 file changed, 8 insertions(+), 8 deletions(-) + +diff --git a/flashchips.c b/flashchips.c +index 1ab4986..7f85415 100644 +--- a/flashchips.c ++++ b/flashchips.c +@@ -7595,7 +7595,7 @@ const struct flashchip flashchips[] = { + .name = "MX25L1605A/MX25L1606E/MX25L1608E", + .bustype = BUS_SPI, + .manufacture_id = MACRONIX_ID, +- .model_id = MACRONIX_MX25L1605, ++ .model_id = 0xDEAD, + .total_size = 2048, + .page_size = 256, + /* OTP: 64B total; enter 0xB1, exit 0xC1 (MX25L1606E and MX25L1608E only) */ +@@ -7634,7 +7634,7 @@ const struct flashchip flashchips[] = { + .name = "MX25L1605D/MX25L1608D/MX25L1673E", + .bustype = BUS_SPI, + .manufacture_id = MACRONIX_ID, +- .model_id = MACRONIX_MX25L1605, ++ .model_id = 0xDEAD, + .total_size = 2048, + .page_size = 256, + .feature_bits = FEATURE_WRSR_WREN, +@@ -7776,7 +7776,7 @@ const struct flashchip flashchips[] = { + .name = "MX25L3205D/MX25L3208D", + .bustype = BUS_SPI, + .manufacture_id = MACRONIX_ID, +- .model_id = MACRONIX_MX25L3205, ++ .model_id = 0xDEAD, + .total_size = 4096, + .page_size = 256, + /* OTP: 64B total; enter 0xB1, exit 0xC1 */ +@@ -7812,7 +7812,7 @@ const struct flashchip flashchips[] = { + .name = "MX25L3206E/MX25L3208E", + .bustype = BUS_SPI, + .manufacture_id = MACRONIX_ID, +- .model_id = MACRONIX_MX25L3205, ++ .model_id = 0xDEAD, + .total_size = 4096, + .page_size = 256, + /* OTP: 64B total; enter 0xB1, exit 0xC1 */ +@@ -7851,7 +7851,7 @@ const struct flashchip flashchips[] = { + .name = "MX25L3273E", + .bustype = BUS_SPI, + .manufacture_id = MACRONIX_ID, +- .model_id = MACRONIX_MX25L3205, ++ .model_id = 0xDEAD, + .total_size = 4096, + .page_size = 256, + /* OTP: 64B total; enter 0xB1, exit 0xC1 */ +@@ -7962,7 +7962,7 @@ const struct flashchip flashchips[] = { + .name = "MX25L6405D", + .bustype = BUS_SPI, + .manufacture_id = MACRONIX_ID, +- .model_id = MACRONIX_MX25L6405, ++ .model_id = 0xDEAD, + .total_size = 8192, + .page_size = 256, + /* OTP: 64B total; enter 0xB1, exit 0xC1 */ +@@ -7998,7 +7998,7 @@ const struct flashchip flashchips[] = { + .name = "MX25L6406E/MX25L6408E", + .bustype = BUS_SPI, + .manufacture_id = MACRONIX_ID, +- .model_id = MACRONIX_MX25L6405, ++ .model_id = 0xDEAD, + .total_size = 8192, + .page_size = 256, + /* MX25L6406E supports SFDP */ +@@ -8038,7 +8038,7 @@ const struct flashchip flashchips[] = { + .name = "MX25L6436E/MX25L6445E/MX25L6465E/MX25L6473E/MX25L6473F", + .bustype = BUS_SPI, + .manufacture_id = MACRONIX_ID, +- .model_id = MACRONIX_MX25L6405, ++ .model_id = 0xDEAD, + .total_size = 8192, + .page_size = 256, + /* supports SFDP */ +-- +1.9.1 + diff --git a/projects/flashrom/patches/0003-purged-chips.patch b/projects/flashrom/patches/0003-purged-chips.patch deleted file mode 100644 index 0dc7e2bc..00000000 --- a/projects/flashrom/patches/0003-purged-chips.patch +++ /dev/null @@ -1,354 +0,0 @@ -From 260f0e096b385c9f53e9a28e79293131a11122a6 Mon Sep 17 00:00:00 2001 -From: Leah Rowe -Date: Fri, 11 Mar 2016 06:50:50 +0000 -Subject: [PATCH 1/1] purged chips - ---- - flashchips.c | 303 ----------------------------------------------------------- - 1 file changed, 303 deletions(-) - -diff --git a/flashchips.c b/flashchips.c -index 0fc1b7a..5c94304 100644 ---- a/flashchips.c -+++ b/flashchips.c -@@ -7451,80 +7451,6 @@ const struct flashchip flashchips[] = { - - { - .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/MX25L1608E", -- .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 and MX25L1608E 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_bp3_srwd, -- .write = spi_chip_write_256, -- .read = spi_chip_read, /* Fast read (0x0B) supported (MX25L1608E supports dual-I/O read) */ -- .voltage = {2700, 3600}, -- }, -- -- { -- .vendor = "Macronix", - .name = "MX25L1605D/MX25L1608D/MX25L1673E", - .bustype = BUS_SPI, - .manufacture_id = MACRONIX_ID, -@@ -7632,41 +7558,6 @@ const struct flashchip flashchips[] = { - - { - .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, -@@ -7703,84 +7594,6 @@ const struct flashchip flashchips[] = { - - { - .vendor = "Macronix", -- .name = "MX25L3206E/MX25L3208E", -- .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_bp3_srwd, -- .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_OK_PREW, -- .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_bp3_srwd, -- .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, -@@ -7817,42 +7630,6 @@ const struct flashchip flashchips[] = { - - { - .vendor = "Macronix", -- .name = "MX25L6405", -- .bustype = BUS_SPI, -- .manufacture_id = MACRONIX_ID, -- .model_id = MACRONIX_MX25L6405, -- .total_size = 8192, -- .page_size = 256, -- /* Has an additional 512B EEPROM sector */ -- .feature_bits = FEATURE_WRSR_WREN, -- .tested = TEST_OK_PREW, -- .probe = probe_spi_rdid, -- .probe_timing = TIMING_ZERO, -- .block_erasers = -- { -- { -- .eraseblocks = { {64 * 1024, 128} }, -- .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: error flag */ -- .unlock = spi_disable_blockprotect_bp3_srwd, -- .write = spi_chip_write_256, -- .read = spi_chip_read, /* Fast read (0x0B) supported */ -- .voltage = {2700, 3600}, -- }, -- -- { -- .vendor = "Macronix", - .name = "MX25L6405D", - .bustype = BUS_SPI, - .manufacture_id = MACRONIX_ID, -@@ -7889,86 +7666,6 @@ const struct flashchip flashchips[] = { - - { - .vendor = "Macronix", -- .name = "MX25L6406E/MX25L6408E", -- .bustype = BUS_SPI, -- .manufacture_id = MACRONIX_ID, -- .model_id = MACRONIX_MX25L6405, -- .total_size = 8192, -- .page_size = 256, -- /* MX25L6406E supports SFDP */ -- /* OTP: 06E 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, 2048} }, -- .block_erase = spi_block_erase_20, -- }, { -- .eraseblocks = { {64 * 1024, 128} }, -- .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, -- .unlock = spi_disable_blockprotect_bp3_srwd, -- .write = spi_chip_write_256, -- .read = spi_chip_read, /* Fast read (0x0B), dual I/O read supported */ -- .voltage = {2700, 3600}, -- }, -- -- { -- .vendor = "Macronix", -- .name = "MX25L6436E/MX25L6445E/MX25L6465E/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_bp3_srwd, -- .write = spi_chip_write_256, -- .read = spi_chip_read, /* Fast read (0x0B) and multi I/O supported */ -- .voltage = {2700, 3600}, -- }, -- -- { -- .vendor = "Macronix", - .name = "MX25L12805D", - .bustype = BUS_SPI, - .manufacture_id = MACRONIX_ID, --- -1.9.1 - -- cgit v1.2.3-70-g09d2 From c8c92c141ed26210275efd5786eba2c1d3cd3ff7 Mon Sep 17 00:00:00 2001 From: Andrew Robbins Date: Fri, 2 Mar 2018 01:50:32 -0500 Subject: Update flashrom target 'lenovobios' patch This patch has simply been updated in order to apply to the flashrom revision currently being used. Leah Rowe has been duly retained as the author of the patch. --- ...bios-adaptation-for-Macronix-and-SST-chips.patch | 21 ++++++++++----------- 1 file changed, 10 insertions(+), 11 deletions(-) (limited to 'projects') diff --git a/projects/flashrom/patches/lenovobios/0001-Lenovobios-adaptation-for-Macronix-and-SST-chips.patch b/projects/flashrom/patches/lenovobios/0001-Lenovobios-adaptation-for-Macronix-and-SST-chips.patch index 1cb843c9..2a383fd1 100644 --- a/projects/flashrom/patches/lenovobios/0001-Lenovobios-adaptation-for-Macronix-and-SST-chips.patch +++ b/projects/flashrom/patches/lenovobios/0001-Lenovobios-adaptation-for-Macronix-and-SST-chips.patch @@ -1,22 +1,21 @@ -From aa2dd05f61f6ca91212d7f6d4055486af6e01436 Mon Sep 17 00:00:00 2001 -From: Leah Rowe -Date: Fri, 5 Aug 2016 22:40:49 +0200 +From 85eea125194414b6afc8053565bb333f06054421 Mon Sep 17 00:00:00 2001 +From: Leah Rowe +Date: Fri, 2 Mar 2018 06:47:34 +0000 Subject: [PATCH] Lenovobios adaptation for Macronix and SST chips -Signed-off-by: Paul Kocialkowski --- flashchips.c | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/flashchips.c b/flashchips.c -index e5ea181..f3a017c 100644 +index 7f85415..16b166b 100644 --- a/flashchips.c +++ b/flashchips.c -@@ -7454,12 +7454,12 @@ const struct flashchip flashchips[] = { +@@ -7634,12 +7634,12 @@ const struct flashchip flashchips[] = { .name = "MX25L1605D/MX25L1608D/MX25L1673E", .bustype = BUS_SPI, .manufacture_id = MACRONIX_ID, -- .model_id = MACRONIX_MX25L1605, +- .model_id = 0xDEAD, + .model_id = 0x14, .total_size = 2048, .page_size = 256, @@ -27,7 +26,7 @@ index e5ea181..f3a017c 100644 .probe_timing = TIMING_ZERO, .block_erasers = { -@@ -9857,7 +9857,7 @@ const struct flashchip flashchips[] = { +@@ -10442,7 +10442,7 @@ const struct flashchip flashchips[] = { }, .printlock = spi_prettyprint_status_register_bp2_srwd, .unlock = spi_disable_blockprotect, @@ -36,7 +35,7 @@ index e5ea181..f3a017c 100644 .read = spi_chip_read, /* Fast read (0x0B), dual I/O supported */ .voltage = {2700, 3600}, }, -@@ -12150,12 +12150,12 @@ const struct flashchip flashchips[] = { +@@ -12735,12 +12735,12 @@ const struct flashchip flashchips[] = { .name = "SST25VF016B", .bustype = BUS_SPI, .manufacture_id = SST_ID, @@ -51,7 +50,7 @@ index e5ea181..f3a017c 100644 .probe_timing = TIMING_ZERO, .block_erasers = { -@@ -12178,7 +12178,7 @@ const struct flashchip flashchips[] = { +@@ -12763,7 +12763,7 @@ const struct flashchip flashchips[] = { }, .printlock = spi_prettyprint_status_register_sst25vf016, .unlock = spi_disable_blockprotect, @@ -61,5 +60,5 @@ index e5ea181..f3a017c 100644 .voltage = {2700, 3600}, }, -- -2.9.0 +1.9.1 -- cgit v1.2.3-70-g09d2 From a7de3dc83f7ed8f90a5fcc1c4610b58d7319dae9 Mon Sep 17 00:00:00 2001 From: Andrew Robbins Date: Fri, 2 Mar 2018 02:18:50 -0500 Subject: Update flashrom patch for reliable MX25 chip flash This patch has simply been updated in order to apply to the flashrom revision currently being used--with one minor alteration in usage (i.e., the '-m' flag). "consts" has been duly retained as the author of the patch. --- .../patches/0002-Workaround-for-MX25-chips.patch | 81 ++++++++++++++++++++++ .../0005-Workaround-MX25-reliable-operation.patch | 66 ------------------ 2 files changed, 81 insertions(+), 66 deletions(-) create mode 100644 projects/flashrom/patches/0002-Workaround-for-MX25-chips.patch delete mode 100644 projects/flashrom/patches/0005-Workaround-MX25-reliable-operation.patch (limited to 'projects') diff --git a/projects/flashrom/patches/0002-Workaround-for-MX25-chips.patch b/projects/flashrom/patches/0002-Workaround-for-MX25-chips.patch new file mode 100644 index 00000000..de6272c0 --- /dev/null +++ b/projects/flashrom/patches/0002-Workaround-for-MX25-chips.patch @@ -0,0 +1,81 @@ +From 886f1db7edbfc9ef4c9727b4f564c1e7e35d6565 Mon Sep 17 00:00:00 2001 +From: consts +Date: Fri, 2 Mar 2018 07:03:37 +0000 +Subject: [PATCH] Workaround for MX25 chips + +https://notabug.org/libreboot/libreboot/issues/193 +--- + cli_classic.c | 5 +++++ + programmer.h | 1 + + spi.c | 9 +++++++++ + 3 files changed, 15 insertions(+) + +diff --git a/cli_classic.c b/cli_classic.c +index 31f7394..c60168c 100644 +--- a/cli_classic.c ++++ b/cli_classic.c +@@ -62,6 +62,7 @@ static void cli_classic_usage(const char *name) + " -o | --output log output to \n" + " --flash-contents assume flash contents to be \n" + " -L | --list-supported print supported devices\n" ++ " -m | --workaround-mx keep flash busy before sending command\n" + #if CONFIG_PRINT_WIKI == 1 + " -z | --list-supported-wiki print supported devices in wiki syntax\n" + #endif +@@ -136,6 +137,7 @@ int main(int argc, char *argv[]) + {"help", 0, NULL, 'h'}, + {"version", 0, NULL, 'R'}, + {"output", 1, NULL, 'o'}, ++ {"workaround-mx", 0, NULL, 'm'}, + {NULL, 0, NULL, 0}, + }; + +@@ -347,6 +349,9 @@ int main(int argc, char *argv[]) + } + #endif /* STANDALONE */ + break; ++ case 'm': /* --workaround-mx */ ++ workaround_mx = 1; ++ break; + default: + cli_classic_abort_usage(); + break; +diff --git a/programmer.h b/programmer.h +index 139f4fa..f54e690 100644 +--- a/programmer.h ++++ b/programmer.h +@@ -664,6 +664,7 @@ enum ich_chipset { + CHIPSET_100_SERIES_SUNRISE_POINT, /* also 6th/7th gen Core i/o (LP) variants */ + CHIPSET_C620_SERIES_LEWISBURG, + }; ++extern int workaround_mx; /* workaround for MX25* chips, makes flash operations more reliable, less failures */ + + /* ichspi.c */ + #if CONFIG_INTERNAL == 1 +diff --git a/spi.c b/spi.c +index 56f1fdf..4e61d88 100644 +--- a/spi.c ++++ b/spi.c +@@ -30,10 +30,19 @@ + #include "programmer.h" + #include "spi.h" + ++int workaround_mx; /* Make operations with MX25* chips more reliable */ ++ + int spi_send_command(struct flashctx *flash, unsigned int writecnt, + unsigned int readcnt, const unsigned char *writearr, + unsigned char *readarr) + { ++ if (workaround_mx) { ++ const unsigned char cmd[JEDEC_READ_OUTSIZE] = {JEDEC_READ, 0, 0, 0}; ++ unsigned char buf[256]; ++ /* keep flash busy for some time, keep CS warm before sending actual command */ ++ flash->mst->spi.command(flash, sizeof(cmd), sizeof(buf), cmd, buf); ++ } ++ /* actual command */ + return flash->mst->spi.command(flash, writecnt, readcnt, writearr, + readarr); + } +-- +1.9.1 + diff --git a/projects/flashrom/patches/0005-Workaround-MX25-reliable-operation.patch b/projects/flashrom/patches/0005-Workaround-MX25-reliable-operation.patch deleted file mode 100644 index 472afd30..00000000 --- a/projects/flashrom/patches/0005-Workaround-MX25-reliable-operation.patch +++ /dev/null @@ -1,66 +0,0 @@ -diff --git a/cli_classic.c b/cli_classic.c -index 0a09cfd..9eeafe1 100644 ---- a/cli_classic.c -+++ b/cli_classic.c -@@ -61,6 +61,7 @@ static void cli_classic_usage(const char *name) - " -i | --image only flash image from flash layout\n" - " -o | --output log output to \n" - " -L | --list-supported print supported devices\n" -+ " | --workaround-mx keep flash busy before sending command\n" - #if CONFIG_PRINT_WIKI == 1 - " -z | --list-supported-wiki print supported devices in wiki syntax\n" - #endif -@@ -130,6 +131,7 @@ int main(int argc, char *argv[]) - {"help", 0, NULL, 'h'}, - {"version", 0, NULL, 'R'}, - {"output", 1, NULL, 'o'}, -+ {"workaround-mx", 0, NULL, 0x0101}, - {NULL, 0, NULL, 0}, - }; - -@@ -337,6 +339,9 @@ int main(int argc, char *argv[]) - } - #endif /* STANDALONE */ - break; -+ case 0x0101: /* --workaround-mx */ -+ workaround_mx = 1; -+ break; - default: - cli_classic_abort_usage(); - break; -diff --git a/programmer.h b/programmer.h -index 1a6216a..6f97cfc 100644 ---- a/programmer.h -+++ b/programmer.h -@@ -650,6 +650,7 @@ enum ich_chipset { - CHIPSET_8_SERIES_WELLSBURG, - CHIPSET_9_SERIES_WILDCAT_POINT, - }; -+extern int workaround_mx; /* workaround for MX25* chips, makes flash operations more reliable, less failures */ - - /* ichspi.c */ - #if CONFIG_INTERNAL == 1 -diff --git a/spi.c b/spi.c -index 894f73f..05aa5d0 100644 ---- a/spi.c -+++ b/spi.c -@@ -30,10 +30,19 @@ - #include "programmer.h" - #include "spi.h" - -+int workaround_mx; /* Make operations with MX25* chips more reliable */ -+ - int spi_send_command(struct flashctx *flash, unsigned int writecnt, - unsigned int readcnt, const unsigned char *writearr, - unsigned char *readarr) - { -+ if (workaround_mx) { -+ const unsigned char cmd[JEDEC_READ_OUTSIZE] = {JEDEC_READ, 0, 0, 0}; -+ unsigned char buf[256]; -+ /* keep flash busy for some time, keep CS warm before sending actual command */ -+ flash->mst->spi.command(flash, sizeof(cmd), sizeof(buf), cmd, buf); -+ } -+ /* actual command */ - return flash->mst->spi.command(flash, writecnt, readcnt, writearr, - readarr); - } -- cgit v1.2.3-70-g09d2