diff options
Diffstat (limited to 'arch/arm/mach-pxa/irq.c')
| -rw-r--r-- | arch/arm/mach-pxa/irq.c | 14 |
1 files changed, 10 insertions, 4 deletions
diff --git a/arch/arm/mach-pxa/irq.c b/arch/arm/mach-pxa/irq.c index 6112af431fa4..1beb40f692fc 100644 --- a/arch/arm/mach-pxa/irq.c +++ b/arch/arm/mach-pxa/irq.c | |||
| @@ -164,8 +164,11 @@ static int pxa_irq_suspend(struct sys_device *dev, pm_message_t state) | |||
| 164 | saved_icmr[i] = _ICMR(irq); | 164 | saved_icmr[i] = _ICMR(irq); |
| 165 | _ICMR(irq) = 0; | 165 | _ICMR(irq) = 0; |
| 166 | } | 166 | } |
| 167 | for (i = 0; i < pxa_internal_irq_nr; i++) | 167 | |
| 168 | saved_ipr[i] = IPR(i); | 168 | if (cpu_is_pxa27x() || cpu_is_pxa3xx()) { |
| 169 | for (i = 0; i < pxa_internal_irq_nr; i++) | ||
| 170 | saved_ipr[i] = IPR(i); | ||
| 171 | } | ||
| 169 | 172 | ||
| 170 | return 0; | 173 | return 0; |
| 171 | } | 174 | } |
| @@ -174,12 +177,15 @@ static int pxa_irq_resume(struct sys_device *dev) | |||
| 174 | { | 177 | { |
| 175 | int i, irq = PXA_IRQ(0); | 178 | int i, irq = PXA_IRQ(0); |
| 176 | 179 | ||
| 180 | if (cpu_is_pxa27x() || cpu_is_pxa3xx()) { | ||
| 181 | for (i = 0; i < pxa_internal_irq_nr; i++) | ||
| 182 | IPR(i) = saved_ipr[i]; | ||
| 183 | } | ||
| 184 | |||
| 177 | for (i = 0; irq < PXA_IRQ(pxa_internal_irq_nr); i++, irq += 32) { | 185 | for (i = 0; irq < PXA_IRQ(pxa_internal_irq_nr); i++, irq += 32) { |
| 178 | _ICMR(irq) = saved_icmr[i]; | 186 | _ICMR(irq) = saved_icmr[i]; |
| 179 | _ICLR(irq) = 0; | 187 | _ICLR(irq) = 0; |
| 180 | } | 188 | } |
| 181 | for (i = 0; i < pxa_internal_irq_nr; i++) | ||
| 182 | IPR(i) = saved_ipr[i]; | ||
| 183 | 189 | ||
| 184 | ICCR = 1; | 190 | ICCR = 1; |
| 185 | return 0; | 191 | return 0; |
