power: gemini-poweroff: Avoid more spurious poweroffs
Even after the previous fix I have experienced more spurious
poweroffs on the gemini SoC. After this fix it finally seems
to go away.
Fixes: f7a388d6cd
("power: reset: Add a driver for the Gemini poweroff")
Signed-off-by: Linus Walleij <linus.walleij@linaro.org>
Signed-off-by: Sebastian Reichel <sebastian.reichel@collabora.co.uk>
This commit is contained in:
parent
09bebb1adb
commit
ada1de89f3
|
@ -130,7 +130,17 @@ static int gemini_poweroff_probe(struct platform_device *pdev)
|
||||||
val |= GEMINI_CTRL_ENABLE;
|
val |= GEMINI_CTRL_ENABLE;
|
||||||
writel(val, gpw->base + GEMINI_PWC_CTRLREG);
|
writel(val, gpw->base + GEMINI_PWC_CTRLREG);
|
||||||
|
|
||||||
/* Now that the state machine is active, clear the IRQ */
|
/* Clear the IRQ */
|
||||||
|
val = readl(gpw->base + GEMINI_PWC_CTRLREG);
|
||||||
|
val |= GEMINI_CTRL_IRQ_CLR;
|
||||||
|
writel(val, gpw->base + GEMINI_PWC_CTRLREG);
|
||||||
|
|
||||||
|
/* Wait for this to clear */
|
||||||
|
val = readl(gpw->base + GEMINI_PWC_STATREG);
|
||||||
|
while (val & 0x70U)
|
||||||
|
val = readl(gpw->base + GEMINI_PWC_STATREG);
|
||||||
|
|
||||||
|
/* Clear the IRQ again */
|
||||||
val = readl(gpw->base + GEMINI_PWC_CTRLREG);
|
val = readl(gpw->base + GEMINI_PWC_CTRLREG);
|
||||||
val |= GEMINI_CTRL_IRQ_CLR;
|
val |= GEMINI_CTRL_IRQ_CLR;
|
||||||
writel(val, gpw->base + GEMINI_PWC_CTRLREG);
|
writel(val, gpw->base + GEMINI_PWC_CTRLREG);
|
||||||
|
|
Loading…
Reference in New Issue