mmc: sdhci-pci: Allow deferred probe for sd card detect gpio
authorDavid E. Box <david.e.box@linux.intel.com>
Tue, 22 Nov 2016 09:03:38 +0000 (11:03 +0200)
committerUlf Hansson <ulf.hansson@linaro.org>
Tue, 29 Nov 2016 08:05:21 +0000 (09:05 +0100)
With commit f35bbf61ab77 ("gpio / ACPI: Return -EPROBE_DEFER if the
gpiochip was not found"), a gpio descriptor request can now be deferred if
the providing gpio host controller driver hasn't been loaded yet. Allow use
in mmc slot probe in order to prevent card detect gpio setup from failing
in this case.

Signed-off-by: David E. Box <david.e.box@linux.intel.com>
Signed-off-by: Ulf Hansson <ulf.hansson@linaro.org>
drivers/mmc/host/sdhci-pci-core.c

index 501098e65b0e1ddbe7566f51035a5b99683779b3..2d20fb60ce83d35ce2c2e5dfc44f9819d734bc64 100644 (file)
@@ -1760,11 +1760,16 @@ static struct sdhci_pci_slot *sdhci_pci_probe_slot(
        host->mmc->slotno = slotno;
        host->mmc->caps2 |= MMC_CAP2_NO_PRESCAN_POWERUP;
 
-       if (slot->cd_idx >= 0 &&
-           mmc_gpiod_request_cd(host->mmc, slot->cd_con_id, slot->cd_idx,
-                                slot->cd_override_level, 0, NULL)) {
-               dev_warn(&pdev->dev, "failed to setup card detect gpio\n");
-               slot->cd_idx = -1;
+       if (slot->cd_idx >= 0) {
+               ret = mmc_gpiod_request_cd(host->mmc, slot->cd_con_id, slot->cd_idx,
+                                          slot->cd_override_level, 0, NULL);
+               if (ret == -EPROBE_DEFER)
+                       goto remove;
+
+               if (ret) {
+                       dev_warn(&pdev->dev, "failed to setup card detect gpio\n");
+                       slot->cd_idx = -1;
+               }
        }
 
        ret = sdhci_add_host(host);