diff options
Diffstat (limited to 'arch/powerpc/platforms/cell/interrupt.c')
-rw-r--r-- | arch/powerpc/platforms/cell/interrupt.c | 10 |
1 files changed, 7 insertions, 3 deletions
diff --git a/arch/powerpc/platforms/cell/interrupt.c b/arch/powerpc/platforms/cell/interrupt.c index 6cc59e0b4582..8533f13a5ed1 100644 --- a/arch/powerpc/platforms/cell/interrupt.c +++ b/arch/powerpc/platforms/cell/interrupt.c | |||
@@ -101,7 +101,7 @@ static void iic_ioexc_eoi(unsigned int irq) | |||
101 | static void iic_ioexc_cascade(unsigned int irq, struct irq_desc *desc, | 101 | static void iic_ioexc_cascade(unsigned int irq, struct irq_desc *desc, |
102 | struct pt_regs *regs) | 102 | struct pt_regs *regs) |
103 | { | 103 | { |
104 | struct cbe_iic_regs *node_iic = desc->handler_data; | 104 | struct cbe_iic_regs __iomem *node_iic = (void __iomem *)desc->handler_data; |
105 | unsigned int base = (irq & 0xffffff00) | IIC_IRQ_TYPE_IOEXC; | 105 | unsigned int base = (irq & 0xffffff00) | IIC_IRQ_TYPE_IOEXC; |
106 | unsigned long bits, ack; | 106 | unsigned long bits, ack; |
107 | int cascade; | 107 | int cascade; |
@@ -320,7 +320,7 @@ static int __init setup_iic(void) | |||
320 | struct device_node *dn; | 320 | struct device_node *dn; |
321 | struct resource r0, r1; | 321 | struct resource r0, r1; |
322 | unsigned int node, cascade, found = 0; | 322 | unsigned int node, cascade, found = 0; |
323 | struct cbe_iic_regs *node_iic; | 323 | struct cbe_iic_regs __iomem *node_iic; |
324 | const u32 *np; | 324 | const u32 *np; |
325 | 325 | ||
326 | for (dn = NULL; | 326 | for (dn = NULL; |
@@ -357,7 +357,11 @@ static int __init setup_iic(void) | |||
357 | cascade = irq_create_mapping(iic_host, cascade); | 357 | cascade = irq_create_mapping(iic_host, cascade); |
358 | if (cascade == NO_IRQ) | 358 | if (cascade == NO_IRQ) |
359 | continue; | 359 | continue; |
360 | set_irq_data(cascade, node_iic); | 360 | /* |
361 | * irq_data is a generic pointer that gets passed back | ||
362 | * to us later, so the forced cast is fine. | ||
363 | */ | ||
364 | set_irq_data(cascade, (void __force *)node_iic); | ||
361 | set_irq_chained_handler(cascade , iic_ioexc_cascade); | 365 | set_irq_chained_handler(cascade , iic_ioexc_cascade); |
362 | out_be64(&node_iic->iic_ir, | 366 | out_be64(&node_iic->iic_ir, |
363 | (1 << 12) /* priority */ | | 367 | (1 << 12) /* priority */ | |