]> git.sur5r.net Git - u-boot/blobdiff - drivers/mtd/nand/fsmc_nand.c
nand: Embed mtd_info in struct nand_chip
[u-boot] / drivers / mtd / nand / fsmc_nand.c
index e0e9e1ebd03104715c78a483a2cb0cb98fdd45fe..0b8b56ffa14f0707f464b07bcf241be8d482182a 100644 (file)
@@ -409,7 +409,7 @@ int fsmc_nand_switch_ecc(uint32_t eccstrength)
         * Nomadik SoC is currently supporting this fsmc_nand_switch_ecc()
         * function, as it doesn't need to switch to a different ECC layout.
         */
-       mtd = &nand_info[nand_curr_device];
+       mtd = nand_info[nand_curr_device];
        nand = mtd->priv;
 
        /* Setup the ecc configurations again */
@@ -443,7 +443,6 @@ int fsmc_nand_init(struct nand_chip *nand)
 {
        static int chip_nr;
        struct mtd_info *mtd;
-       int i;
        u32 peripid2 = readl(&fsmc_regs_p->peripid2);
 
        fsmc_version = (peripid2 >> FSMC_REVISION_SHFT) &
@@ -480,7 +479,7 @@ int fsmc_nand_init(struct nand_chip *nand)
                (void  __iomem *)CONFIG_SYS_NAND_BASE;
        nand->badblockbits = 7;
 
-       mtd = &nand_info[chip_nr++];
+       mtd = &nand->mtd;
        mtd->priv = nand;
 
        switch (fsmc_version) {
@@ -514,9 +513,8 @@ int fsmc_nand_init(struct nand_chip *nand)
        if (nand_scan_tail(mtd))
                return -ENXIO;
 
-       for (i = 0; i < CONFIG_SYS_MAX_NAND_DEVICE; i++)
-               if (nand_register(i))
-                       return -ENXIO;
+       if (nand_register(chip_nr++, mtd))
+               return -ENXIO;
 
        return 0;
 }