[kernel] add a chip_fixup function to the plat_nand driver on 2.6.23 as well (closes...
[openwrt/svn-archive/archive.git] / target / linux / generic-2.6 / patches-2.6.23 / 080-mtd_plat_nand_chip_fixup.patch
diff --git a/target/linux/generic-2.6/patches-2.6.23/080-mtd_plat_nand_chip_fixup.patch b/target/linux/generic-2.6/patches-2.6.23/080-mtd_plat_nand_chip_fixup.patch
new file mode 100644 (file)
index 0000000..4653898
--- /dev/null
@@ -0,0 +1,32 @@
+--- a/include/linux/mtd/nand.h
++++ b/include/linux/mtd/nand.h
+@@ -572,6 +572,7 @@
+       int                     chip_delay;
+       unsigned int            options;
+       const char              **part_probe_types;
++      int                     (*chip_fixup)(struct mtd_info *mtd);
+       void                    *priv;
+ };
+--- a/drivers/mtd/nand/plat_nand.c
++++ b/drivers/mtd/nand/plat_nand.c
+@@ -70,7 +70,18 @@
+       platform_set_drvdata(pdev, data);
+       /* Scan to find existance of the device */
+-      if (nand_scan(&data->mtd, 1)) {
++      if (nand_scan_ident(&data->mtd, 1)) {
++              res = -ENXIO;
++              goto out;
++      }
++
++      if (pdata->chip.chip_fixup) {
++              res = pdata->chip.chip_fixup(&data->mtd);
++              if (res)
++                      goto out;
++      }
++
++      if (nand_scan_tail(&data->mtd)) {
+               res = -ENXIO;
+               goto out;
+       }