Message ID | 1515484346-800-6-git-send-email-adrian.hunter@intel.com (mailing list archive) |
---|---|
State | Not Applicable, archived |
Headers | show |
On 9 January 2018 at 08:52, Adrian Hunter <adrian.hunter@intel.com> wrote: > In preparation for adding more conditions for whether IRQ wakeup is > enabled, rework sdhci_enable_irq_wakeups() so that needed bits are added > instead of adding them all and then removing the unneeded bits. > > Signed-off-by: Adrian Hunter <adrian.hunter@intel.com> Thanks, applied for next! Kind regards Uffe > --- > drivers/mmc/host/sdhci.c | 25 +++++++++++++++---------- > 1 file changed, 15 insertions(+), 10 deletions(-) > > diff --git a/drivers/mmc/host/sdhci.c b/drivers/mmc/host/sdhci.c > index a8129d091207..dd922923019a 100644 > --- a/drivers/mmc/host/sdhci.c > +++ b/drivers/mmc/host/sdhci.c > @@ -2823,20 +2823,25 @@ static irqreturn_t sdhci_thread_irq(int irq, void *dev_id) > */ > static bool sdhci_enable_irq_wakeups(struct sdhci_host *host) > { > + u8 mask = SDHCI_WAKE_ON_INSERT | SDHCI_WAKE_ON_REMOVE | > + SDHCI_WAKE_ON_INT; > + u32 irq_val = 0; > + u8 wake_val = 0; > u8 val; > - u8 mask = SDHCI_WAKE_ON_INSERT | SDHCI_WAKE_ON_REMOVE > - | SDHCI_WAKE_ON_INT; > - u32 irq_val = SDHCI_INT_CARD_INSERT | SDHCI_INT_CARD_REMOVE | > - SDHCI_INT_CARD_INT; > > - val = sdhci_readb(host, SDHCI_WAKE_UP_CONTROL); > - val |= mask ; > - /* Avoid fake wake up */ > - if (host->quirks & SDHCI_QUIRK_BROKEN_CARD_DETECTION) { > - val &= ~(SDHCI_WAKE_ON_INSERT | SDHCI_WAKE_ON_REMOVE); > - irq_val &= ~(SDHCI_INT_CARD_INSERT | SDHCI_INT_CARD_REMOVE); > + if (!(host->quirks & SDHCI_QUIRK_BROKEN_CARD_DETECTION)) { > + wake_val |= SDHCI_WAKE_ON_INSERT | SDHCI_WAKE_ON_REMOVE; > + irq_val |= SDHCI_INT_CARD_INSERT | SDHCI_INT_CARD_REMOVE; > } > + > + wake_val |= SDHCI_WAKE_ON_INT; > + irq_val |= SDHCI_INT_CARD_INT; > + > + val = sdhci_readb(host, SDHCI_WAKE_UP_CONTROL); > + val &= ~mask; > + val |= wake_val; > sdhci_writeb(host, val, SDHCI_WAKE_UP_CONTROL); > + > sdhci_writel(host, irq_val, SDHCI_INT_ENABLE); > > host->irq_wake_enabled = !enable_irq_wake(host->irq); > -- > 1.9.1 >
diff --git a/drivers/mmc/host/sdhci.c b/drivers/mmc/host/sdhci.c index a8129d091207..dd922923019a 100644 --- a/drivers/mmc/host/sdhci.c +++ b/drivers/mmc/host/sdhci.c @@ -2823,20 +2823,25 @@ static irqreturn_t sdhci_thread_irq(int irq, void *dev_id) */ static bool sdhci_enable_irq_wakeups(struct sdhci_host *host) { + u8 mask = SDHCI_WAKE_ON_INSERT | SDHCI_WAKE_ON_REMOVE | + SDHCI_WAKE_ON_INT; + u32 irq_val = 0; + u8 wake_val = 0; u8 val; - u8 mask = SDHCI_WAKE_ON_INSERT | SDHCI_WAKE_ON_REMOVE - | SDHCI_WAKE_ON_INT; - u32 irq_val = SDHCI_INT_CARD_INSERT | SDHCI_INT_CARD_REMOVE | - SDHCI_INT_CARD_INT; - val = sdhci_readb(host, SDHCI_WAKE_UP_CONTROL); - val |= mask ; - /* Avoid fake wake up */ - if (host->quirks & SDHCI_QUIRK_BROKEN_CARD_DETECTION) { - val &= ~(SDHCI_WAKE_ON_INSERT | SDHCI_WAKE_ON_REMOVE); - irq_val &= ~(SDHCI_INT_CARD_INSERT | SDHCI_INT_CARD_REMOVE); + if (!(host->quirks & SDHCI_QUIRK_BROKEN_CARD_DETECTION)) { + wake_val |= SDHCI_WAKE_ON_INSERT | SDHCI_WAKE_ON_REMOVE; + irq_val |= SDHCI_INT_CARD_INSERT | SDHCI_INT_CARD_REMOVE; } + + wake_val |= SDHCI_WAKE_ON_INT; + irq_val |= SDHCI_INT_CARD_INT; + + val = sdhci_readb(host, SDHCI_WAKE_UP_CONTROL); + val &= ~mask; + val |= wake_val; sdhci_writeb(host, val, SDHCI_WAKE_UP_CONTROL); + sdhci_writel(host, irq_val, SDHCI_INT_ENABLE); host->irq_wake_enabled = !enable_irq_wake(host->irq);
In preparation for adding more conditions for whether IRQ wakeup is enabled, rework sdhci_enable_irq_wakeups() so that needed bits are added instead of adding them all and then removing the unneeded bits. Signed-off-by: Adrian Hunter <adrian.hunter@intel.com> --- drivers/mmc/host/sdhci.c | 25 +++++++++++++++---------- 1 file changed, 15 insertions(+), 10 deletions(-)