diff options
Diffstat (limited to 'arch/arm/mach-pxa/mainstone.c')
-rw-r--r-- | arch/arm/mach-pxa/mainstone.c | 17 |
1 files changed, 9 insertions, 8 deletions
diff --git a/arch/arm/mach-pxa/mainstone.c b/arch/arm/mach-pxa/mainstone.c index 740c03590e3b..d4b6f2375f2c 100644 --- a/arch/arm/mach-pxa/mainstone.c +++ b/arch/arm/mach-pxa/mainstone.c | |||
@@ -123,15 +123,15 @@ static unsigned long mainstone_pin_config[] = { | |||
123 | 123 | ||
124 | static unsigned long mainstone_irq_enabled; | 124 | static unsigned long mainstone_irq_enabled; |
125 | 125 | ||
126 | static void mainstone_mask_irq(unsigned int irq) | 126 | static void mainstone_mask_irq(struct irq_data *d) |
127 | { | 127 | { |
128 | int mainstone_irq = (irq - MAINSTONE_IRQ(0)); | 128 | int mainstone_irq = (d->irq - MAINSTONE_IRQ(0)); |
129 | MST_INTMSKENA = (mainstone_irq_enabled &= ~(1 << mainstone_irq)); | 129 | MST_INTMSKENA = (mainstone_irq_enabled &= ~(1 << mainstone_irq)); |
130 | } | 130 | } |
131 | 131 | ||
132 | static void mainstone_unmask_irq(unsigned int irq) | 132 | static void mainstone_unmask_irq(struct irq_data *d) |
133 | { | 133 | { |
134 | int mainstone_irq = (irq - MAINSTONE_IRQ(0)); | 134 | int mainstone_irq = (d->irq - MAINSTONE_IRQ(0)); |
135 | /* the irq can be acknowledged only if deasserted, so it's done here */ | 135 | /* the irq can be acknowledged only if deasserted, so it's done here */ |
136 | MST_INTSETCLR &= ~(1 << mainstone_irq); | 136 | MST_INTSETCLR &= ~(1 << mainstone_irq); |
137 | MST_INTMSKENA = (mainstone_irq_enabled |= (1 << mainstone_irq)); | 137 | MST_INTMSKENA = (mainstone_irq_enabled |= (1 << mainstone_irq)); |
@@ -139,16 +139,17 @@ static void mainstone_unmask_irq(unsigned int irq) | |||
139 | 139 | ||
140 | static struct irq_chip mainstone_irq_chip = { | 140 | static struct irq_chip mainstone_irq_chip = { |
141 | .name = "FPGA", | 141 | .name = "FPGA", |
142 | .ack = mainstone_mask_irq, | 142 | .irq_ack = mainstone_mask_irq, |
143 | .mask = mainstone_mask_irq, | 143 | .irq_mask = mainstone_mask_irq, |
144 | .unmask = mainstone_unmask_irq, | 144 | .irq_unmask = mainstone_unmask_irq, |
145 | }; | 145 | }; |
146 | 146 | ||
147 | static void mainstone_irq_handler(unsigned int irq, struct irq_desc *desc) | 147 | static void mainstone_irq_handler(unsigned int irq, struct irq_desc *desc) |
148 | { | 148 | { |
149 | unsigned long pending = MST_INTSETCLR & mainstone_irq_enabled; | 149 | unsigned long pending = MST_INTSETCLR & mainstone_irq_enabled; |
150 | do { | 150 | do { |
151 | desc->chip->ack(irq); /* clear useless edge notification */ | 151 | /* clear useless edge notification */ |
152 | desc->irq_data.chip->irq_ack(&desc->irq_data); | ||
152 | if (likely(pending)) { | 153 | if (likely(pending)) { |
153 | irq = MAINSTONE_IRQ(0) + __ffs(pending); | 154 | irq = MAINSTONE_IRQ(0) + __ffs(pending); |
154 | generic_handle_irq(irq); | 155 | generic_handle_irq(irq); |