aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/mtd/nand
diff options
context:
space:
mode:
authorDmitry Eremin-Solenikov <dbaryshkov@gmail.com>2011-06-02 10:00:57 -0400
committerArtem Bityutskiy <artem.bityutskiy@intel.com>2011-09-11 08:02:09 -0400
commit009c840770fda0165302e9853192a7f0677098b3 (patch)
treec05f23bf47a9453303bb147b58b92fac4e4110ef /drivers/mtd/nand
parentc9dd375f553e6ff1862401decb1b585929285b56 (diff)
mtd: plat_nand.c: use mtd_device_parse_register
Replace custom invocations of parse_mtd_partitions and mtd_device_register with common mtd_device_parse_register call. This would bring: standard handling of all errors, fallback to default partitions, etc. Signed-off-by: Dmitry Eremin-Solenikov <dbaryshkov@gmail.com> Signed-off-by: Artem Bityutskiy <Artem.Bityutskiy@nokia.com>
Diffstat (limited to 'drivers/mtd/nand')
-rw-r--r--drivers/mtd/nand/plat_nand.c22
1 files changed, 3 insertions, 19 deletions
diff --git a/drivers/mtd/nand/plat_nand.c b/drivers/mtd/nand/plat_nand.c
index 746a723b4933..ea8e1234e0e2 100644
--- a/drivers/mtd/nand/plat_nand.c
+++ b/drivers/mtd/nand/plat_nand.c
@@ -21,8 +21,6 @@ struct plat_nand_data {
21 struct nand_chip chip; 21 struct nand_chip chip;
22 struct mtd_info mtd; 22 struct mtd_info mtd;
23 void __iomem *io_base; 23 void __iomem *io_base;
24 int nr_parts;
25 struct mtd_partition *parts;
26}; 24};
27 25
28/* 26/*
@@ -100,21 +98,9 @@ static int __devinit plat_nand_probe(struct platform_device *pdev)
100 goto out; 98 goto out;
101 } 99 }
102 100
103 if (pdata->chip.part_probe_types) { 101 err = mtd_device_parse_register(&data->mtd,
104 err = parse_mtd_partitions(&data->mtd, 102 pdata->chip.part_probe_types, 0,
105 pdata->chip.part_probe_types, 103 pdata->chip.partitions, pdata->chip.nr_partitions);
106 &data->parts, 0);
107 if (err > 0) {
108 mtd_device_register(&data->mtd, data->parts, err);
109 return 0;
110 }
111 }
112 if (pdata->chip.partitions) {
113 data->parts = pdata->chip.partitions;
114 err = mtd_device_register(&data->mtd, data->parts,
115 pdata->chip.nr_partitions);
116 } else
117 err = mtd_device_register(&data->mtd, NULL, 0);
118 104
119 if (!err) 105 if (!err)
120 return err; 106 return err;
@@ -144,8 +130,6 @@ static int __devexit plat_nand_remove(struct platform_device *pdev)
144 res = platform_get_resource(pdev, IORESOURCE_MEM, 0); 130 res = platform_get_resource(pdev, IORESOURCE_MEM, 0);
145 131
146 nand_release(&data->mtd); 132 nand_release(&data->mtd);
147 if (data->parts && data->parts != pdata->chip.partitions)
148 kfree(data->parts);
149 if (pdata->ctrl.remove) 133 if (pdata->ctrl.remove)
150 pdata->ctrl.remove(pdev); 134 pdata->ctrl.remove(pdev);
151 iounmap(data->io_base); 135 iounmap(data->io_base);