aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/mtd/onenand/omap2.c
diff options
context:
space:
mode:
authorLinus Torvalds <torvalds@linux-foundation.org>2011-11-07 12:11:16 -0500
committerLinus Torvalds <torvalds@linux-foundation.org>2011-11-07 12:11:16 -0500
commite0d65113a70f1dc514e625cc4e7a7485a4bf72df (patch)
tree7320a130dc304623f5cf4b5dd8f67fb1776225ca /drivers/mtd/onenand/omap2.c
parentcf5e15fbd72c13977720aa15b7b7e00e1d8fd8f2 (diff)
parent48e546b7f281f251893baa40769581fd15f085fb (diff)
Merge git://git.infradead.org/mtd-2.6
* git://git.infradead.org/mtd-2.6: (226 commits) mtd: tests: annotate as DANGEROUS in Kconfig mtd: tests: don't use mtd0 as a default mtd: clean up usage of MTD_DOCPROBE_ADDRESS jffs2: add compr=lzo and compr=zlib options jffs2: implement mount option parsing and compression overriding mtd: nand: initialize ops.mode mtd: provide an alias for the redboot module name mtd: m25p80: don't probe device which has status of 'disabled' mtd: nand_h1900 never worked mtd: Add DiskOnChip G3 support mtd: m25p80: add EON flash EN25Q32B into spi flash id table mtd: mark block device queue as non-rotational mtd: r852: make r852_pm_ops static mtd: m25p80: add support for at25df321a spi data flash mtd: mxc_nand: preset_v1_v2: unlock all NAND flash blocks mtd: nand: switch `check_pattern()' to standard `memcmp()' mtd: nand: invalidate cache on unaligned reads mtd: nand: do not scan bad blocks with NAND_BBT_NO_OOB set mtd: nand: wait to set BBT version mtd: nand: scrub BBT on ECC errors ... Fix up trivial conflicts: - arch/arm/mach-at91/board-usb-a9260.c Merged into board-usb-a926x.c - drivers/mtd/maps/lantiq-flash.c add_mtd_partitions -> mtd_device_register vs changed to use mtd_device_parse_register.
Diffstat (limited to 'drivers/mtd/onenand/omap2.c')
-rw-r--r--drivers/mtd/onenand/omap2.c16
1 files changed, 4 insertions, 12 deletions
diff --git a/drivers/mtd/onenand/omap2.c b/drivers/mtd/onenand/omap2.c
index 6a1d6d9a2df9..7e9ea6852b67 100644
--- a/drivers/mtd/onenand/omap2.c
+++ b/drivers/mtd/onenand/omap2.c
@@ -57,7 +57,6 @@ struct omap2_onenand {
57 unsigned long phys_base; 57 unsigned long phys_base;
58 int gpio_irq; 58 int gpio_irq;
59 struct mtd_info mtd; 59 struct mtd_info mtd;
60 struct mtd_partition *parts;
61 struct onenand_chip onenand; 60 struct onenand_chip onenand;
62 struct completion irq_done; 61 struct completion irq_done;
63 struct completion dma_done; 62 struct completion dma_done;
@@ -67,8 +66,6 @@ struct omap2_onenand {
67 struct regulator *regulator; 66 struct regulator *regulator;
68}; 67};
69 68
70static const char *part_probes[] = { "cmdlinepart", NULL, };
71
72static void omap2_onenand_dma_cb(int lch, u16 ch_status, void *data) 69static void omap2_onenand_dma_cb(int lch, u16 ch_status, void *data)
73{ 70{
74 struct omap2_onenand *c = data; 71 struct omap2_onenand *c = data;
@@ -741,6 +738,7 @@ static int __devinit omap2_onenand_probe(struct platform_device *pdev)
741 c->regulator = regulator_get(&pdev->dev, "vonenand"); 738 c->regulator = regulator_get(&pdev->dev, "vonenand");
742 if (IS_ERR(c->regulator)) { 739 if (IS_ERR(c->regulator)) {
743 dev_err(&pdev->dev, "Failed to get regulator\n"); 740 dev_err(&pdev->dev, "Failed to get regulator\n");
741 r = PTR_ERR(c->regulator);
744 goto err_release_dma; 742 goto err_release_dma;
745 } 743 }
746 c->onenand.enable = omap2_onenand_enable; 744 c->onenand.enable = omap2_onenand_enable;
@@ -753,13 +751,9 @@ static int __devinit omap2_onenand_probe(struct platform_device *pdev)
753 if ((r = onenand_scan(&c->mtd, 1)) < 0) 751 if ((r = onenand_scan(&c->mtd, 1)) < 0)
754 goto err_release_regulator; 752 goto err_release_regulator;
755 753
756 r = parse_mtd_partitions(&c->mtd, part_probes, &c->parts, 0); 754 r = mtd_device_parse_register(&c->mtd, NULL, 0,
757 if (r > 0) 755 pdata ? pdata->parts : NULL,
758 r = mtd_device_register(&c->mtd, c->parts, r); 756 pdata ? pdata->nr_parts : 0);
759 else if (pdata->parts != NULL)
760 r = mtd_device_register(&c->mtd, pdata->parts, pdata->nr_parts);
761 else
762 r = mtd_device_register(&c->mtd, NULL, 0);
763 if (r) 757 if (r)
764 goto err_release_onenand; 758 goto err_release_onenand;
765 759
@@ -786,7 +780,6 @@ err_release_mem_region:
786err_free_cs: 780err_free_cs:
787 gpmc_cs_free(c->gpmc_cs); 781 gpmc_cs_free(c->gpmc_cs);
788err_kfree: 782err_kfree:
789 kfree(c->parts);
790 kfree(c); 783 kfree(c);
791 784
792 return r; 785 return r;
@@ -809,7 +802,6 @@ static int __devexit omap2_onenand_remove(struct platform_device *pdev)
809 iounmap(c->onenand.base); 802 iounmap(c->onenand.base);
810 release_mem_region(c->phys_base, ONENAND_IO_SIZE); 803 release_mem_region(c->phys_base, ONENAND_IO_SIZE);
811 gpmc_cs_free(c->gpmc_cs); 804 gpmc_cs_free(c->gpmc_cs);
812 kfree(c->parts);
813 kfree(c); 805 kfree(c);
814 806
815 return 0; 807 return 0;