aboutsummaryrefslogtreecommitdiff
path: root/util
diff options
context:
space:
mode:
authorJens Kuehnel <coreboot@jens.kuehnel.org>2008-06-18 13:36:34 +0000
committerPeter Stuge <peter@stuge.se>2008-06-18 13:36:34 +0000
commit42b127fe2244a037a30c5e0f5c686d4ebb70d62f (patch)
tree5447e76ef0cdef326420603aaf2079d6cf926492 /util
parent646eb245e6fd4f974a0dd3d1e57a1871cc7fb3c5 (diff)
flashrom: Add support for AMIC Technology A49LF040A and do not probe W29EE011 anymore
Jens sent the first patch that added A49LF040A to flash.h and flashchips.c using _jedec and _49lf040 functions. An issue was found with probe_w29ee011() for the Winbond W29EE011, which caused the A49LF040A to no longer respond to any commands. Ward made a patch to disable probing by default for the W29EE011 following some discussion. Using -c W29EE011 will make flashrom probe for the chip. Peter did some more datasheet diving and found that the Pm49FL00x functions suited this chip quite well because of the block locking registers in A49LF040A, and finally tested PROBE READ ERASE WRITE to work on ALIX.3c3. Ward confirmed that this works on alix.2c3 too. Signed-off-by: Jens Kuehnel <coreboot@jens.kuehnel.org> Signed-off-by: Ward Vandewege <ward@gnu.org> Signed-off-by: Peter Stuge <peter@stuge.se> Acked-by: Ward Vandewege <ward@gnu.org> git-svn-id: svn://svn.coreboot.org/coreboot/trunk@3368 2b7e53f0-3cfb-0310-b3e9-8179ed1497e1
Diffstat (limited to 'util')
-rw-r--r--util/flashrom/flash.h1
-rw-r--r--util/flashrom/flashchips.c1
-rw-r--r--util/flashrom/w29ee011.c11
3 files changed, 13 insertions, 0 deletions
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 <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;