From dbe29e36a4c2775b69b5a63b0ce2bac89c08e691 Mon Sep 17 00:00:00 2001 From: Stefan Roese Date: Fri, 24 Apr 2009 15:59:35 +0200 Subject: [PATCH] mtd: nand/onenand: Register mtd device upon device scanning With this patch the NAND and OneNAND devices are registered in the MTD subsystem and can then be referenced by the mtdcore code (e.g. get_mtd_device_nm()). This is needed for the new "ubi part" command syntax without the flash type parameter (nor|nand|onenand). Signed-off-by: Stefan Roese --- drivers/mtd/nand/nand.c | 12 ++++++++++++ drivers/mtd/onenand/onenand_uboot.c | 10 ++++++++++ 2 files changed, 22 insertions(+) diff --git a/drivers/mtd/nand/nand.c b/drivers/mtd/nand/nand.c index 9d83794974..d3691151f0 100644 --- a/drivers/mtd/nand/nand.c +++ b/drivers/mtd/nand/nand.c @@ -37,11 +37,13 @@ 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; @@ -54,6 +56,16 @@ static void nand_init_chip(struct mtd_info *mtd, struct nand_chip *nand, mtd->name = (char *)default_nand_name; else mtd->name += gd->reloc_off; + +#ifdef CONFIG_MTD_PARTITIONS + /* + * 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 { diff --git a/drivers/mtd/onenand/onenand_uboot.c b/drivers/mtd/onenand/onenand_uboot.c index 4541b22177..a95b922a8f 100644 --- a/drivers/mtd/onenand/onenand_uboot.c +++ b/drivers/mtd/onenand/onenand_uboot.c @@ -20,6 +20,7 @@ struct mtd_info onenand_mtd; struct onenand_chip onenand_chip; +static __attribute__((unused)) char dev_name[] = "onenand0"; void onenand_init(void) { @@ -41,4 +42,13 @@ void onenand_init(void) puts("OneNAND: "); print_size(onenand_mtd.size, "\n"); + +#ifdef CONFIG_MTD_PARTITIONS + /* + * Add MTD device so that we can reference it later + * via the mtdcore infrastructure (e.g. ubi). + */ + onenand_mtd.name = dev_name; + add_mtd_device(&onenand_mtd); +#endif }