#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>
 
        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;
        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) {
 
  *
  * @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 {
        int                     chip_offset;
        int                     nr_partitions;
        struct mtd_partition    *partitions;
+       struct nand_oobinfo     *oobinfo;
        int                     chip_delay;
        unsigned int            options;
        void                    *priv;