diff --git a/flash.h b/flash.h
index ec28064f53f5b79caa0dcd5dadf8d4d9ed724fce..d8a86dd05691fff91787dac251274f9d231e3f5a 100644
--- a/flash.h
+++ b/flash.h
@@ -59,16 +59,16 @@ extern struct flashchip flashchips[];
  * All SPI parts have 16-bit device IDs.
  */
 
-#define ALLIANCE_ID		0x52	/* Alliance */
+#define ALLIANCE_ID		0x52	/* Alliance Semiconductor */
 
 #define AMD_ID			0x01	/* AMD */
 #define AM_29F040B		0xA4
 #define AM_29LV040B		0x4F
 #define AM_29F016D		0xAD
 
-#define AMIC_ID			0x37	/* AMIC */
+#define AMIC_ID			0x7F37	/* AMIC */
 
-#define ASD_ID			0x25	/* ASD */
+#define ASD_ID			0x25	/* ASD, not listed in JEP106W */
 #define ASD_AE49F2008		0x52
 
 #define ATMEL_ID		0x1F	/* Atmel */
@@ -79,14 +79,14 @@ extern struct flashchip flashchips[];
 
 #define CATALYST_ID		0x31	/* Catalyst */
 
-#define EMST_ID			0x8C	/* EMST / EFST */
+#define EMST_ID			0x8C	/* EMST / EFST Elite Flash Storage*/
 #define EMST_F49B002UA		0x00
 
 /*
  * EN25 chips are SPI, first byte of device ID is memory type,
  * second byte of device ID is log(bitsize)-9.
  */
-#define EON_ID			0x1C	/* EON */
+#define EON_ID			0x1C	/* EON Silicon Devices */
 #define EN_25B05		0x2010	/* 2^19 kbit or 2^16 kByte */
 #define EN_25B10		0x2011
 #define EN_25B20		0x2012
@@ -96,17 +96,24 @@ extern struct flashchip flashchips[];
 #define EN_25B32		0x2016
 
 #define FUJITSU_ID		0x04	/* Fujitsu */
-#define MBM29F400TC		0x23
+/* MBM29F400TC_STRANGE has a value not mentioned in the data sheet and we
+ * try to read it from a location not mentioned in the data sheet.
+ */
+#define MBM29F400TC_STRANGE	0x23
+#define MBM29F400BC		0x7B
+#define MBM29F400TC		0x77
 
 #define HYUNDAI_ID		0xAD	/* Hyundai */
 
-#define IMT_ID			0x7F	/* IMT */
+#define IMT_ID			0x7F1F	/* Integrated Memory Technologies */
+#define IM_29F004B		0xAE
+#define IM_29F004T		0xAF
 
 #define INTEL_ID		0x89	/* Intel */
 
-#define ISSI_ID			0xD5	/* ISSI */
+#define ISSI_ID			0xD5	/* ISSI Integrated Silicon Solutions */
 
-#define MSYSTEMS_ID		0x156F	/* M-Systems */
+#define MSYSTEMS_ID		0x156F	/* M-Systems, not listed in JEP106W */
 #define MSYSTEMS_MD2200		0xDB
 #define MSYSTEMS_MD2800		0x30	/* hmm -- both 0x30 */
 #define MSYSTEMS_MD2802		0x30	/* hmm -- both 0x30 */
@@ -128,6 +135,9 @@ extern struct flashchip flashchips[];
 #define MX_25L3235D		0x2416
 #define MX_29F002		0xB0
 
+/* Programmable Micro Corp is listed in JEP106W in bank 2, so it should have
+ * a 0x7F continuation code prefix.
+ */
 #define PMC_ID			0x9D	/* PMC */
 #define PMC_49FL002		0x6D
 #define PMC_49FL004		0x6E
@@ -171,7 +181,7 @@ extern struct flashchip flashchips[];
  * ST25P chips are SPI, first byte of device ID is memory type, second
  * byte of device ID is related to log(bitsize) at least for some chips.
  */
-#define ST_ID			0x20	/* ST */
+#define ST_ID			0x20	/* ST / SGS/Thomson */
 #define ST_M25P05A		0x2010
 #define ST_M25P10A		0x2011
 #define ST_M25P20		0x2012
diff --git a/flashchips.c b/flashchips.c
index 0f81b4547ae15faed3aa89c9ac16108ae25833b6..2bd039d72596e9c132a99cab5845c8f9ebf6f8fb 100644
--- a/flashchips.c
+++ b/flashchips.c
@@ -42,7 +42,7 @@ struct flashchip flashchips[] = {
 	 probe_jedec,	erase_chip_jedec, write_jedec},
 	{"At49F002(N)T",ATMEL_ID,	AT_49F002NT,	256, 256,
 	 probe_jedec,	erase_chip_jedec, write_jedec},
-	{"MBM29F400TC",	FUJITSU_ID,	MBM29F400TC,	512, 64 * 1024,
+	{"MBM29F400TC",	FUJITSU_ID,	MBM29F400TC_STRANGE,	512, 64 * 1024,
 	 probe_m29f400bt, erase_m29f400bt, write_linuxbios_m29f400bt},
 	{"MX29F002",	MX_ID,		MX_29F002,	256, 64 * 1024,
 	 probe_29f002,	erase_29f002, 	write_29f002},
diff --git a/m29f400bt.c b/m29f400bt.c
index 40b219cadcd602f5d4549de0773666caced7897b..7d8539f5cdd504b9eb8486cad5c397b65958a0fc 100644
--- a/m29f400bt.c
+++ b/m29f400bt.c
@@ -64,6 +64,9 @@ int probe_m29f400bt(struct flashchip *flash)
 	myusec_delay(10);
 
 	id1 = *(volatile uint8_t *)bios;
+	/* The data sheet says id2 is at (bios + 0x01) and id2 listed in
+	 * flash.h does not match. It should be possible to use JEDEC probe.
+	 */
 	id2 = *(volatile uint8_t *)(bios + 0x02);
 
 	*(volatile uint8_t *)(bios + 0xAAA) = 0xAA;