Commit c70f5a60 authored by Eric Miao's avatar Eric Miao

[ARM] pxa: fix irq suspend/resume for pxa25x

PXA25x does not have IPR registers, saving and restoring should happen
only for pxa27x and pxa3xx.
Signed-off-by: default avatarEric Miao <eric.y.miao@gmail.com>
parent 463de209
...@@ -164,8 +164,11 @@ static int pxa_irq_suspend(struct sys_device *dev, pm_message_t state) ...@@ -164,8 +164,11 @@ static int pxa_irq_suspend(struct sys_device *dev, pm_message_t state)
saved_icmr[i] = _ICMR(irq); saved_icmr[i] = _ICMR(irq);
_ICMR(irq) = 0; _ICMR(irq) = 0;
} }
for (i = 0; i < pxa_internal_irq_nr; i++)
saved_ipr[i] = IPR(i); if (cpu_is_pxa27x() || cpu_is_pxa3xx()) {
for (i = 0; i < pxa_internal_irq_nr; i++)
saved_ipr[i] = IPR(i);
}
return 0; return 0;
} }
...@@ -174,12 +177,15 @@ static int pxa_irq_resume(struct sys_device *dev) ...@@ -174,12 +177,15 @@ static int pxa_irq_resume(struct sys_device *dev)
{ {
int i, irq = PXA_IRQ(0); int i, irq = PXA_IRQ(0);
if (cpu_is_pxa27x() || cpu_is_pxa3xx()) {
for (i = 0; i < pxa_internal_irq_nr; i++)
IPR(i) = saved_ipr[i];
}
for (i = 0; irq < PXA_IRQ(pxa_internal_irq_nr); i++, irq += 32) { for (i = 0; irq < PXA_IRQ(pxa_internal_irq_nr); i++, irq += 32) {
_ICMR(irq) = saved_icmr[i]; _ICMR(irq) = saved_icmr[i];
_ICLR(irq) = 0; _ICLR(irq) = 0;
} }
for (i = 0; i < pxa_internal_irq_nr; i++)
IPR(i) = saved_ipr[i];
ICCR = 1; ICCR = 1;
return 0; return 0;
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment