diff options
Diffstat (limited to 'arch/arm/mach-pxa/lubbock.c')
-rw-r--r-- | arch/arm/mach-pxa/lubbock.c | 17 |
1 files changed, 9 insertions, 8 deletions
diff --git a/arch/arm/mach-pxa/lubbock.c b/arch/arm/mach-pxa/lubbock.c index 3072dbea5c1f..dca20de306bb 100644 --- a/arch/arm/mach-pxa/lubbock.c +++ b/arch/arm/mach-pxa/lubbock.c | |||
@@ -122,15 +122,15 @@ EXPORT_SYMBOL(lubbock_set_misc_wr); | |||
122 | 122 | ||
123 | static unsigned long lubbock_irq_enabled; | 123 | static unsigned long lubbock_irq_enabled; |
124 | 124 | ||
125 | static void lubbock_mask_irq(unsigned int irq) | 125 | static void lubbock_mask_irq(struct irq_data *d) |
126 | { | 126 | { |
127 | int lubbock_irq = (irq - LUBBOCK_IRQ(0)); | 127 | int lubbock_irq = (d->irq - LUBBOCK_IRQ(0)); |
128 | LUB_IRQ_MASK_EN = (lubbock_irq_enabled &= ~(1 << lubbock_irq)); | 128 | LUB_IRQ_MASK_EN = (lubbock_irq_enabled &= ~(1 << lubbock_irq)); |
129 | } | 129 | } |
130 | 130 | ||
131 | static void lubbock_unmask_irq(unsigned int irq) | 131 | static void lubbock_unmask_irq(struct irq_data *d) |
132 | { | 132 | { |
133 | int lubbock_irq = (irq - LUBBOCK_IRQ(0)); | 133 | int lubbock_irq = (d->irq - LUBBOCK_IRQ(0)); |
134 | /* the irq can be acknowledged only if deasserted, so it's done here */ | 134 | /* the irq can be acknowledged only if deasserted, so it's done here */ |
135 | LUB_IRQ_SET_CLR &= ~(1 << lubbock_irq); | 135 | LUB_IRQ_SET_CLR &= ~(1 << lubbock_irq); |
136 | LUB_IRQ_MASK_EN = (lubbock_irq_enabled |= (1 << lubbock_irq)); | 136 | LUB_IRQ_MASK_EN = (lubbock_irq_enabled |= (1 << lubbock_irq)); |
@@ -138,16 +138,17 @@ static void lubbock_unmask_irq(unsigned int irq) | |||
138 | 138 | ||
139 | static struct irq_chip lubbock_irq_chip = { | 139 | static struct irq_chip lubbock_irq_chip = { |
140 | .name = "FPGA", | 140 | .name = "FPGA", |
141 | .ack = lubbock_mask_irq, | 141 | .irq_ack = lubbock_mask_irq, |
142 | .mask = lubbock_mask_irq, | 142 | .irq_mask = lubbock_mask_irq, |
143 | .unmask = lubbock_unmask_irq, | 143 | .irq_unmask = lubbock_unmask_irq, |
144 | }; | 144 | }; |
145 | 145 | ||
146 | static void lubbock_irq_handler(unsigned int irq, struct irq_desc *desc) | 146 | static void lubbock_irq_handler(unsigned int irq, struct irq_desc *desc) |
147 | { | 147 | { |
148 | unsigned long pending = LUB_IRQ_SET_CLR & lubbock_irq_enabled; | 148 | unsigned long pending = LUB_IRQ_SET_CLR & lubbock_irq_enabled; |
149 | do { | 149 | do { |
150 | desc->chip->ack(irq); /* clear our parent irq */ | 150 | /* clear our parent irq */ |
151 | desc->irq_data.chip->irq_ack(&desc->irq_data); | ||
151 | if (likely(pending)) { | 152 | if (likely(pending)) { |
152 | irq = LUBBOCK_IRQ(0) + __ffs(pending); | 153 | irq = LUBBOCK_IRQ(0) + __ffs(pending); |
153 | generic_handle_irq(irq); | 154 | generic_handle_irq(irq); |