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

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
Loading
Loading
Loading
Loading
+1 −0
Original line number Diff line number Diff line
@@ -455,6 +455,7 @@ config MMC_TIFM_SD
config MMC_MVSDIO
	tristate "Marvell MMC/SD/SDIO host driver"
	depends on PLAT_ORION
	depends on OF
	---help---
	  This selects the Marvell SDIO host driver.
	  SDIO may currently be found on the Kirkwood 88F6281 and 88F6192
+14 −49
Original line number Diff line number Diff line
@@ -20,8 +20,6 @@
#include <linux/scatterlist.h>
#include <linux/irq.h>
#include <linux/clk.h>
#include <linux/gpio.h>
#include <linux/of_gpio.h>
#include <linux/of_irq.h>
#include <linux/mmc/host.h>
#include <linux/mmc/slot-gpio.h>
@@ -36,12 +34,6 @@
static int maxfreq;
static int nodma;

struct mvsdio_platform_data {
	unsigned int clock;
	int gpio_card_detect;
	int gpio_write_protect;
};

struct mvsd_host {
	void __iomem *base;
	struct mmc_request *mrq;
@@ -709,6 +701,10 @@ static int mvsd_probe(struct platform_device *pdev)
	struct resource *r;
	int ret, irq;

	if (!np) {
		dev_err(&pdev->dev, "no DT node\n");
		return -ENODEV;
	}
	r = platform_get_resource(pdev, IORESOURCE_MEM, 0);
	irq = platform_get_irq(pdev, 0);
	if (!r || irq < 0)
@@ -732,7 +728,11 @@ static int mvsd_probe(struct platform_device *pdev)
	 * fixed rate clock).
	 */
	host->clk = devm_clk_get(&pdev->dev, NULL);
	if (!IS_ERR(host->clk))
	if (IS_ERR(host->clk)) {
		dev_err(&pdev->dev, "no clock associated\n");
		ret = -EINVAL;
		goto out;
	}
	clk_prepare_enable(host->clk);

	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_req_size = mmc->max_blk_size * mmc->max_blk_count;

	if (np) {
		if (IS_ERR(host->clk)) {
			dev_err(&pdev->dev, "DT platforms must have a clock associated\n");
			ret = -EINVAL;
			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)
		mmc->f_max = maxfreq;