diff --git a/util/flashrom/flash.h b/util/flashrom/flash.h index 17392ecbf0..8ed8c92d12 100644 --- a/util/flashrom/flash.h +++ b/util/flashrom/flash.h @@ -120,6 +120,7 @@ extern struct flashchip flashchips[]; #define AMIC_ID_NOPREFIX 0x37 /* AMIC */ #define AMIC_A25L40P 0x2013 #define AMIC_A29040B 0x86 +#define AMIC_A49LF040A 0x9d #define ASD_ID 0x25 /* ASD, not listed in JEP106W */ #define ASD_AE49F2008 0x52 diff --git a/util/flashrom/flashchips.c b/util/flashrom/flashchips.c index 3c42e35a91..736034cdaf 100644 --- a/util/flashrom/flashchips.c +++ b/util/flashrom/flashchips.c @@ -45,6 +45,7 @@ struct flashchip flashchips[] = { {"Atmel", "AT49F002(N)T", ATMEL_ID, AT_49F002NT, 256, 256, TEST_UNTESTED, probe_jedec, erase_chip_jedec, write_jedec}, {"Atmel", "AT25DF321", ATMEL_ID, AT_25DF321, 4096, 256, TEST_OK_PREW, probe_spi_rdid, spi_chip_erase_c7, spi_chip_write, spi_chip_read}, {"Amic Technology","A25L40P", AMIC_ID, AMIC_A25L40P, 512, 256, TEST_UNTESTED, probe_spi_rdid, spi_chip_erase_c7, spi_chip_write, spi_chip_read}, + {"AMIC Technology","A49LF040A", AMIC_ID_NOPREFIX, AMIC_A49LF040A, 512, 64 * 1024, TEST_OK_PREW, probe_49fl00x, erase_49fl00x, write_49fl00x}, {"Amic Technology","A29040B", AMIC_ID_NOPREFIX, AMIC_A29040B, 512, 64 * 1024, TEST_OK_PR, probe_29f040b, erase_29f040b, write_29f040b}, {"EMST", "F49B002UA", EMST_ID, EMST_F49B002UA, 256, 4096, TEST_UNTESTED, probe_jedec, erase_chip_jedec, write_49f002}, {"EON", "EN29F002(A)(N)B", EON_ID, EN_29F002B, 256, 256, TEST_UNTESTED, probe_jedec, erase_chip_jedec, write_jedec}, diff --git a/util/flashrom/w29ee011.c b/util/flashrom/w29ee011.c index 88a7a8a23b..3af5be222a 100644 --- a/util/flashrom/w29ee011.c +++ b/util/flashrom/w29ee011.c @@ -18,12 +18,23 @@ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA */ +#include #include "flash.h" int probe_w29ee011(struct flashchip *flash) { volatile uint8_t *bios = flash->virtual_memory; uint8_t id1, id2; + extern char *chip_to_probe; + + if (!chip_to_probe || strcmp(chip_to_probe,"W29EE011")) { + printf_debug("\n===\n"); + printf_debug(" Probing disabled for Winbond W29EE011 because the probing sequence puts the\n"); + printf_debug(" AMIC A49LF040A in a funky state.\n"); + printf_debug(" Use 'flashrom -c W29EE011' if you have a board with this chip."); + printf_debug("\n===\n"); + return 0; + } /* Issue JEDEC Product ID Entry command */ *(volatile uint8_t *)(bios + 0x5555) = 0xAA;