Add various ST flash chips

This patch adds support for the M50FLW040A, M50FLW040B, M50FLW080A,
M50FLW080B, M50FW080, M50FW016, M50LPW116, M29W010B flash chips made by
ST.

The patch is based on the data sheets of the chips and has not been
tested at all.

Corresponding to flashrom svn r123 and coreboot v2 svn r2741.

Signed-off-by: Carl-Daniel Hailfinger <c-d.hailfinger.devel.2006@gmx.net>
Acked-by: Uwe Hermann <uwe@hermann-uwe.de>
diff --git a/flash.h b/flash.h
index bc0cc07..62d3f40 100644
--- a/flash.h
+++ b/flash.h
@@ -111,11 +111,19 @@
 #define W_49V002FA		0x32
 
 #define ST_ID			0x20	/* ST */
+#define ST_M50FLW040A		0x08
+#define ST_M50FLW040B		0x28
+#define ST_M50FLW080A		0x80
+#define ST_M50FLW080B		0x81
 #define ST_M50FW040		0x2C
+#define ST_M50FW080		0x2D
+#define ST_M50FW016		0x2E
+#define ST_M50LPW116		0x30
 #define ST_M29F002B		0x34
 #define ST_M29F002T		0xB0	/* M29F002T / M29F002NT */
 #define ST_M29F400BT		0xD5
 #define ST_M29F040B		0xE2
+#define ST_M29W010B		0x23
 #define ST_M29W040B		0xE3
 
 #define EMST_ID			0x8c	/* EMST / EFST */
diff --git a/flashchips.c b/flashchips.c
index 5e1a3af..2deca02 100644
--- a/flashchips.c
+++ b/flashchips.c
@@ -82,8 +82,6 @@
 	 probe_sst_fwhub, erase_sst_fwhub, write_sst_fwhub},
 	{"SST49LF008A", SST_ID,		SST_49LF008A, 	1024, 64 * 1024 ,
 	 probe_sst_fwhub, erase_sst_fwhub, write_sst_fwhub},
-	{"Pm49FL002",	PMC_ID,		PMC_49FL002,	256, 16 * 1024,
-	 probe_jedec,	erase_chip_jedec, write_49fl004},
 	{"SST49LF004C", SST_ID,		SST_49LF004C,	512, 4 * 1024,
 	 probe_49lfxxxc, erase_49lfxxxc, write_49lfxxxc},
 	{"SST49LF008C", SST_ID,		SST_49LF008C, 	1024, 4 * 1024 ,
@@ -92,6 +90,8 @@
 	 probe_49lfxxxc, erase_49lfxxxc, write_49lfxxxc},
 	{"SST49LF160C", SST_ID,		SST_49LF160C, 	2048, 4 * 1024 ,
 	 probe_49lfxxxc, erase_49lfxxxc, write_49lfxxxc},
+	{"Pm49FL002",	PMC_ID,		PMC_49FL002,	256, 16 * 1024,
+	 probe_jedec,	erase_chip_jedec, write_49fl004},
 	{"Pm49FL004",	PMC_ID,		PMC_49FL004,	512, 64 * 1024,
 	 probe_jedec,	erase_chip_jedec, write_49fl004},
 	{"W29C011",	WINBOND_ID,	W_29C011,	128, 128,
@@ -122,6 +122,22 @@
 	 probe_jedec,	erase_chip_jedec, write_jedec},
 	{"M29F400BT",	ST_ID,		ST_M29F400BT,	512, 64 * 1024,
 	 probe_m29f400bt, erase_m29f400bt, write_linuxbios_m29f400bt},
+	{"M50FLW040A",	ST_ID,		ST_M50FLW040A,	512,	64 * 1024,
+	 probe_jedec,	erase_chip_jedec,	write_jedec},
+	{"M50FLW040B",	ST_ID,		ST_M50FLW040B,	512,	64 * 1024,
+	 probe_jedec,	erase_chip_jedec,	write_jedec},
+	{"M50FLW080A",	ST_ID,		ST_M50FLW080A,	1024,	64 * 1024,
+	 probe_jedec,	erase_chip_jedec,	write_jedec},
+	{"M50FLW080B",	ST_ID,		ST_M50FLW080B,	1024,	64 * 1024,
+	 probe_jedec,	erase_chip_jedec,	write_jedec},
+	{"M50FW080",	ST_ID,		ST_M50FW080,	1024,	64 * 1024,
+	 probe_jedec,	erase_chip_jedec,	write_jedec},
+	{"M50FW016",	ST_ID,		ST_M50FW016,	2048,	64 * 1024,
+	 probe_jedec,	erase_chip_jedec,	write_jedec},
+	{"M50LPW116",	ST_ID,		ST_M50LPW116,	2048,	64 * 1024,
+	 probe_jedec,	erase_chip_jedec,	write_jedec},
+	{"M29W010B",	ST_ID,		ST_M29W010B,	128,	16 * 1024,
+	 probe_jedec,	erase_chip_jedec,	write_jedec},
 	{"M29F040B",	ST_ID, 		ST_M29F040B,	512, 64 * 1024,
 	 probe_29f040b, erase_29f040b,	write_29f040b},
 	{"82802ab",	137,		173,		512, 64 * 1024,