summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMichael Karcher <flashrom@mkarcher.dialup.fu-berlin.de>2011-03-06 17:58:05 +0000
committerMichael Karcher <flashrom@mkarcher.dialup.fu-berlin.de>2011-03-06 17:58:05 +0000
commit19e0aacd636eac3fde02a8f5e2b87326656d5812 (patch)
treede4ff2cc283b98d482fa09e1043dd7e3a306d3cb
parent8262e82d1c215cc92b85a2c2abb16b4cbbba04bb (diff)
downloadast2050-flashrom-19e0aacd636eac3fde02a8f5e2b87326656d5812.zip
ast2050-flashrom-19e0aacd636eac3fde02a8f5e2b87326656d5812.tar.gz
Add W39L040
Corresponding to flashrom svn r1268. Signed-off-by: Michael Karcher <flashrom@mkarcher.dialup.fu-berlin.de> Acked-by: Carl-Daniel Hailfinger <c-d.hailfinger.devel.2006@gmx.net>
-rw-r--r--chipdrivers.h1
-rw-r--r--flashchips.c30
-rw-r--r--w39.c16
3 files changed, 47 insertions, 0 deletions
diff --git a/chipdrivers.h b/chipdrivers.h
index a6faf9f..c01ab7a 100644
--- a/chipdrivers.h
+++ b/chipdrivers.h
@@ -110,6 +110,7 @@ int printlock_sst_fwhub(struct flashchip *flash);
int unlock_sst_fwhub(struct flashchip *flash);
/* w39.c */
+int printlock_w39l040(struct flashchip * flash);
int printlock_w39v040a(struct flashchip *flash);
int printlock_w39v040b(struct flashchip *flash);
int printlock_w39v040c(struct flashchip *flash);
diff --git a/flashchips.c b/flashchips.c
index 96d41a3..9f2b64f 100644
--- a/flashchips.c
+++ b/flashchips.c
@@ -7820,6 +7820,36 @@ struct flashchip flashchips[] = {
{
.vendor = "Winbond",
+ .name = "W39L040",
+ .bustype = CHIP_BUSTYPE_PARALLEL,
+ .manufacture_id = WINBOND_ID,
+ .model_id = WINBOND_W39L040,
+ .total_size = 512,
+ .page_size = 64 * 1024,
+ .feature_bits = FEATURE_EITHER_RESET,
+ .tested = TEST_OK_PR,
+ .probe = probe_jedec,
+ .probe_timing = 10,
+ .block_erasers =
+ {
+ {
+ .eraseblocks = { {4 * 1024, 128} },
+ .block_erase = erase_block_jedec,
+ }, {
+ .eraseblocks = { {64 * 1024, 8} },
+ .block_erase = erase_sector_jedec,
+ }, {
+ .eraseblocks = { {512 * 1024, 1} },
+ .block_erase = erase_chip_block_jedec,
+ }
+ },
+ .printlock = printlock_w39l040,
+ .write = write_jedec_1,
+ .read = read_memmapped,
+ },
+
+ {
+ .vendor = "Winbond",
.name = "W39V040A",
.bustype = CHIP_BUSTYPE_LPC,
.manufacture_id = WINBOND_ID,
diff --git a/w39.c b/w39.c
index 06fabfd..2635988 100644
--- a/w39.c
+++ b/w39.c
@@ -161,6 +161,22 @@ static int unlock_w39_fwh(struct flashchip *flash)
return 0;
}
+int printlock_w39l040(struct flashchip * flash)
+{
+ uint8_t lock;
+ int ret;
+
+ lock = w39_idmode_readb(flash, 0x00002);
+ msg_cdbg("Bottom boot block:\n");
+ ret = printlock_w39_bootblock_64k16k(lock);
+
+ lock = w39_idmode_readb(flash, 0x7fff2);
+ msg_cdbg("Top boot block:\n");
+ ret |= printlock_w39_bootblock_64k16k(lock);
+
+ return ret;
+}
+
int printlock_w39v040a(struct flashchip *flash)
{
uint8_t lock;
OpenPOWER on IntegriCloud