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

Commit c70f5a60 authored by Eric Miao's avatar Eric Miao
Browse files

[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
Loading
Loading
Loading
Loading
+10 −4
Original line number Diff line number Diff line
@@ -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;
	}

	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;