History

ARM: pxa: irq: fix handling of ICMR registers in suspend/resume

PXA3xx platforms have 56 interrupts that are stored in two ICMR registers. The code in pxa_irq_suspend() and pxa_irq_resume() however does a simple division by 32 which only leads to one register being saved at suspend and restored at resume time. The NAND interrupt setting, for instance, is lost. Fix this by using DIV_ROUND_UP() instead.

Daniel Mack committed 8 years ago

Commit 0c1049d1 parent ce397d21 file · +2 −2Browse files

Unified · Split

arch/arm/mach-pxa/irq.c+2−2
@@ -185,7 +185,7 @@ static int pxa_irq_suspend(void) · 184 unmodified lines
185{185{
186 int i;186 int i;
187 187
188 for (i = 0; i < pxa_internal_irq_nr / 32; i++) {188 for (i = 0; i < DIV_ROUND_UP(pxa_internal_irq_nr, 32); i++) {
189 void __iomem *base = irq_base(i);189 void __iomem *base = irq_base(i);
190 190
191 saved_icmr[i] = __raw_readl(base + ICMR);191 saved_icmr[i] = __raw_readl(base + ICMR);
@@ -204,7 +204,7 @@ static void pxa_irq_resume(void) · 12 unmodified lines
204{204{
205 int i;205 int i;
206 206
207 for (i = 0; i < pxa_internal_irq_nr / 32; i++) {207 for (i = 0; i < DIV_ROUND_UP(pxa_internal_irq_nr, 32); i++) {
208 void __iomem *base = irq_base(i);208 void __iomem *base = irq_base(i);
209 209
210 __raw_writel(saved_icmr[i], base + ICMR);210 __raw_writel(saved_icmr[i], base + ICMR);

Keyboard shortcuts

General

Show keyboard shortcuts
?
Focus the current search
/

Issues and pull requests

Open filters
f

Issues, pull requests and Inbox

Select next item
j↓
Select previous item
k↑
Open selected item
Enter
Dismiss filters or clear selection
Esc

Repository code

Go to file
t