summaryrefslogtreecommitdiff
path: root/arch/arm/mach-ixp23xx/core.c
diff options
context:
space:
mode:
authorJeff Garzik <jeff@garzik.org>2006-06-11 23:04:37 -0400
committerJeff Garzik <jeff@garzik.org>2006-06-11 23:04:37 -0400
commitfec69a97489f961026e24536dbb7b86ac663948c (patch)
tree869713470d81ebc261598489a2711960336c7c37 /arch/arm/mach-ixp23xx/core.c
parent1049cb478783c74ca8c99ef70e7d2bf920b9335b (diff)
parent2f9719b61e1fcf7422a016ac4f2420a0cc6ba320 (diff)
downloadlinux-rt-fec69a97489f961026e24536dbb7b86ac663948c.tar.gz
Merge branch 'upstream-fixes' into upstream
Conflicts: drivers/scsi/sata_sil24.c
Diffstat (limited to 'arch/arm/mach-ixp23xx/core.c')
-rw-r--r--arch/arm/mach-ixp23xx/core.c18
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));
}