patch-2.4.21 linux-2.4.21/drivers/mtd/chips/gen_probe.c
Next file: linux-2.4.21/drivers/mtd/chips/jedec.c
Previous file: linux-2.4.21/drivers/mtd/chips/chipreg.c
Back to the patch index
Back to the overall index
- Lines: 84
- Date:
2003-06-13 07:51:34.000000000 -0700
- Orig file:
linux-2.4.20/drivers/mtd/chips/gen_probe.c
- Orig date:
2001-10-04 15:14:59.000000000 -0700
diff -urN linux-2.4.20/drivers/mtd/chips/gen_probe.c linux-2.4.21/drivers/mtd/chips/gen_probe.c
@@ -2,7 +2,7 @@
* Routines common to all CFI-type probes.
* (C) 2001, 2001 Red Hat, Inc.
* GPL'd
- * $Id: gen_probe.c,v 1.5 2001/10/02 15:05:12 dwmw2 Exp $
+ * $Id: gen_probe.c,v 1.9 2002/09/05 05:15:32 acurtis Exp $
*/
#include <linux/kernel.h>
@@ -38,7 +38,7 @@
if (mtd)
return mtd;
- printk(KERN_WARNING"cfi_probe: No supported Vendor Command Set found\n");
+ printk(KERN_WARNING"gen_probe: No supported Vendor Command Set found\n");
kfree(cfi->cfiq);
kfree(cfi);
@@ -106,6 +106,12 @@
* Now probe for other chips, checking sensibly for aliases while
* we're at it. The new_chip probe above should have let the first
* chip in read mode.
+ *
+ * NOTE: Here, we're checking if there is room for another chip
+ * the same size within the mapping. Therefore,
+ * base + chipsize <= map->size is the correct thing to do,
+ * because, base + chipsize would be the _first_ byte of the
+ * next chip, not the one we're currently pondering.
*/
for (base = (1<<cfi.chipshift); base + (1<<cfi.chipshift) <= map->size;
@@ -224,6 +230,41 @@
break;
#endif /* CFIDEV_BUSWIDTH_4 */
+#ifdef CFIDEV_BUSWIDTH_8
+ case CFIDEV_BUSWIDTH_8:
+#if defined(CFIDEV_INTERLEAVE_2) && defined(SOMEONE_ACTUALLY_MAKES_THESE)
+ cfi->interleave = CFIDEV_INTERLEAVE_2;
+
+ cfi->device_type = CFI_DEVICETYPE_X32;
+ if (cp->probe_chip(map, 0, NULL, cfi))
+ return 1;
+#endif /* CFIDEV_INTERLEAVE_2 */
+#ifdef CFIDEV_INTERLEAVE_4
+ cfi->interleave = CFIDEV_INTERLEAVE_4;
+
+#ifdef SOMEONE_ACTUALLY_MAKES_THESE
+ cfi->device_type = CFI_DEVICETYPE_X32;
+ if (cp->probe_chip(map, 0, NULL, cfi))
+ return 1;
+#endif
+ cfi->device_type = CFI_DEVICETYPE_X16;
+ if (cp->probe_chip(map, 0, NULL, cfi))
+ return 1;
+#endif /* CFIDEV_INTERLEAVE_4 */
+#ifdef CFIDEV_INTERLEAVE_8
+ cfi->interleave = CFIDEV_INTERLEAVE_8;
+
+ cfi->device_type = CFI_DEVICETYPE_X16;
+ if (cp->probe_chip(map, 0, NULL, cfi))
+ return 1;
+
+ cfi->device_type = CFI_DEVICETYPE_X8;
+ if (cp->probe_chip(map, 0, NULL, cfi))
+ return 1;
+#endif /* CFIDEV_INTERLEAVE_8 */
+ break;
+#endif /* CFIDEV_BUSWIDTH_8 */
+
default:
printk(KERN_WARNING "genprobe_new_chip called with unsupported buswidth %d\n", map->buswidth);
return 0;
@@ -289,6 +330,10 @@
case 0x0002:
return cfi_cmdset_0002(map, primary);
#endif
+#ifdef CONFIG_MTD_CFI_STAA
+ case 0x0020:
+ return cfi_cmdset_0020(map, primary);
+#endif
}
return cfi_cmdset_unknown(map, primary);
FUNET's LINUX-ADM group, linux-adm@nic.funet.fi
TCL-scripts by Sam Shen (who was at: slshen@lbl.gov)