[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: Eric Miao <eric.y.miao@gmail.com>
This commit is contained in:
parent
463de2096d
commit
c70f5a6099
|
@ -164,8 +164,11 @@ static int pxa_irq_suspend(struct sys_device *dev, pm_message_t state)
|
|||
saved_icmr[i] = _ICMR(irq);
|
||||
_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;
|
||||
}
|
||||
|
@ -174,12 +177,15 @@ static int pxa_irq_resume(struct sys_device *dev)
|
|||
{
|
||||
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) {
|
||||
_ICMR(irq) = saved_icmr[i];
|
||||
_ICLR(irq) = 0;
|
||||
}
|
||||
for (i = 0; i < pxa_internal_irq_nr; i++)
|
||||
IPR(i) = saved_ipr[i];
|
||||
|
||||
ICCR = 1;
|
||||
return 0;
|
||||
|
|
Loading…
Reference in New Issue