static void
 iop32x_irq_mask(struct irq_data *d)
 {
-       iop32x_mask &= ~(1 << d->irq);
+       iop32x_mask &= ~(1 << (d->irq - 1));
        intctl_write(iop32x_mask);
 }
 
 static void
 iop32x_irq_unmask(struct irq_data *d)
 {
-       iop32x_mask |= 1 << d->irq;
+       iop32x_mask |= 1 << (d->irq - 1);
        intctl_write(iop32x_mask);
 }
 
            machine_is_em7210())
                *IOP3XX_PCIIRSR = 0x0f;
 
-       for (i = 0; i < NR_IRQS; i++) {
+       for (i = 1; i < NR_IRQS; i++) {
                irq_set_chip_and_handler(i, &ext_chip, handle_level_irq);
                irq_clear_status_flags(i, IRQ_NOREQUEST | IRQ_NOPROBE);
        }
 
 #ifndef __IOP32X_IRQS_H
 #define __IOP32X_IRQS_H
 
+/* Interrupts in Linux start at 1, hardware starts at 0 */
+
+#define IOP_IRQ(x) ((x) + 1)
+
 /*
  * IOP80321 chipset interrupts
  */
-#define IRQ_IOP32X_DMA0_EOT    0
-#define IRQ_IOP32X_DMA0_EOC    1
-#define IRQ_IOP32X_DMA1_EOT    2
-#define IRQ_IOP32X_DMA1_EOC    3
-#define IRQ_IOP32X_AA_EOT      6
-#define IRQ_IOP32X_AA_EOC      7
-#define IRQ_IOP32X_CORE_PMON   8
-#define IRQ_IOP32X_TIMER0      9
-#define IRQ_IOP32X_TIMER1      10
-#define IRQ_IOP32X_I2C_0       11
-#define IRQ_IOP32X_I2C_1       12
-#define IRQ_IOP32X_MESSAGING   13
-#define IRQ_IOP32X_ATU_BIST    14
-#define IRQ_IOP32X_PERFMON     15
-#define IRQ_IOP32X_CORE_PMU    16
-#define IRQ_IOP32X_BIU_ERR     17
-#define IRQ_IOP32X_ATU_ERR     18
-#define IRQ_IOP32X_MCU_ERR     19
-#define IRQ_IOP32X_DMA0_ERR    20
-#define IRQ_IOP32X_DMA1_ERR    21
-#define IRQ_IOP32X_AA_ERR      23
-#define IRQ_IOP32X_MSG_ERR     24
-#define IRQ_IOP32X_SSP         25
-#define IRQ_IOP32X_XINT0       27
-#define IRQ_IOP32X_XINT1       28
-#define IRQ_IOP32X_XINT2       29
-#define IRQ_IOP32X_XINT3       30
-#define IRQ_IOP32X_HPI         31
+#define IRQ_IOP32X_DMA0_EOT    IOP_IRQ(0)
+#define IRQ_IOP32X_DMA0_EOC    IOP_IRQ(1)
+#define IRQ_IOP32X_DMA1_EOT    IOP_IRQ(2)
+#define IRQ_IOP32X_DMA1_EOC    IOP_IRQ(3)
+#define IRQ_IOP32X_AA_EOT      IOP_IRQ(6)
+#define IRQ_IOP32X_AA_EOC      IOP_IRQ(7)
+#define IRQ_IOP32X_CORE_PMON   IOP_IRQ(8)
+#define IRQ_IOP32X_TIMER0      IOP_IRQ(9)
+#define IRQ_IOP32X_TIMER1      IOP_IRQ(10)
+#define IRQ_IOP32X_I2C_0       IOP_IRQ(11)
+#define IRQ_IOP32X_I2C_1       IOP_IRQ(12)
+#define IRQ_IOP32X_MESSAGING   IOP_IRQ(13)
+#define IRQ_IOP32X_ATU_BIST    IOP_IRQ(14)
+#define IRQ_IOP32X_PERFMON     IOP_IRQ(15)
+#define IRQ_IOP32X_CORE_PMU    IOP_IRQ(16)
+#define IRQ_IOP32X_BIU_ERR     IOP_IRQ(17)
+#define IRQ_IOP32X_ATU_ERR     IOP_IRQ(18)
+#define IRQ_IOP32X_MCU_ERR     IOP_IRQ(19)
+#define IRQ_IOP32X_DMA0_ERR    IOP_IRQ(20)
+#define IRQ_IOP32X_DMA1_ERR    IOP_IRQ(21)
+#define IRQ_IOP32X_AA_ERR      IOP_IRQ(23)
+#define IRQ_IOP32X_MSG_ERR     IOP_IRQ(24)
+#define IRQ_IOP32X_SSP         IOP_IRQ(25)
+#define IRQ_IOP32X_XINT0       IOP_IRQ(27)
+#define IRQ_IOP32X_XINT1       IOP_IRQ(28)
+#define IRQ_IOP32X_XINT2       IOP_IRQ(29)
+#define IRQ_IOP32X_XINT3       IOP_IRQ(30)
+#define IRQ_IOP32X_HPI         IOP_IRQ(31)
 
 #endif