diff --git a/drivers/mtd/chips/cfi_cmdset_0002.c b/drivers/mtd/chips/cfi_cmdset_0002.c
index b861972..8391890 100644
--- a/drivers/mtd/chips/cfi_cmdset_0002.c
+++ b/drivers/mtd/chips/cfi_cmdset_0002.c
@@ -434,8 +434,8 @@ static void cfi_fixup_major_minor(struct cfi_private *cfi,
 static int is_m29ew(struct cfi_private *cfi)
 {
 	if (cfi->mfr == CFI_MFR_INTEL &&
-	    ((cfi->device_type == CFI_DEVICETYPE_X8 && (cfi->id & 0xff) == 0x7e) ||
-	     (cfi->device_type == CFI_DEVICETYPE_X16 && cfi->id == 0x227e)))
+	    (cfi->id == 0x2201 || cfi->id == 0x2301 || cfi->id == 0x2801 ||
+	     cfi->id == 0x4801 || cfi->id == 0x3901))
 		return 1;
 	return 0;
 }
diff --git a/drivers/mtd/chips/cfi_probe.c b/drivers/mtd/chips/cfi_probe.c
index d255352..3d4b42d 100644
--- a/drivers/mtd/chips/cfi_probe.c
+++ b/drivers/mtd/chips/cfi_probe.c
@@ -228,8 +228,8 @@ static int __xipram cfi_chip_setup(struct map_info *map,
 	cfi->mfr = cfi_read_query16(map, base);
 	cfi->id = cfi_read_query16(map, base + ofs_factor);
 
-	/* Get AMD/Spansion extended JEDEC ID */
-	if (cfi->mfr == CFI_MFR_AMD && (cfi->id & 0xff) == 0x7e)
+	/* Get AMD/Spansion (and compatible devices) extended JEDEC ID */
+	if ((cfi->mfr == CFI_MFR_AMD || cfi->mfr == CFI_MFR_INTEL) && (cfi->id & 0xff) == 0x7e)
 		cfi->id = cfi_read_query(map, base + 0xe * ofs_factor) << 8 |
 			  cfi_read_query(map, base + 0xf * ofs_factor);
 
