X-Git-Url: https://git.sur5r.net/?a=blobdiff_plain;f=drivers%2Fmtd%2Fnand%2Fnand.c;h=c0e068ab7d5f9c08973961055242a4bb581798cd;hb=3388db2cd72d85717596158131b3e48efe2acfea;hp=70b605f9d2816365bad1be4079268db6ef5d2e8e;hpb=f8306cb94f59ae2ace5bfede189944d329e5abb3;p=u-boot diff --git a/drivers/mtd/nand/nand.c b/drivers/mtd/nand/nand.c index 70b605f9d2..c0e068ab7d 100644 --- a/drivers/mtd/nand/nand.c +++ b/drivers/mtd/nand/nand.c @@ -37,19 +37,37 @@ static struct nand_chip nand_chip[CONFIG_SYS_MAX_NAND_DEVICE]; static ulong base_address[CONFIG_SYS_MAX_NAND_DEVICE] = CONFIG_SYS_NAND_BASE_LIST; static const char default_nand_name[] = "nand"; +static __attribute__((unused)) char dev_name[CONFIG_SYS_MAX_NAND_DEVICE][8]; static void nand_init_chip(struct mtd_info *mtd, struct nand_chip *nand, ulong base_addr) { + int maxchips = CONFIG_SYS_NAND_MAX_CHIPS; + int __attribute__((unused)) i = 0; + + if (maxchips < 1) + maxchips = 1; mtd->priv = nand; nand->IO_ADDR_R = nand->IO_ADDR_W = (void __iomem *)base_addr; if (board_nand_init(nand) == 0) { - if (nand_scan(mtd, 1) == 0) { + if (nand_scan(mtd, maxchips) == 0) { if (!mtd->name) mtd->name = (char *)default_nand_name; +#ifdef CONFIG_NEEDS_MANUAL_RELOC else mtd->name += gd->reloc_off; +#endif + +#ifdef CONFIG_MTD_DEVICE + /* + * Add MTD device so that we can reference it later + * via the mtdcore infrastructure (e.g. ubi). + */ + sprintf(dev_name[i], "nand%d", i); + mtd->name = dev_name[i++]; + add_mtd_device(mtd); +#endif } else mtd->name = NULL; } else {