OSDN Git Service

mmc: sdhci-pci: Use device wakeup capability to determine MMC_PM_WAKE_SDIO_IRQ capability
authorAdrian Hunter <adrian.hunter@intel.com>
Tue, 9 Jan 2018 07:52:19 +0000 (09:52 +0200)
committerUlf Hansson <ulf.hansson@linaro.org>
Wed, 17 Jan 2018 11:30:43 +0000 (12:30 +0100)
PCI and ACPI determine if a device is wakeup capable, so use that to
determine the MMC_PM_WAKE_SDIO_IRQ capability correctly.

Signed-off-by: Adrian Hunter <adrian.hunter@intel.com>
Signed-off-by: Ulf Hansson <ulf.hansson@linaro.org>
drivers/mmc/host/sdhci-pci-core.c

index b99a970..6d1a983 100644 (file)
@@ -50,9 +50,9 @@ static int sdhci_pci_init_wakeup(struct sdhci_pci_chip *chip)
                        pm_flags |= slot->host->mmc->pm_flags;
        }
 
-       return device_init_wakeup(&chip->pdev->dev,
-                                 (pm_flags & MMC_PM_KEEP_POWER) &&
-                                 (pm_flags & MMC_PM_WAKE_SDIO_IRQ));
+       return device_set_wakeup_enable(&chip->pdev->dev,
+                                       (pm_flags & MMC_PM_KEEP_POWER) &&
+                                       (pm_flags & MMC_PM_WAKE_SDIO_IRQ));
 }
 
 static int sdhci_pci_suspend_host(struct sdhci_pci_chip *chip)
@@ -1682,10 +1682,13 @@ static struct sdhci_pci_slot *sdhci_pci_probe_slot(
                }
        }
 
-       host->mmc->pm_caps = MMC_PM_KEEP_POWER | MMC_PM_WAKE_SDIO_IRQ;
+       host->mmc->pm_caps = MMC_PM_KEEP_POWER;
        host->mmc->slotno = slotno;
        host->mmc->caps2 |= MMC_CAP2_NO_PRESCAN_POWERUP;
 
+       if (device_can_wakeup(&pdev->dev))
+               host->mmc->pm_caps |= MMC_PM_WAKE_SDIO_IRQ;
+
        if (slot->cd_idx >= 0) {
                ret = mmc_gpiod_request_cd(host->mmc, NULL, slot->cd_idx,
                                           slot->cd_override_level, 0, NULL);