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>
This commit is contained in:
Linus Walleij 2015-11-25 14:57:57 +01:00 committed by Ulf Hansson
parent 6d91439ae2
commit 17da678368
2 changed files with 15 additions and 49 deletions

View File

@ -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

View File

@ -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 @@
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)
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)
* 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)
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;