[RFC PATCH 9/9] nand/denali: support MTD partitioning

Jamie Iles jamie at jamieiles.com
Fri May 6 10:29:03 EDT 2011


If CONFIG_MTD_PARTITION is enabled then take the partitions from the
platform data.

Cc: David Woodhouse <dwmw2 at infradead.org>
Cc: Chuanxiao Dong <chuanxiao.dong at intel.com>
Signed-off-by: Jamie Iles <jamie at jamieiles.com>
---
 drivers/mtd/nand/denali.c            |    8 ++++++++
 include/linux/platform_data/denali.h |    6 +++++-
 2 files changed, 13 insertions(+), 1 deletions(-)

diff --git a/drivers/mtd/nand/denali.c b/drivers/mtd/nand/denali.c
index c79009f..ae954de 100644
--- a/drivers/mtd/nand/denali.c
+++ b/drivers/mtd/nand/denali.c
@@ -23,6 +23,7 @@
 #include <linux/mutex.h>
 #include <linux/slab.h>
 #include <linux/mtd/mtd.h>
+#include <linux/mtd/partitions.h>
 #include <linux/module.h>
 #include <linux/platform_data/denali.h>
 
@@ -1563,7 +1564,14 @@ int denali_init(struct denali_nand_info *denali)
 		goto failed_req_irq;
 	}
 
+#ifdef CONFIG_MTD_PARTITIONS
+	if (pdata && pdata->parts) {
+		ret = add_mtd_partitions(&denali->mtd, pdata->parts,
+					 pdata->nr_parts);
+	} else
+#endif /* CONFIG_MTD_PARTITIONS */
 	ret = add_mtd_device(&denali->mtd);
+
 	if (ret) {
 		dev_err(denali->dev, "failed to register MTD: %d\n", ret);
 		goto failed_req_irq;
diff --git a/include/linux/platform_data/denali.h b/include/linux/platform_data/denali.h
index cfdb775..e9e415b 100644
--- a/include/linux/platform_data/denali.h
+++ b/include/linux/platform_data/denali.h
@@ -14,8 +14,12 @@
 #ifndef __DENALI_PDATA_H__
 #define __DENALI_PDATA_H__
 
+struct mtd_partition;
+
 struct denali_nand_pdata {
-	int	nr_ecc_bits;
+	int				nr_ecc_bits;
+	const struct mtd_partition	*parts;
+	unsigned int			nr_parts;
 };
 
 #endif /* __DENALI_PDATA_H__ */
-- 
1.7.4.4




More information about the linux-mtd mailing list