aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorKrzysztof Hałasa <khc@pm.waw.pl>2011-07-31 20:28:13 +0200
committerKrzysztof Hałasa <khc@pm.waw.pl>2013-03-14 21:58:59 +0100
commitebed8c5b9d90da9ad802bc3411a0622b073cc8bc (patch)
treeb4b9689d5f45b0070da6f439b90776280ead3fd8
parent2c2801f2a9ace0a3165394cee24c44d9ab0790e0 (diff)
downloadlinux-ixp4xx-max.tar.gz
IXP4xx: Fix Goramo Multilink platform for v2.6.39.ixp4xx-max
Signed-off-by: Krzysztof Hałasa <khc@pm.waw.pl>
-rw-r--r--arch/arm/mach-ixp4xx/goramo_mlr.c39
1 files changed, 18 insertions, 21 deletions
diff --git a/arch/arm/mach-ixp4xx/goramo_mlr.c b/arch/arm/mach-ixp4xx/goramo_mlr.c
index 7d2d138b910294..c2d0ee45e8bd5f 100644
--- a/arch/arm/mach-ixp4xx/goramo_mlr.c
+++ b/arch/arm/mach-ixp4xx/goramo_mlr.c
@@ -709,21 +709,21 @@ static inline void setup_cs5536_gpio(u16 value, u16 address)
outl(((~(u32)value) << 16) | value, address);
}
-static void cs5536_irq_ack(unsigned int irq)
+static void cs5536_irq_ack(struct irq_data *data)
{
#if DEBUG_IRQ
printk(KERN_INFO "ACK %u GPIO %X\n",
- irq, !!(readb(IXP4XX_GPIO_BASE_VIRT + 0x0B) & 8));
+ data->irq, !!(readb(IXP4XX_GPIO_BASE_VIRT + 0x0B) & 8));
#endif
}
-static void cs5536_irq_mask(unsigned int irq)
+static void cs5536_irq_mask(struct irq_data *data)
{
#if DEBUG_IRQ
printk(KERN_INFO "MASK %u GPIO %X\n",
- irq, !!(readb(IXP4XX_GPIO_BASE_VIRT + 0x0B) & 8));
+ data->irq, !!(readb(IXP4XX_GPIO_BASE_VIRT + 0x0B) & 8));
#endif
- cs5536_slave_irq_mask |= 1 << (irq - IRQ_CS5536_CPU_BASE +
+ cs5536_slave_irq_mask |= 1 << (data->irq - IRQ_CS5536_CPU_BASE +
IRQ_CS5536_SLAVE_PIC_BASE);
outb(cs5536_slave_irq_mask, 0xA1);
#if DEBUG_IRQ
@@ -732,13 +732,13 @@ static void cs5536_irq_mask(unsigned int irq)
#endif
}
-static void cs5536_irq_unmask(unsigned int irq)
+static void cs5536_irq_unmask(struct irq_data *data)
{
#if DEBUG_IRQ
printk(KERN_INFO "UNMASK %u GPIO %X\n",
- irq, !!(readb(IXP4XX_GPIO_BASE_VIRT + 0x0B) & 8));
+ data->irq, !!(readb(IXP4XX_GPIO_BASE_VIRT + 0x0B) & 8));
#endif
- cs5536_slave_irq_mask &= ~(1 << (irq - IRQ_CS5536_CPU_BASE +
+ cs5536_slave_irq_mask &= ~(1 << (data->irq - IRQ_CS5536_CPU_BASE +
IRQ_CS5536_SLAVE_PIC_BASE));
outb(cs5536_slave_irq_mask, 0xA1);
#if DEBUG_IRQ
@@ -755,7 +755,7 @@ static void cs5536_irq_handler(unsigned int irq, struct irq_desc *desc)
printk(KERN_INFO "HANDLER %u GPIO %X status %x\n",
irq, !!(readb(IXP4XX_GPIO_BASE_VIRT + 0x0B) & 8), desc->status);
#endif
- desc->chip->ack(irq);
+ desc->irq_data.chip->irq_ack(&desc->irq_data);
read_msr(0x51400027, &h, &l);
if (l & 0x40000000) {
struct irq_desc *d = irq_to_desc(IRQ_CS5536_USB);
@@ -789,9 +789,9 @@ static void __init gmlr_pci_preinit(void)
static struct irq_chip cs5536_irqchip = {
.name = "CS5536",
- .ack = cs5536_irq_ack,
- .mask = cs5536_irq_mask,
- .unmask = cs5536_irq_unmask,
+ .irq_ack = cs5536_irq_ack,
+ .irq_mask = cs5536_irq_mask,
+ .irq_unmask = cs5536_irq_unmask,
};
static void __init gmlr_pci_postinit(void)
@@ -912,19 +912,16 @@ static void __init gmlr_pci_postinit(void)
write_msr(0x51400020, 0, 0xF00); /* USB uses IRQ15 (Y15) */
write_msr(0x51000010, 0x44000030, 0x00000013); /* CIS mode C */
- set_irq_chip(IRQ_CS5536_IDE, &cs5536_irqchip);
- set_irq_handler(IRQ_CS5536_IDE, handle_level_irq);
+ irq_set_chip_and_handler(IRQ_CS5536_IDE, &cs5536_irqchip, handle_level_irq);
set_irq_flags(IRQ_CS5536_IDE, IRQF_VALID);
- irq_to_desc(IRQ_CS5536_IDE)->status |= IRQ_LEVEL;
+ irq_set_status_flags(IRQ_CS5536_IDE, IRQ_LEVEL);
- set_irq_chip(IRQ_CS5536_USB, &cs5536_irqchip);
- set_irq_handler(IRQ_CS5536_USB, handle_level_irq);
+ irq_set_chip_and_handler(IRQ_CS5536_USB, &cs5536_irqchip, handle_level_irq);
set_irq_flags(IRQ_CS5536_USB, IRQF_VALID);
- irq_to_desc(IRQ_CS5536_USB)->status |= IRQ_LEVEL;
+ irq_set_status_flags(IRQ_CS5536_USB, IRQ_LEVEL);
- irq_to_desc(IXP4XX_GPIO_IRQ(GPIO_IRQ_NEC_CS5536))->status |=
- IRQ_LEVEL;
- set_irq_chained_handler(IXP4XX_GPIO_IRQ(GPIO_IRQ_NEC_CS5536),
+ irq_set_status_flags(IXP4XX_GPIO_IRQ(GPIO_IRQ_NEC_CS5536), IRQ_LEVEL);
+ irq_set_chained_handler(IXP4XX_GPIO_IRQ(GPIO_IRQ_NEC_CS5536),
cs5536_irq_handler);
}
}