aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/mmc
diff options
context:
space:
mode:
authorLinus Walleij <linus.walleij@linaro.org>2015-11-25 08:57:57 -0500
committerUlf Hansson <ulf.hansson@linaro.org>2015-12-22 05:32:12 -0500
commit17da678368fac22375f0854c811034e311be23b5 (patch)
tree84b759f780ecf2cdcb2ad5844d80b7fb74f39917 /drivers/mmc
parent6d91439ae2d31c45706802e0a0716e25f9f97563 (diff)
mmc: mvsdio: delete platform data code path
There are no in-kernel users of the MVSDIO platform data method (instantiating from a board file) so just delete this code and make this a DT-only driver. We depend on OF and check that we have an OF node in probe(). Cc: Nicolas Pitre <nico@fluxnic.net> Cc: Andrew Lunn <andrew@lunn.ch> Cc: Sebastian Hesselbarth <sebastian.hesselbarth@gmail.com> Signed-off-by: Linus Walleij <linus.walleij@linaro.org> Acked-by: Nicolas Pitre <nico@linaro.org> Acked-by: Andrew Lunn <andrew@lunn.ch> Signed-off-by: Ulf Hansson <ulf.hansson@linaro.org>
Diffstat (limited to 'drivers/mmc')
-rw-r--r--drivers/mmc/host/Kconfig1
-rw-r--r--drivers/mmc/host/mvsdio.c63
2 files changed, 15 insertions, 49 deletions
diff --git a/drivers/mmc/host/Kconfig b/drivers/mmc/host/Kconfig
index 1dee533634c9..1526b8a10b09 100644
--- a/drivers/mmc/host/Kconfig
+++ b/drivers/mmc/host/Kconfig
@@ -455,6 +455,7 @@ config MMC_TIFM_SD
455config MMC_MVSDIO 455config MMC_MVSDIO
456 tristate "Marvell MMC/SD/SDIO host driver" 456 tristate "Marvell MMC/SD/SDIO host driver"
457 depends on PLAT_ORION 457 depends on PLAT_ORION
458 depends on OF
458 ---help--- 459 ---help---
459 This selects the Marvell SDIO host driver. 460 This selects the Marvell SDIO host driver.
460 SDIO may currently be found on the Kirkwood 88F6281 and 88F6192 461 SDIO may currently be found on the Kirkwood 88F6281 and 88F6192
diff --git a/drivers/mmc/host/mvsdio.c b/drivers/mmc/host/mvsdio.c
index 18c70380ea93..42296e55b9de 100644
--- a/drivers/mmc/host/mvsdio.c
+++ b/drivers/mmc/host/mvsdio.c
@@ -20,8 +20,6 @@
20#include <linux/scatterlist.h> 20#include <linux/scatterlist.h>
21#include <linux/irq.h> 21#include <linux/irq.h>
22#include <linux/clk.h> 22#include <linux/clk.h>
23#include <linux/gpio.h>
24#include <linux/of_gpio.h>
25#include <linux/of_irq.h> 23#include <linux/of_irq.h>
26#include <linux/mmc/host.h> 24#include <linux/mmc/host.h>
27#include <linux/mmc/slot-gpio.h> 25#include <linux/mmc/slot-gpio.h>
@@ -36,12 +34,6 @@
36static int maxfreq; 34static int maxfreq;
37static int nodma; 35static int nodma;
38 36
39struct mvsdio_platform_data {
40 unsigned int clock;
41 int gpio_card_detect;
42 int gpio_write_protect;
43};
44
45struct mvsd_host { 37struct mvsd_host {
46 void __iomem *base; 38 void __iomem *base;
47 struct mmc_request *mrq; 39 struct mmc_request *mrq;
@@ -709,6 +701,10 @@ static int mvsd_probe(struct platform_device *pdev)
709 struct resource *r; 701 struct resource *r;
710 int ret, irq; 702 int ret, irq;
711 703
704 if (!np) {
705 dev_err(&pdev->dev, "no DT node\n");
706 return -ENODEV;
707 }
712 r = platform_get_resource(pdev, IORESOURCE_MEM, 0); 708 r = platform_get_resource(pdev, IORESOURCE_MEM, 0);
713 irq = platform_get_irq(pdev, 0); 709 irq = platform_get_irq(pdev, 0);
714 if (!r || irq < 0) 710 if (!r || irq < 0)
@@ -732,8 +728,12 @@ static int mvsd_probe(struct platform_device *pdev)
732 * fixed rate clock). 728 * fixed rate clock).
733 */ 729 */
734 host->clk = devm_clk_get(&pdev->dev, NULL); 730 host->clk = devm_clk_get(&pdev->dev, NULL);
735 if (!IS_ERR(host->clk)) 731 if (IS_ERR(host->clk)) {
736 clk_prepare_enable(host->clk); 732 dev_err(&pdev->dev, "no clock associated\n");
733 ret = -EINVAL;
734 goto out;
735 }
736 clk_prepare_enable(host->clk);
737 737
738 mmc->ops = &mvsd_ops; 738 mmc->ops = &mvsd_ops;
739 739
@@ -749,45 +749,10 @@ static int mvsd_probe(struct platform_device *pdev)
749 mmc->max_seg_size = mmc->max_blk_size * mmc->max_blk_count; 749 mmc->max_seg_size = mmc->max_blk_size * mmc->max_blk_count;
750 mmc->max_req_size = mmc->max_blk_size * mmc->max_blk_count; 750 mmc->max_req_size = mmc->max_blk_size * mmc->max_blk_count;
751 751
752 if (np) { 752 host->base_clock = clk_get_rate(host->clk) / 2;
753 if (IS_ERR(host->clk)) { 753 ret = mmc_of_parse(mmc);
754 dev_err(&pdev->dev, "DT platforms must have a clock associated\n"); 754 if (ret < 0)
755 ret = -EINVAL; 755 goto out;
756 goto out;
757 }
758
759 host->base_clock = clk_get_rate(host->clk) / 2;
760 ret = mmc_of_parse(mmc);
761 if (ret < 0)
762 goto out;
763 } else {
764 const struct mvsdio_platform_data *mvsd_data;
765
766 mvsd_data = pdev->dev.platform_data;
767 if (!mvsd_data) {
768 ret = -ENXIO;
769 goto out;
770 }
771 mmc->caps = MMC_CAP_4_BIT_DATA | MMC_CAP_SDIO_IRQ |
772 MMC_CAP_SD_HIGHSPEED | MMC_CAP_MMC_HIGHSPEED;
773 host->base_clock = mvsd_data->clock / 2;
774 /* GPIO 0 regarded as invalid for backward compatibility */
775 if (mvsd_data->gpio_card_detect &&
776 gpio_is_valid(mvsd_data->gpio_card_detect)) {
777 ret = mmc_gpio_request_cd(mmc,
778 mvsd_data->gpio_card_detect,
779 0);
780 if (ret)
781 goto out;
782 } else {
783 mmc->caps |= MMC_CAP_NEEDS_POLL;
784 }
785
786 if (mvsd_data->gpio_write_protect &&
787 gpio_is_valid(mvsd_data->gpio_write_protect))
788 mmc_gpio_request_ro(mmc, mvsd_data->gpio_write_protect);
789 }
790
791 if (maxfreq) 756 if (maxfreq)
792 mmc->f_max = maxfreq; 757 mmc->f_max = maxfreq;
793 758