diff options
Diffstat (limited to 'drivers/mtd/nand/davinci_nand.c')
-rw-r--r-- | drivers/mtd/nand/davinci_nand.c | 39 |
1 files changed, 5 insertions, 34 deletions
diff --git a/drivers/mtd/nand/davinci_nand.c b/drivers/mtd/nand/davinci_nand.c index 1f34951ae1a7..c153e1f77f90 100644 --- a/drivers/mtd/nand/davinci_nand.c +++ b/drivers/mtd/nand/davinci_nand.c | |||
@@ -57,7 +57,6 @@ struct davinci_nand_info { | |||
57 | 57 | ||
58 | struct device *dev; | 58 | struct device *dev; |
59 | struct clk *clk; | 59 | struct clk *clk; |
60 | bool partitioned; | ||
61 | 60 | ||
62 | bool is_readmode; | 61 | bool is_readmode; |
63 | 62 | ||
@@ -530,8 +529,6 @@ static int __init nand_davinci_probe(struct platform_device *pdev) | |||
530 | int ret; | 529 | int ret; |
531 | uint32_t val; | 530 | uint32_t val; |
532 | nand_ecc_modes_t ecc_mode; | 531 | nand_ecc_modes_t ecc_mode; |
533 | struct mtd_partition *mtd_parts = NULL; | ||
534 | int mtd_parts_nb = 0; | ||
535 | 532 | ||
536 | /* insist on board-specific configuration */ | 533 | /* insist on board-specific configuration */ |
537 | if (!pdata) | 534 | if (!pdata) |
@@ -581,7 +578,9 @@ static int __init nand_davinci_probe(struct platform_device *pdev) | |||
581 | info->chip.chip_delay = 0; | 578 | info->chip.chip_delay = 0; |
582 | info->chip.select_chip = nand_davinci_select_chip; | 579 | info->chip.select_chip = nand_davinci_select_chip; |
583 | 580 | ||
584 | /* options such as NAND_USE_FLASH_BBT or 16-bit widths */ | 581 | /* options such as NAND_BBT_USE_FLASH */ |
582 | info->chip.bbt_options = pdata->bbt_options; | ||
583 | /* options such as 16-bit widths */ | ||
585 | info->chip.options = pdata->options; | 584 | info->chip.options = pdata->options; |
586 | info->chip.bbt_td = pdata->bbt_td; | 585 | info->chip.bbt_td = pdata->bbt_td; |
587 | info->chip.bbt_md = pdata->bbt_md; | 586 | info->chip.bbt_md = pdata->bbt_md; |
@@ -751,33 +750,8 @@ syndrome_done: | |||
751 | if (ret < 0) | 750 | if (ret < 0) |
752 | goto err_scan; | 751 | goto err_scan; |
753 | 752 | ||
754 | if (mtd_has_cmdlinepart()) { | 753 | ret = mtd_device_parse_register(&info->mtd, NULL, 0, |
755 | static const char *probes[] __initconst = { | 754 | pdata->parts, pdata->nr_parts); |
756 | "cmdlinepart", NULL | ||
757 | }; | ||
758 | |||
759 | mtd_parts_nb = parse_mtd_partitions(&info->mtd, probes, | ||
760 | &mtd_parts, 0); | ||
761 | } | ||
762 | |||
763 | if (mtd_parts_nb <= 0) { | ||
764 | mtd_parts = pdata->parts; | ||
765 | mtd_parts_nb = pdata->nr_parts; | ||
766 | } | ||
767 | |||
768 | /* Register any partitions */ | ||
769 | if (mtd_parts_nb > 0) { | ||
770 | ret = mtd_device_register(&info->mtd, mtd_parts, | ||
771 | mtd_parts_nb); | ||
772 | if (ret == 0) | ||
773 | info->partitioned = true; | ||
774 | } | ||
775 | |||
776 | /* If there's no partition info, just package the whole chip | ||
777 | * as a single MTD device. | ||
778 | */ | ||
779 | if (!info->partitioned) | ||
780 | ret = mtd_device_register(&info->mtd, NULL, 0) ? -ENODEV : 0; | ||
781 | 755 | ||
782 | if (ret < 0) | 756 | if (ret < 0) |
783 | goto err_scan; | 757 | goto err_scan; |
@@ -816,9 +790,6 @@ err_nomem: | |||
816 | static int __exit nand_davinci_remove(struct platform_device *pdev) | 790 | static int __exit nand_davinci_remove(struct platform_device *pdev) |
817 | { | 791 | { |
818 | struct davinci_nand_info *info = platform_get_drvdata(pdev); | 792 | struct davinci_nand_info *info = platform_get_drvdata(pdev); |
819 | int status; | ||
820 | |||
821 | status = mtd_device_unregister(&info->mtd); | ||
822 | 793 | ||
823 | spin_lock_irq(&davinci_nand_lock); | 794 | spin_lock_irq(&davinci_nand_lock); |
824 | if (info->chip.ecc.mode == NAND_ECC_HW_SYNDROME) | 795 | if (info->chip.ecc.mode == NAND_ECC_HW_SYNDROME) |