diff options
| author | Jeff Garzik <jeff@garzik.org> | 2006-06-08 15:24:46 -0400 |
|---|---|---|
| committer | Jeff Garzik <jeff@garzik.org> | 2006-06-08 15:24:46 -0400 |
| commit | d15a88fc21ef225768ce31be16edfc9c6e2e02e3 (patch) | |
| tree | d4cb0a1bc97973bb947e2667ae56bc4bc2256e9d /arch/arm/mach-ixp23xx/core.c | |
| parent | b53471711f21ba0e151075f0e1d6d531eb50f1b1 (diff) | |
| parent | 1def630a6a49dda5bc89dfbd86656293640456f0 (diff) | |
Merge branch 'master' into upstream
Diffstat (limited to 'arch/arm/mach-ixp23xx/core.c')
| -rw-r--r-- | arch/arm/mach-ixp23xx/core.c | 18 |
1 files changed, 15 insertions, 3 deletions
diff --git a/arch/arm/mach-ixp23xx/core.c b/arch/arm/mach-ixp23xx/core.c index 092ee12ced42..affd1d5d7440 100644 --- a/arch/arm/mach-ixp23xx/core.c +++ b/arch/arm/mach-ixp23xx/core.c @@ -178,8 +178,12 @@ static int ixp23xx_irq_set_type(unsigned int irq, unsigned int type) static void ixp23xx_irq_mask(unsigned int irq) { - volatile unsigned long *intr_reg = IXP23XX_INTR_EN1 + (irq / 32); + volatile unsigned long *intr_reg; + if (irq >= 56) + irq += 8; + + intr_reg = IXP23XX_INTR_EN1 + (irq / 32); *intr_reg &= ~(1 << (irq % 32)); } @@ -199,17 +203,25 @@ static void ixp23xx_irq_ack(unsigned int irq) */ static void ixp23xx_irq_level_unmask(unsigned int irq) { - volatile unsigned long *intr_reg = IXP23XX_INTR_EN1 + (irq / 32); + volatile unsigned long *intr_reg; ixp23xx_irq_ack(irq); + if (irq >= 56) + irq += 8; + + intr_reg = IXP23XX_INTR_EN1 + (irq / 32); *intr_reg |= (1 << (irq % 32)); } static void ixp23xx_irq_edge_unmask(unsigned int irq) { - volatile unsigned long *intr_reg = IXP23XX_INTR_EN1 + (irq / 32); + volatile unsigned long *intr_reg; + + if (irq >= 56) + irq += 8; + intr_reg = IXP23XX_INTR_EN1 + (irq / 32); *intr_reg |= (1 << (irq % 32)); } |
