mmc: mmci: Mask IRQs for all variants during runtime suspend
In runtime suspended state, we are not expecting IRQs and thus we can safely mask them, not only for pwrreg_nopower variants but for all. Obviously we then also need to make sure we restore the IRQ mask while becoming runtime resumed. Cc: Russell King <linux@arm.linux.org.uk> Signed-off-by: Ulf Hansson <ulf.hansson@linaro.org>
This commit is contained in:
parent
89ca3b8819
commit
42dcc89a91
|
@ -1794,35 +1794,34 @@ static void mmci_save(struct mmci_host *host)
|
|||
{
|
||||
unsigned long flags;
|
||||
|
||||
if (host->variant->pwrreg_nopower) {
|
||||
spin_lock_irqsave(&host->lock, flags);
|
||||
spin_lock_irqsave(&host->lock, flags);
|
||||
|
||||
writel(0, host->base + MMCIMASK0);
|
||||
writel(0, host->base + MMCIMASK0);
|
||||
if (host->variant->pwrreg_nopower) {
|
||||
writel(0, host->base + MMCIDATACTRL);
|
||||
writel(0, host->base + MMCIPOWER);
|
||||
writel(0, host->base + MMCICLOCK);
|
||||
mmci_reg_delay(host);
|
||||
|
||||
spin_unlock_irqrestore(&host->lock, flags);
|
||||
}
|
||||
mmci_reg_delay(host);
|
||||
|
||||
spin_unlock_irqrestore(&host->lock, flags);
|
||||
}
|
||||
|
||||
static void mmci_restore(struct mmci_host *host)
|
||||
{
|
||||
unsigned long flags;
|
||||
|
||||
if (host->variant->pwrreg_nopower) {
|
||||
spin_lock_irqsave(&host->lock, flags);
|
||||
spin_lock_irqsave(&host->lock, flags);
|
||||
|
||||
if (host->variant->pwrreg_nopower) {
|
||||
writel(host->clk_reg, host->base + MMCICLOCK);
|
||||
writel(host->datactrl_reg, host->base + MMCIDATACTRL);
|
||||
writel(host->pwr_reg, host->base + MMCIPOWER);
|
||||
writel(MCI_IRQENABLE, host->base + MMCIMASK0);
|
||||
mmci_reg_delay(host);
|
||||
|
||||
spin_unlock_irqrestore(&host->lock, flags);
|
||||
}
|
||||
writel(MCI_IRQENABLE, host->base + MMCIMASK0);
|
||||
mmci_reg_delay(host);
|
||||
|
||||
spin_unlock_irqrestore(&host->lock, flags);
|
||||
}
|
||||
|
||||
static int mmci_runtime_suspend(struct device *dev)
|
||||
|
|
Loading…
Reference in New Issue