Commit 891eca14 authored by Linus Torvalds's avatar Linus Torvalds

Merge master.kernel.org:/home/rmk/linux-2.6-arm

* master.kernel.org:/home/rmk/linux-2.6-arm:
  [ARM] 3540/1: ixp23xx: deal with gap in interrupt bitmasks
  [ARM] 3539/1: ixp23xx: fix __arch_ixp23xx_is_coherent() for A1 stepping
parents 48e49ead ec8510f6
...@@ -178,8 +178,12 @@ static int ixp23xx_irq_set_type(unsigned int irq, unsigned int type) ...@@ -178,8 +178,12 @@ static int ixp23xx_irq_set_type(unsigned int irq, unsigned int type)
static void ixp23xx_irq_mask(unsigned int irq) 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)); *intr_reg &= ~(1 << (irq % 32));
} }
...@@ -199,17 +203,25 @@ static void ixp23xx_irq_ack(unsigned int irq) ...@@ -199,17 +203,25 @@ static void ixp23xx_irq_ack(unsigned int irq)
*/ */
static void ixp23xx_irq_level_unmask(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); ixp23xx_irq_ack(irq);
if (irq >= 56)
irq += 8;
intr_reg = IXP23XX_INTR_EN1 + (irq / 32);
*intr_reg |= (1 << (irq % 32)); *intr_reg |= (1 << (irq % 32));
} }
static void ixp23xx_irq_edge_unmask(unsigned int irq) 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)); *intr_reg |= (1 << (irq % 32));
} }
......
...@@ -49,7 +49,7 @@ static inline int __ixp23xx_arch_is_coherent(void) ...@@ -49,7 +49,7 @@ static inline int __ixp23xx_arch_is_coherent(void)
{ {
extern unsigned int processor_id; extern unsigned int processor_id;
if (((processor_id & 15) >= 2) || machine_is_roadrunner()) if (((processor_id & 15) >= 4) || machine_is_roadrunner())
return 1; return 1;
return 0; return 0;
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment