Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 42dcc89a authored by Ulf Hansson's avatar Ulf Hansson
Browse files

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: default avatarUlf Hansson <ulf.hansson@linaro.org>
parent 89ca3b88
Loading
Loading
Loading
Loading
+11 −12
Original line number Diff line number Diff line
@@ -1794,36 +1794,35 @@ static void mmci_save(struct mmci_host *host)
{
	unsigned long flags;

	if (host->variant->pwrreg_nopower) {
	spin_lock_irqsave(&host->lock, flags);

	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);
}

}

static void mmci_restore(struct mmci_host *host)
{
	unsigned long flags;

	if (host->variant->pwrreg_nopower) {
	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);
}
}

static int mmci_runtime_suspend(struct device *dev)
{