summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--flash.h1
-rw-r--r--flashchips.c1
-rw-r--r--w29ee011.c11
3 files changed, 13 insertions, 0 deletions
diff --git a/flash.h b/flash.h
index 17392ec..8ed8c92 100644
--- a/flash.h
+++ b/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/flashchips.c b/flashchips.c
index 3c42e35..736034c 100644
--- a/flashchips.c
+++ b/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/w29ee011.c b/w29ee011.c
index 88a7a8a..3af5be2 100644
--- a/w29ee011.c
+++ b/w29ee011.c
@@ -18,12 +18,23 @@
* Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
*/
+#include <string.h>
#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;
OpenPOWER on IntegriCloud