mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/next/linux-next.git
synced 2025-01-09 23:39:18 +00:00
mmc: sdhci: Do not unnecessarily enable wakeup for card detect interrupt
Do not unnecessarily enable card detect wakeup in the cases that the card is not removable or a GPIO is used for card detect. Signed-off-by: Adrian Hunter <adrian.hunter@intel.com> Signed-off-by: Ulf Hansson <ulf.hansson@linaro.org>
This commit is contained in:
parent
7b7d57fd1b
commit
9c316b38b7
@ -2899,6 +2899,14 @@ static irqreturn_t sdhci_thread_irq(int irq, void *dev_id)
|
||||
\*****************************************************************************/
|
||||
|
||||
#ifdef CONFIG_PM
|
||||
|
||||
static bool sdhci_cd_irq_can_wakeup(struct sdhci_host *host)
|
||||
{
|
||||
return mmc_card_is_removable(host->mmc) &&
|
||||
!(host->quirks & SDHCI_QUIRK_BROKEN_CARD_DETECTION) &&
|
||||
!mmc_can_gpio_cd(host->mmc);
|
||||
}
|
||||
|
||||
/*
|
||||
* To enable wakeup events, the corresponding events have to be enabled in
|
||||
* the Interrupt Status Enable register too. See 'Table 1-6: Wakeup Signal
|
||||
@ -2915,7 +2923,7 @@ static bool sdhci_enable_irq_wakeups(struct sdhci_host *host)
|
||||
u8 wake_val = 0;
|
||||
u8 val;
|
||||
|
||||
if (!(host->quirks & SDHCI_QUIRK_BROKEN_CARD_DETECTION)) {
|
||||
if (sdhci_cd_irq_can_wakeup(host)) {
|
||||
wake_val |= SDHCI_WAKE_ON_INSERT | SDHCI_WAKE_ON_REMOVE;
|
||||
irq_val |= SDHCI_INT_CARD_INSERT | SDHCI_INT_CARD_REMOVE;
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user