mmc: sdhci: Deduplicate sdhci_get_cd_nogpio()
authorAndy Shevchenko <andriy.shevchenko@linux.intel.com>
Thu, 14 Oct 2021 13:26:09 +0000 (16:26 +0300)
committerUlf Hansson <ulf.hansson@linaro.org>
Tue, 19 Oct 2021 10:43:21 +0000 (12:43 +0200)
The analogue of the sdhci_get_cd_nogpio() is used in the sdhci-pci-core
and sdhci-acpi modules. Deduplicate it by moving to sdhci and exporting.

Signed-off-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
Acked-by: Adrian Hunter <adrian.hunter@intel.com>
Link: https://lore.kernel.org/r/20211014132613.27861-2-andriy.shevchenko@linux.intel.com
Signed-off-by: Ulf Hansson <ulf.hansson@linaro.org>
drivers/mmc/host/sdhci-acpi.c
drivers/mmc/host/sdhci-pci-core.c
drivers/mmc/host/sdhci.c
drivers/mmc/host/sdhci.h

index 8fe65f172a61109582f951c56aaaf676baee057d..f1ef0d28b0dd14026a94c15a4cd251e0ec9a1418 100644 (file)
@@ -362,23 +362,11 @@ static inline bool sdhci_acpi_no_fixup_child_power(struct acpi_device *adev)
 static int bxt_get_cd(struct mmc_host *mmc)
 {
        int gpio_cd = mmc_gpio_get_cd(mmc);
-       struct sdhci_host *host = mmc_priv(mmc);
-       unsigned long flags;
-       int ret = 0;
 
        if (!gpio_cd)
                return 0;
 
-       spin_lock_irqsave(&host->lock, flags);
-
-       if (host->flags & SDHCI_DEVICE_DEAD)
-               goto out;
-
-       ret = !!(sdhci_readl(host, SDHCI_PRESENT_STATE) & SDHCI_CARD_PRESENT);
-out:
-       spin_unlock_irqrestore(&host->lock, flags);
-
-       return ret;
+       return sdhci_get_cd_nogpio(mmc);
 }
 
 static int intel_probe_slot(struct platform_device *pdev, struct acpi_device *adev)
index d0f2edfe296c8c807d55ab76d702b78efeae2799..19e13dfae59306170f1daf4292cfb52bce1281ab 100644 (file)
@@ -616,24 +616,6 @@ static int intel_select_drive_strength(struct mmc_card *card,
        return intel_host->drv_strength;
 }
 
-static int sdhci_get_cd_nogpio(struct mmc_host *mmc)
-{
-       struct sdhci_host *host = mmc_priv(mmc);
-       unsigned long flags;
-       int ret = 0;
-
-       spin_lock_irqsave(&host->lock, flags);
-
-       if (host->flags & SDHCI_DEVICE_DEAD)
-               goto out;
-
-       ret = !!(sdhci_readl(host, SDHCI_PRESENT_STATE) & SDHCI_CARD_PRESENT);
-out:
-       spin_unlock_irqrestore(&host->lock, flags);
-
-       return ret;
-}
-
 static int bxt_get_cd(struct mmc_host *mmc)
 {
        int gpio_cd = mmc_gpio_get_cd(mmc);
index dbe87995596c435d235c34046c38ccdf34206152..269c865694024c8f2164574349352a299eacf5d2 100644 (file)
@@ -2425,6 +2425,25 @@ static int sdhci_get_cd(struct mmc_host *mmc)
        return !!(sdhci_readl(host, SDHCI_PRESENT_STATE) & SDHCI_CARD_PRESENT);
 }
 
+int sdhci_get_cd_nogpio(struct mmc_host *mmc)
+{
+       struct sdhci_host *host = mmc_priv(mmc);
+       unsigned long flags;
+       int ret = 0;
+
+       spin_lock_irqsave(&host->lock, flags);
+
+       if (host->flags & SDHCI_DEVICE_DEAD)
+               goto out;
+
+       ret = !!(sdhci_readl(host, SDHCI_PRESENT_STATE) & SDHCI_CARD_PRESENT);
+out:
+       spin_unlock_irqrestore(&host->lock, flags);
+
+       return ret;
+}
+EXPORT_SYMBOL_GPL(sdhci_get_cd_nogpio);
+
 static int sdhci_check_ro(struct sdhci_host *host)
 {
        unsigned long flags;
index e8d04e42a5afd66da341de16e58ab0c6e482195b..c593af479832cd124d4f93f9cc1ab03ed79395aa 100644 (file)
@@ -775,6 +775,7 @@ void sdhci_set_power_and_bus_voltage(struct sdhci_host *host,
                                     unsigned short vdd);
 void sdhci_set_power_noreg(struct sdhci_host *host, unsigned char mode,
                           unsigned short vdd);
+int sdhci_get_cd_nogpio(struct mmc_host *mmc);
 void sdhci_request(struct mmc_host *mmc, struct mmc_request *mrq);
 int sdhci_request_atomic(struct mmc_host *mmc, struct mmc_request *mrq);
 void sdhci_set_bus_width(struct sdhci_host *host, int width);