mmc: sdhci: spear: Use the slot GPIO descriptor
authorLinus Walleij <linus.walleij@linaro.org>
Sun, 23 Sep 2018 06:33:20 +0000 (08:33 +0200)
committerUlf Hansson <ulf.hansson@linaro.org>
Mon, 8 Oct 2018 09:40:43 +0000 (11:40 +0200)
This driver is complicating things for no reason: the "cd"
GPIO can easily be retrieved from the device tree if present
using just mmc_gpiod_request_cd(), which will fetch the
descriptor from the device tree using the standard binding
just fine.

Cc: Viresh Kumar <vireshk@kernel.org>
Signed-off-by: Linus Walleij <linus.walleij@linaro.org>
Signed-off-by: Ulf Hansson <ulf.hansson@linaro.org>
drivers/mmc/host/sdhci-spear.c

index 9247d51..916b5b0 100644 (file)
 
 #include <linux/clk.h>
 #include <linux/delay.h>
-#include <linux/gpio.h>
 #include <linux/highmem.h>
 #include <linux/module.h>
 #include <linux/interrupt.h>
 #include <linux/irq.h>
 #include <linux/of.h>
-#include <linux/of_gpio.h>
 #include <linux/platform_device.h>
 #include <linux/pm.h>
 #include <linux/slab.h>
@@ -32,7 +30,6 @@
 
 struct spear_sdhci {
        struct clk *clk;
-       int card_int_gpio;
 };
 
 /* sdhci ops */
@@ -43,18 +40,6 @@ static const struct sdhci_ops sdhci_pltfm_ops = {
        .set_uhs_signaling = sdhci_set_uhs_signaling,
 };
 
-static void sdhci_probe_config_dt(struct device_node *np,
-                               struct spear_sdhci *host)
-{
-       int cd_gpio;
-
-       cd_gpio = of_get_named_gpio(np, "cd-gpios", 0);
-       if (!gpio_is_valid(cd_gpio))
-               cd_gpio = -1;
-
-       host->card_int_gpio = cd_gpio;
-}
-
 static int sdhci_probe(struct platform_device *pdev)
 {
        struct sdhci_host *host;
@@ -109,21 +94,13 @@ static int sdhci_probe(struct platform_device *pdev)
                dev_dbg(&pdev->dev, "Error setting desired clk, clk=%lu\n",
                                clk_get_rate(sdhci->clk));
 
-       sdhci_probe_config_dt(pdev->dev.of_node, sdhci);
        /*
-        * It is optional to use GPIOs for sdhci card detection. If
-        * sdhci->card_int_gpio < 0, then use original sdhci lines otherwise
-        * GPIO lines. We use the built-in GPIO support for this.
+        * It is optional to use GPIOs for sdhci card detection. If we
+        * find a descriptor using slot GPIO, we use it.
         */
-       if (sdhci->card_int_gpio >= 0) {
-               ret = mmc_gpio_request_cd(host->mmc, sdhci->card_int_gpio, 0);
-               if (ret < 0) {
-                       dev_dbg(&pdev->dev,
-                               "failed to request card-detect gpio%d\n",
-                               sdhci->card_int_gpio);
-                       goto disable_clk;
-               }
-       }
+       ret = mmc_gpiod_request_cd(host->mmc, "cd", 0, false, 0, NULL);
+       if (ret == -EPROBE_DEFER)
+               goto disable_clk;
 
        ret = sdhci_add_host(host);
        if (ret)