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
185185 {
186186 int i;
187187
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++) {
189189 void __iomem *base = irq_base(i);
190190
191191 saved_icmr[i] = __raw_readl(base + ICMR);
@@ -204,7 +204,7 @@ static void pxa_irq_resume(void) · 12 unmodified lines
204204 {
205205 int i;
206206
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++) {
208208 void __iomem *base = irq_base(i);
209209
210210 __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