diff options
Diffstat (limited to 'drivers/mtd/onenand/omap2.c')
-rw-r--r-- | drivers/mtd/onenand/omap2.c | 16 |
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 | ||
70 | static const char *part_probes[] = { "cmdlinepart", NULL, }; | ||
71 | |||
72 | static void omap2_onenand_dma_cb(int lch, u16 ch_status, void *data) | 69 | static 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: | |||
786 | err_free_cs: | 780 | err_free_cs: |
787 | gpmc_cs_free(c->gpmc_cs); | 781 | gpmc_cs_free(c->gpmc_cs); |
788 | err_kfree: | 782 | err_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; |