[MTD] NAND Fix platform structure and NDFC driver
authorThomas Gleixner <tglx@cruncher.tec.linutronix.de>
Sat, 27 May 2006 18:05:26 +0000 (20:05 +0200)
committerThomas Gleixner <tglx@cruncher.tec.linutronix.de>
Mon, 29 May 2006 13:06:49 +0000 (15:06 +0200)
The platform structure was lacking an oobinfo field.
The NDFC driver had some remains from another tree.

Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
drivers/mtd/nand/ndfc.c
include/linux/mtd/nand.h
include/linux/mtd/ndfc.h

index 4d70dd16cf5d00976e0c6a73fd9bd9a6c82bf173..5790d630faed42b7aad696af00f5a32bb20cb566 100644 (file)
@@ -20,7 +20,6 @@
 #include <linux/mtd/nand_ecc.h>
 #include <linux/mtd/partitions.h>
 #include <linux/mtd/ndfc.h>
-#include <linux/mtd/ubi.h>
 #include <linux/mtd/mtd.h>
 #include <linux/platform_device.h>
 
@@ -169,14 +168,13 @@ static void ndfc_chip_init(struct ndfc_nand_mtd *mtd)
        chip->ecc.mode = NAND_ECC_HW;
        chip->ecc.size = 256;
        chip->ecc.bytes = 3;
-       chip->autooob = mtd->pl_chip->autooob;
+       chip->autooob = mtd->pl_chip->oobinfo;
        mtd->mtd.priv = chip;
        mtd->mtd.owner = THIS_MODULE;
 }
 
 static int ndfc_chip_probe(struct platform_device *pdev)
 {
-       int rc;
        struct platform_nand_chip *nc = pdev->dev.platform_data;
        struct ndfc_chip_settings *settings = nc->priv;
        struct ndfc_controller *ndfc = &ndfc_ctrl;
@@ -235,7 +233,7 @@ static int ndfc_nand_probe(struct platform_device *pdev)
        struct ndfc_controller_settings *settings = nc->priv;
        struct resource *res = pdev->resource;
        struct ndfc_controller *ndfc = &ndfc_ctrl;
-       unsigned long long phys = NDFC_PHYSADDR_OFFS | res->start;
+       unsigned long long phys = setting->erpn | res->start;
 
        ndfc->ndfcbase = ioremap64(phys, res->end - res->start + 1);
        if (!ndfc->ndfcbase) {
index 1a749ba6130fedd6e1e24d2db56079ab49e4083f..fd46bcf5228129194b72e63083187253f1986c06 100644 (file)
@@ -518,10 +518,11 @@ extern int nand_do_read(struct mtd_info *mtd, loff_t from, size_t len,
  *
  * @nr_chips:          max. number of chips to scan for
  * @chip_offs:         chip number offset
- * @nr_partitions:     number of partitions pointed to be partitoons (or zero)
+ * @nr_partitions:     number of partitions pointed to by partitions (or zero)
  * @partitions:                mtd partition list
  * @chip_delay:                R/B delay value in us
  * @options:           Option flags, e.g. 16bit buswidth
+ * @oobinfo:           oob info structure (ecc placement)
  * @priv:              hardware controller specific settings
  */
 struct platform_nand_chip {
@@ -529,6 +530,7 @@ struct platform_nand_chip {
        int                     chip_offset;
        int                     nr_partitions;
        struct mtd_partition    *partitions;
+       struct nand_oobinfo     *oobinfo;
        int                     chip_delay;
        unsigned int            options;
        void                    *priv;
index 31d61f07d7689e7efdc6f1dc4666225d15c6f1bf..d0558a9826287e6560491c98b22253b98d44b9a2 100644 (file)
@@ -56,7 +56,8 @@
 #define NDFC_MAX_BANKS         4
 
 struct ndfc_controller_settings {
-       uint32_t                ccr_settings;
+       uint32_t        ccr_settings;
+       uint64_t        ndfc_erpn;
 };
 
 struct ndfc_chip_settings {