Commit 17da6783 authored by Linus Walleij's avatar Linus Walleij Committed by Ulf Hansson

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: default avatarLinus Walleij <linus.walleij@linaro.org>
Acked-by: default avatarNicolas Pitre <nico@linaro.org>
Acked-by: default avatarAndrew Lunn <andrew@lunn.ch>
Signed-off-by: default avatarUlf Hansson <ulf.hansson@linaro.org>
parent 6d91439a
...@@ -455,6 +455,7 @@ config MMC_TIFM_SD ...@@ -455,6 +455,7 @@ config MMC_TIFM_SD
config MMC_MVSDIO config MMC_MVSDIO
tristate "Marvell MMC/SD/SDIO host driver" tristate "Marvell MMC/SD/SDIO host driver"
depends on PLAT_ORION depends on PLAT_ORION
depends on OF
---help--- ---help---
This selects the Marvell SDIO host driver. This selects the Marvell SDIO host driver.
SDIO may currently be found on the Kirkwood 88F6281 and 88F6192 SDIO may currently be found on the Kirkwood 88F6281 and 88F6192
......
...@@ -20,8 +20,6 @@ ...@@ -20,8 +20,6 @@
#include <linux/scatterlist.h> #include <linux/scatterlist.h>
#include <linux/irq.h> #include <linux/irq.h>
#include <linux/clk.h> #include <linux/clk.h>
#include <linux/gpio.h>
#include <linux/of_gpio.h>
#include <linux/of_irq.h> #include <linux/of_irq.h>
#include <linux/mmc/host.h> #include <linux/mmc/host.h>
#include <linux/mmc/slot-gpio.h> #include <linux/mmc/slot-gpio.h>
...@@ -36,12 +34,6 @@ ...@@ -36,12 +34,6 @@
static int maxfreq; static int maxfreq;
static int nodma; static int nodma;
struct mvsdio_platform_data {
unsigned int clock;
int gpio_card_detect;
int gpio_write_protect;
};
struct mvsd_host { struct mvsd_host {
void __iomem *base; void __iomem *base;
struct mmc_request *mrq; struct mmc_request *mrq;
...@@ -709,6 +701,10 @@ static int mvsd_probe(struct platform_device *pdev) ...@@ -709,6 +701,10 @@ static int mvsd_probe(struct platform_device *pdev)
struct resource *r; struct resource *r;
int ret, irq; int ret, irq;
if (!np) {
dev_err(&pdev->dev, "no DT node\n");
return -ENODEV;
}
r = platform_get_resource(pdev, IORESOURCE_MEM, 0); r = platform_get_resource(pdev, IORESOURCE_MEM, 0);
irq = platform_get_irq(pdev, 0); irq = platform_get_irq(pdev, 0);
if (!r || irq < 0) if (!r || irq < 0)
...@@ -732,8 +728,12 @@ static int mvsd_probe(struct platform_device *pdev) ...@@ -732,8 +728,12 @@ static int mvsd_probe(struct platform_device *pdev)
* fixed rate clock). * fixed rate clock).
*/ */
host->clk = devm_clk_get(&pdev->dev, NULL); host->clk = devm_clk_get(&pdev->dev, NULL);
if (!IS_ERR(host->clk)) if (IS_ERR(host->clk)) {
clk_prepare_enable(host->clk); dev_err(&pdev->dev, "no clock associated\n");
ret = -EINVAL;
goto out;
}
clk_prepare_enable(host->clk);
mmc->ops = &mvsd_ops; mmc->ops = &mvsd_ops;
...@@ -749,45 +749,10 @@ static int mvsd_probe(struct platform_device *pdev) ...@@ -749,45 +749,10 @@ static int mvsd_probe(struct platform_device *pdev)
mmc->max_seg_size = mmc->max_blk_size * mmc->max_blk_count; mmc->max_seg_size = mmc->max_blk_size * mmc->max_blk_count;
mmc->max_req_size = mmc->max_blk_size * mmc->max_blk_count; mmc->max_req_size = mmc->max_blk_size * mmc->max_blk_count;
if (np) { host->base_clock = clk_get_rate(host->clk) / 2;
if (IS_ERR(host->clk)) { ret = mmc_of_parse(mmc);
dev_err(&pdev->dev, "DT platforms must have a clock associated\n"); if (ret < 0)
ret = -EINVAL; goto out;
goto out;
}
host->base_clock = clk_get_rate(host->clk) / 2;
ret = mmc_of_parse(mmc);
if (ret < 0)
goto out;
} else {
const struct mvsdio_platform_data *mvsd_data;
mvsd_data = pdev->dev.platform_data;
if (!mvsd_data) {
ret = -ENXIO;
goto out;
}
mmc->caps = MMC_CAP_4_BIT_DATA | MMC_CAP_SDIO_IRQ |
MMC_CAP_SD_HIGHSPEED | MMC_CAP_MMC_HIGHSPEED;
host->base_clock = mvsd_data->clock / 2;
/* GPIO 0 regarded as invalid for backward compatibility */
if (mvsd_data->gpio_card_detect &&
gpio_is_valid(mvsd_data->gpio_card_detect)) {
ret = mmc_gpio_request_cd(mmc,
mvsd_data->gpio_card_detect,
0);
if (ret)
goto out;
} else {
mmc->caps |= MMC_CAP_NEEDS_POLL;
}
if (mvsd_data->gpio_write_protect &&
gpio_is_valid(mvsd_data->gpio_write_protect))
mmc_gpio_request_ro(mmc, mvsd_data->gpio_write_protect);
}
if (maxfreq) if (maxfreq)
mmc->f_max = maxfreq; mmc->f_max = maxfreq;
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment