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>
diff --git a/chipdrivers.h b/chipdrivers.h
index a6faf9f..c01ab7a 100644
--- a/chipdrivers.h
+++ b/chipdrivers.h
@@ -110,6 +110,7 @@
 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 @@
 
 	{
 		.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 @@
 	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;