diff options
-rw-r--r-- | drivers/gpio/gpio-bcm-kona.c | 2 | ||||
-rw-r--r-- | drivers/gpio/gpio-davinci.c | 19 | ||||
-rw-r--r-- | drivers/gpio/gpio-dwapb.c | 2 | ||||
-rw-r--r-- | drivers/gpio/gpio-ep93xx.c | 6 | ||||
-rw-r--r-- | drivers/gpio/gpio-mpc8xxx.c | 7 | ||||
-rw-r--r-- | drivers/gpio/gpio-msm-v2.c | 22 | ||||
-rw-r--r-- | drivers/gpio/gpio-mvebu.c | 8 | ||||
-rw-r--r-- | drivers/gpio/gpio-mxc.c | 6 | ||||
-rw-r--r-- | drivers/gpio/gpio-mxs.c | 2 | ||||
-rw-r--r-- | drivers/gpio/gpio-omap.c | 6 | ||||
-rw-r--r-- | drivers/gpio/gpio-pch.c | 4 | ||||
-rw-r--r-- | drivers/gpio/gpio-sa1100.c | 4 | ||||
-rw-r--r-- | drivers/gpio/gpio-tegra.c | 8 | ||||
-rw-r--r-- | drivers/gpio/gpio-timberdale.c | 8 | ||||
-rw-r--r-- | drivers/gpio/gpio-tz1090.c | 4 | ||||
-rw-r--r-- | drivers/gpio/gpio-vf610.c | 2 | ||||
-rw-r--r-- | drivers/gpio/gpio-zynq.c | 6 | ||||
-rw-r--r-- | drivers/gpio/gpiolib.c | 4 |
18 files changed, 55 insertions, 65 deletions
diff --git a/drivers/gpio/gpio-bcm-kona.c b/drivers/gpio/gpio-bcm-kona.c index 40343fa92c7b..109083f65248 100644 --- a/drivers/gpio/gpio-bcm-kona.c +++ b/drivers/gpio/gpio-bcm-kona.c | |||
@@ -438,7 +438,7 @@ static void bcm_kona_gpio_irq_handler(unsigned int irq, struct irq_desc *desc) | |||
438 | void __iomem *reg_base; | 438 | void __iomem *reg_base; |
439 | int bit, bank_id; | 439 | int bit, bank_id; |
440 | unsigned long sta; | 440 | unsigned long sta; |
441 | struct bcm_kona_gpio_bank *bank = irq_get_handler_data(irq); | 441 | struct bcm_kona_gpio_bank *bank = irq_desc_get_handler_data(desc); |
442 | struct irq_chip *chip = irq_desc_get_chip(desc); | 442 | struct irq_chip *chip = irq_desc_get_chip(desc); |
443 | 443 | ||
444 | chained_irq_enter(chip, desc); | 444 | chained_irq_enter(chip, desc); |
diff --git a/drivers/gpio/gpio-davinci.c b/drivers/gpio/gpio-davinci.c index 86cfe1892cae..7be269402baf 100644 --- a/drivers/gpio/gpio-davinci.c +++ b/drivers/gpio/gpio-davinci.c | |||
@@ -65,11 +65,11 @@ static struct davinci_gpio_regs __iomem *gpio2regs(unsigned gpio) | |||
65 | return ptr; | 65 | return ptr; |
66 | } | 66 | } |
67 | 67 | ||
68 | static inline struct davinci_gpio_regs __iomem *irq2regs(int irq) | 68 | static inline struct davinci_gpio_regs __iomem *irq2regs(struct irq_data *d) |
69 | { | 69 | { |
70 | struct davinci_gpio_regs __iomem *g; | 70 | struct davinci_gpio_regs __iomem *g; |
71 | 71 | ||
72 | g = (__force struct davinci_gpio_regs __iomem *)irq_get_chip_data(irq); | 72 | g = (__force struct davinci_gpio_regs __iomem *)irq_data_get_irq_chip_data(d); |
73 | 73 | ||
74 | return g; | 74 | return g; |
75 | } | 75 | } |
@@ -287,7 +287,7 @@ static int davinci_gpio_probe(struct platform_device *pdev) | |||
287 | 287 | ||
288 | static void gpio_irq_disable(struct irq_data *d) | 288 | static void gpio_irq_disable(struct irq_data *d) |
289 | { | 289 | { |
290 | struct davinci_gpio_regs __iomem *g = irq2regs(d->irq); | 290 | struct davinci_gpio_regs __iomem *g = irq2regs(d); |
291 | u32 mask = (u32) irq_data_get_irq_handler_data(d); | 291 | u32 mask = (u32) irq_data_get_irq_handler_data(d); |
292 | 292 | ||
293 | writel_relaxed(mask, &g->clr_falling); | 293 | writel_relaxed(mask, &g->clr_falling); |
@@ -296,7 +296,7 @@ static void gpio_irq_disable(struct irq_data *d) | |||
296 | 296 | ||
297 | static void gpio_irq_enable(struct irq_data *d) | 297 | static void gpio_irq_enable(struct irq_data *d) |
298 | { | 298 | { |
299 | struct davinci_gpio_regs __iomem *g = irq2regs(d->irq); | 299 | struct davinci_gpio_regs __iomem *g = irq2regs(d); |
300 | u32 mask = (u32) irq_data_get_irq_handler_data(d); | 300 | u32 mask = (u32) irq_data_get_irq_handler_data(d); |
301 | unsigned status = irqd_get_trigger_type(d); | 301 | unsigned status = irqd_get_trigger_type(d); |
302 | 302 | ||
@@ -327,8 +327,9 @@ static struct irq_chip gpio_irqchip = { | |||
327 | }; | 327 | }; |
328 | 328 | ||
329 | static void | 329 | static void |
330 | gpio_irq_handler(unsigned irq, struct irq_desc *desc) | 330 | gpio_irq_handler(unsigned __irq, struct irq_desc *desc) |
331 | { | 331 | { |
332 | unsigned int irq = irq_desc_get_irq(desc); | ||
332 | struct davinci_gpio_regs __iomem *g; | 333 | struct davinci_gpio_regs __iomem *g; |
333 | u32 mask = 0xffff; | 334 | u32 mask = 0xffff; |
334 | struct davinci_gpio_controller *d; | 335 | struct davinci_gpio_controller *d; |
@@ -396,7 +397,7 @@ static int gpio_irq_type_unbanked(struct irq_data *data, unsigned trigger) | |||
396 | struct davinci_gpio_regs __iomem *g; | 397 | struct davinci_gpio_regs __iomem *g; |
397 | u32 mask; | 398 | u32 mask; |
398 | 399 | ||
399 | d = (struct davinci_gpio_controller *)data->handler_data; | 400 | d = (struct davinci_gpio_controller *)irq_data_get_irq_handler_data(data); |
400 | g = (struct davinci_gpio_regs __iomem *)d->regs; | 401 | g = (struct davinci_gpio_regs __iomem *)d->regs; |
401 | mask = __gpio_mask(data->irq - d->gpio_irq); | 402 | mask = __gpio_mask(data->irq - d->gpio_irq); |
402 | 403 | ||
@@ -578,15 +579,13 @@ static int davinci_gpio_irq_setup(struct platform_device *pdev) | |||
578 | writel_relaxed(~0, &g->clr_falling); | 579 | writel_relaxed(~0, &g->clr_falling); |
579 | writel_relaxed(~0, &g->clr_rising); | 580 | writel_relaxed(~0, &g->clr_rising); |
580 | 581 | ||
581 | /* set up all irqs in this bank */ | ||
582 | irq_set_chained_handler(bank_irq, gpio_irq_handler); | ||
583 | |||
584 | /* | 582 | /* |
585 | * Each chip handles 32 gpios, and each irq bank consists of 16 | 583 | * Each chip handles 32 gpios, and each irq bank consists of 16 |
586 | * gpio irqs. Pass the irq bank's corresponding controller to | 584 | * gpio irqs. Pass the irq bank's corresponding controller to |
587 | * the chained irq handler. | 585 | * the chained irq handler. |
588 | */ | 586 | */ |
589 | irq_set_handler_data(bank_irq, &chips[gpio / 32]); | 587 | irq_set_chained_handler_and_data(bank_irq, gpio_irq_handler, |
588 | &chips[gpio / 32]); | ||
590 | 589 | ||
591 | binten |= BIT(bank); | 590 | binten |= BIT(bank); |
592 | } | 591 | } |
diff --git a/drivers/gpio/gpio-dwapb.c b/drivers/gpio/gpio-dwapb.c index 55fa9853a7f2..c5be4b9b8baf 100644 --- a/drivers/gpio/gpio-dwapb.c +++ b/drivers/gpio/gpio-dwapb.c | |||
@@ -149,7 +149,7 @@ static u32 dwapb_do_irq(struct dwapb_gpio *gpio) | |||
149 | 149 | ||
150 | static void dwapb_irq_handler(u32 irq, struct irq_desc *desc) | 150 | static void dwapb_irq_handler(u32 irq, struct irq_desc *desc) |
151 | { | 151 | { |
152 | struct dwapb_gpio *gpio = irq_get_handler_data(irq); | 152 | struct dwapb_gpio *gpio = irq_desc_get_handler_data(desc); |
153 | struct irq_chip *chip = irq_desc_get_chip(desc); | 153 | struct irq_chip *chip = irq_desc_get_chip(desc); |
154 | 154 | ||
155 | dwapb_do_irq(gpio); | 155 | dwapb_do_irq(gpio); |
diff --git a/drivers/gpio/gpio-ep93xx.c b/drivers/gpio/gpio-ep93xx.c index 45684f36ddb1..dc0c40935940 100644 --- a/drivers/gpio/gpio-ep93xx.c +++ b/drivers/gpio/gpio-ep93xx.c | |||
@@ -100,13 +100,15 @@ static void ep93xx_gpio_ab_irq_handler(unsigned int irq, struct irq_desc *desc) | |||
100 | } | 100 | } |
101 | } | 101 | } |
102 | 102 | ||
103 | static void ep93xx_gpio_f_irq_handler(unsigned int irq, struct irq_desc *desc) | 103 | static void ep93xx_gpio_f_irq_handler(unsigned int __irq, |
104 | struct irq_desc *desc) | ||
104 | { | 105 | { |
105 | /* | 106 | /* |
106 | * map discontiguous hw irq range to continuous sw irq range: | 107 | * map discontiguous hw irq range to continuous sw irq range: |
107 | * | 108 | * |
108 | * IRQ_EP93XX_GPIO{0..7}MUX -> gpio_to_irq(EP93XX_GPIO_LINE_F({0..7}) | 109 | * IRQ_EP93XX_GPIO{0..7}MUX -> gpio_to_irq(EP93XX_GPIO_LINE_F({0..7}) |
109 | */ | 110 | */ |
111 | unsigned int irq = irq_desc_get_irq(desc); | ||
110 | int port_f_idx = ((irq + 1) & 7) ^ 4; /* {19..22,47..50} -> {0..7} */ | 112 | int port_f_idx = ((irq + 1) & 7) ^ 4; /* {19..22,47..50} -> {0..7} */ |
111 | int gpio_irq = gpio_to_irq(EP93XX_GPIO_LINE_F(0)) + port_f_idx; | 113 | int gpio_irq = gpio_to_irq(EP93XX_GPIO_LINE_F(0)) + port_f_idx; |
112 | 114 | ||
@@ -208,7 +210,7 @@ static int ep93xx_gpio_irq_type(struct irq_data *d, unsigned int type) | |||
208 | return -EINVAL; | 210 | return -EINVAL; |
209 | } | 211 | } |
210 | 212 | ||
211 | __irq_set_handler_locked(d->irq, handler); | 213 | irq_set_handler_locked(d, handler); |
212 | 214 | ||
213 | gpio_int_enabled[port] |= port_mask; | 215 | gpio_int_enabled[port] |= port_mask; |
214 | 216 | ||
diff --git a/drivers/gpio/gpio-mpc8xxx.c b/drivers/gpio/gpio-mpc8xxx.c index 20aa66f34f6e..da8e89205f37 100644 --- a/drivers/gpio/gpio-mpc8xxx.c +++ b/drivers/gpio/gpio-mpc8xxx.c | |||
@@ -396,8 +396,8 @@ static int mpc8xxx_probe(struct platform_device *pdev) | |||
396 | out_be32(mm_gc->regs + GPIO_IER, 0xffffffff); | 396 | out_be32(mm_gc->regs + GPIO_IER, 0xffffffff); |
397 | out_be32(mm_gc->regs + GPIO_IMR, 0); | 397 | out_be32(mm_gc->regs + GPIO_IMR, 0); |
398 | 398 | ||
399 | irq_set_handler_data(mpc8xxx_gc->irqn, mpc8xxx_gc); | 399 | irq_set_chained_handler_and_data(mpc8xxx_gc->irqn, |
400 | irq_set_chained_handler(mpc8xxx_gc->irqn, mpc8xxx_gpio_irq_cascade); | 400 | mpc8xxx_gpio_irq_cascade, mpc8xxx_gc); |
401 | 401 | ||
402 | return 0; | 402 | return 0; |
403 | } | 403 | } |
@@ -407,8 +407,7 @@ static int mpc8xxx_remove(struct platform_device *pdev) | |||
407 | struct mpc8xxx_gpio_chip *mpc8xxx_gc = platform_get_drvdata(pdev); | 407 | struct mpc8xxx_gpio_chip *mpc8xxx_gc = platform_get_drvdata(pdev); |
408 | 408 | ||
409 | if (mpc8xxx_gc->irq) { | 409 | if (mpc8xxx_gc->irq) { |
410 | irq_set_handler_data(mpc8xxx_gc->irqn, NULL); | 410 | irq_set_chained_handler_and_data(mpc8xxx_gc->irqn, NULL, NULL); |
411 | irq_set_chained_handler(mpc8xxx_gc->irqn, NULL); | ||
412 | irq_domain_remove(mpc8xxx_gc->irq); | 411 | irq_domain_remove(mpc8xxx_gc->irq); |
413 | } | 412 | } |
414 | 413 | ||
diff --git a/drivers/gpio/gpio-msm-v2.c b/drivers/gpio/gpio-msm-v2.c index 52ff18229fdc..1f0fb19209bf 100644 --- a/drivers/gpio/gpio-msm-v2.c +++ b/drivers/gpio/gpio-msm-v2.c | |||
@@ -187,14 +187,6 @@ static int msm_gpio_to_irq(struct gpio_chip *chip, unsigned offset) | |||
187 | return irq_create_mapping(domain, offset); | 187 | return irq_create_mapping(domain, offset); |
188 | } | 188 | } |
189 | 189 | ||
190 | static inline int msm_irq_to_gpio(struct gpio_chip *chip, unsigned irq) | ||
191 | { | ||
192 | struct irq_data *irq_data = irq_get_irq_data(irq); | ||
193 | |||
194 | return irq_data->hwirq; | ||
195 | } | ||
196 | |||
197 | |||
198 | /* For dual-edge interrupts in software, since the hardware has no | 190 | /* For dual-edge interrupts in software, since the hardware has no |
199 | * such support: | 191 | * such support: |
200 | * | 192 | * |
@@ -238,7 +230,7 @@ static void msm_gpio_update_dual_edge_pos(unsigned gpio) | |||
238 | 230 | ||
239 | static void msm_gpio_irq_ack(struct irq_data *d) | 231 | static void msm_gpio_irq_ack(struct irq_data *d) |
240 | { | 232 | { |
241 | int gpio = msm_irq_to_gpio(&msm_gpio.gpio_chip, d->irq); | 233 | int gpio = d->hwirq; |
242 | 234 | ||
243 | writel(BIT(INTR_STATUS), GPIO_INTR_STATUS(gpio)); | 235 | writel(BIT(INTR_STATUS), GPIO_INTR_STATUS(gpio)); |
244 | if (test_bit(gpio, msm_gpio.dual_edge_irqs)) | 236 | if (test_bit(gpio, msm_gpio.dual_edge_irqs)) |
@@ -247,8 +239,8 @@ static void msm_gpio_irq_ack(struct irq_data *d) | |||
247 | 239 | ||
248 | static void msm_gpio_irq_mask(struct irq_data *d) | 240 | static void msm_gpio_irq_mask(struct irq_data *d) |
249 | { | 241 | { |
250 | int gpio = msm_irq_to_gpio(&msm_gpio.gpio_chip, d->irq); | ||
251 | unsigned long irq_flags; | 242 | unsigned long irq_flags; |
243 | int gpio = d->hwirq; | ||
252 | 244 | ||
253 | spin_lock_irqsave(&tlmm_lock, irq_flags); | 245 | spin_lock_irqsave(&tlmm_lock, irq_flags); |
254 | writel(TARGET_PROC_NONE, GPIO_INTR_CFG_SU(gpio)); | 246 | writel(TARGET_PROC_NONE, GPIO_INTR_CFG_SU(gpio)); |
@@ -259,8 +251,8 @@ static void msm_gpio_irq_mask(struct irq_data *d) | |||
259 | 251 | ||
260 | static void msm_gpio_irq_unmask(struct irq_data *d) | 252 | static void msm_gpio_irq_unmask(struct irq_data *d) |
261 | { | 253 | { |
262 | int gpio = msm_irq_to_gpio(&msm_gpio.gpio_chip, d->irq); | ||
263 | unsigned long irq_flags; | 254 | unsigned long irq_flags; |
255 | int gpio = d->hwirq; | ||
264 | 256 | ||
265 | spin_lock_irqsave(&tlmm_lock, irq_flags); | 257 | spin_lock_irqsave(&tlmm_lock, irq_flags); |
266 | __set_bit(gpio, msm_gpio.enabled_irqs); | 258 | __set_bit(gpio, msm_gpio.enabled_irqs); |
@@ -271,8 +263,8 @@ static void msm_gpio_irq_unmask(struct irq_data *d) | |||
271 | 263 | ||
272 | static int msm_gpio_irq_set_type(struct irq_data *d, unsigned int flow_type) | 264 | static int msm_gpio_irq_set_type(struct irq_data *d, unsigned int flow_type) |
273 | { | 265 | { |
274 | int gpio = msm_irq_to_gpio(&msm_gpio.gpio_chip, d->irq); | ||
275 | unsigned long irq_flags; | 266 | unsigned long irq_flags; |
267 | int gpio = d->hwirq; | ||
276 | uint32_t bits; | 268 | uint32_t bits; |
277 | 269 | ||
278 | spin_lock_irqsave(&tlmm_lock, irq_flags); | 270 | spin_lock_irqsave(&tlmm_lock, irq_flags); |
@@ -281,14 +273,14 @@ static int msm_gpio_irq_set_type(struct irq_data *d, unsigned int flow_type) | |||
281 | 273 | ||
282 | if (flow_type & IRQ_TYPE_EDGE_BOTH) { | 274 | if (flow_type & IRQ_TYPE_EDGE_BOTH) { |
283 | bits |= BIT(INTR_DECT_CTL); | 275 | bits |= BIT(INTR_DECT_CTL); |
284 | __irq_set_handler_locked(d->irq, handle_edge_irq); | 276 | irq_set_handler_locked(d, handle_edge_irq); |
285 | if ((flow_type & IRQ_TYPE_EDGE_BOTH) == IRQ_TYPE_EDGE_BOTH) | 277 | if ((flow_type & IRQ_TYPE_EDGE_BOTH) == IRQ_TYPE_EDGE_BOTH) |
286 | __set_bit(gpio, msm_gpio.dual_edge_irqs); | 278 | __set_bit(gpio, msm_gpio.dual_edge_irqs); |
287 | else | 279 | else |
288 | __clear_bit(gpio, msm_gpio.dual_edge_irqs); | 280 | __clear_bit(gpio, msm_gpio.dual_edge_irqs); |
289 | } else { | 281 | } else { |
290 | bits &= ~BIT(INTR_DECT_CTL); | 282 | bits &= ~BIT(INTR_DECT_CTL); |
291 | __irq_set_handler_locked(d->irq, handle_level_irq); | 283 | irq_set_handler_locked(d, handle_level_irq); |
292 | __clear_bit(gpio, msm_gpio.dual_edge_irqs); | 284 | __clear_bit(gpio, msm_gpio.dual_edge_irqs); |
293 | } | 285 | } |
294 | 286 | ||
@@ -331,7 +323,7 @@ static void msm_summary_irq_handler(unsigned int irq, struct irq_desc *desc) | |||
331 | 323 | ||
332 | static int msm_gpio_irq_set_wake(struct irq_data *d, unsigned int on) | 324 | static int msm_gpio_irq_set_wake(struct irq_data *d, unsigned int on) |
333 | { | 325 | { |
334 | int gpio = msm_irq_to_gpio(&msm_gpio.gpio_chip, d->irq); | 326 | int gpio = d->hwirq; |
335 | 327 | ||
336 | if (on) { | 328 | if (on) { |
337 | if (bitmap_empty(msm_gpio.wake_irqs, MAX_NR_GPIO)) | 329 | if (bitmap_empty(msm_gpio.wake_irqs, MAX_NR_GPIO)) |
diff --git a/drivers/gpio/gpio-mvebu.c b/drivers/gpio/gpio-mvebu.c index 1a54205860f5..b396bf3bf294 100644 --- a/drivers/gpio/gpio-mvebu.c +++ b/drivers/gpio/gpio-mvebu.c | |||
@@ -458,9 +458,9 @@ static int mvebu_gpio_irq_set_type(struct irq_data *d, unsigned int type) | |||
458 | return 0; | 458 | return 0; |
459 | } | 459 | } |
460 | 460 | ||
461 | static void mvebu_gpio_irq_handler(unsigned int irq, struct irq_desc *desc) | 461 | static void mvebu_gpio_irq_handler(unsigned int __irq, struct irq_desc *desc) |
462 | { | 462 | { |
463 | struct mvebu_gpio_chip *mvchip = irq_get_handler_data(irq); | 463 | struct mvebu_gpio_chip *mvchip = irq_desc_get_handler_data(desc); |
464 | struct irq_chip *chip = irq_desc_get_chip(desc); | 464 | struct irq_chip *chip = irq_desc_get_chip(desc); |
465 | u32 cause, type; | 465 | u32 cause, type; |
466 | int i; | 466 | int i; |
@@ -787,8 +787,8 @@ static int mvebu_gpio_probe(struct platform_device *pdev) | |||
787 | 787 | ||
788 | if (irq < 0) | 788 | if (irq < 0) |
789 | continue; | 789 | continue; |
790 | irq_set_handler_data(irq, mvchip); | 790 | irq_set_chained_handler_and_data(irq, mvebu_gpio_irq_handler, |
791 | irq_set_chained_handler(irq, mvebu_gpio_irq_handler); | 791 | mvchip); |
792 | } | 792 | } |
793 | 793 | ||
794 | mvchip->irqbase = irq_alloc_descs(-1, 0, ngpios, -1); | 794 | mvchip->irqbase = irq_alloc_descs(-1, 0, ngpios, -1); |
diff --git a/drivers/gpio/gpio-mxc.c b/drivers/gpio/gpio-mxc.c index ec1eb1b7250f..0f740276ed2b 100644 --- a/drivers/gpio/gpio-mxc.c +++ b/drivers/gpio/gpio-mxc.c | |||
@@ -275,8 +275,8 @@ static void mxc_gpio_irq_handler(struct mxc_gpio_port *port, u32 irq_stat) | |||
275 | static void mx3_gpio_irq_handler(u32 irq, struct irq_desc *desc) | 275 | static void mx3_gpio_irq_handler(u32 irq, struct irq_desc *desc) |
276 | { | 276 | { |
277 | u32 irq_stat; | 277 | u32 irq_stat; |
278 | struct mxc_gpio_port *port = irq_get_handler_data(irq); | 278 | struct mxc_gpio_port *port = irq_desc_get_handler_data(desc); |
279 | struct irq_chip *chip = irq_get_chip(irq); | 279 | struct irq_chip *chip = irq_desc_get_chip(desc); |
280 | 280 | ||
281 | chained_irq_enter(chip, desc); | 281 | chained_irq_enter(chip, desc); |
282 | 282 | ||
@@ -292,7 +292,7 @@ static void mx2_gpio_irq_handler(u32 irq, struct irq_desc *desc) | |||
292 | { | 292 | { |
293 | u32 irq_msk, irq_stat; | 293 | u32 irq_msk, irq_stat; |
294 | struct mxc_gpio_port *port; | 294 | struct mxc_gpio_port *port; |
295 | struct irq_chip *chip = irq_get_chip(irq); | 295 | struct irq_chip *chip = irq_desc_get_chip(desc); |
296 | 296 | ||
297 | chained_irq_enter(chip, desc); | 297 | chained_irq_enter(chip, desc); |
298 | 298 | ||
diff --git a/drivers/gpio/gpio-mxs.c b/drivers/gpio/gpio-mxs.c index 551d15d7c369..b7f383eb18d9 100644 --- a/drivers/gpio/gpio-mxs.c +++ b/drivers/gpio/gpio-mxs.c | |||
@@ -157,7 +157,7 @@ static void mxs_flip_edge(struct mxs_gpio_port *port, u32 gpio) | |||
157 | static void mxs_gpio_irq_handler(u32 irq, struct irq_desc *desc) | 157 | static void mxs_gpio_irq_handler(u32 irq, struct irq_desc *desc) |
158 | { | 158 | { |
159 | u32 irq_stat; | 159 | u32 irq_stat; |
160 | struct mxs_gpio_port *port = irq_get_handler_data(irq); | 160 | struct mxs_gpio_port *port = irq_desc_get_handler_data(desc); |
161 | 161 | ||
162 | desc->irq_data.chip->irq_ack(&desc->irq_data); | 162 | desc->irq_data.chip->irq_ack(&desc->irq_data); |
163 | 163 | ||
diff --git a/drivers/gpio/gpio-omap.c b/drivers/gpio/gpio-omap.c index b0c57d505be7..04ea23ba37cc 100644 --- a/drivers/gpio/gpio-omap.c +++ b/drivers/gpio/gpio-omap.c | |||
@@ -511,9 +511,9 @@ static int omap_gpio_irq_type(struct irq_data *d, unsigned type) | |||
511 | spin_unlock_irqrestore(&bank->lock, flags); | 511 | spin_unlock_irqrestore(&bank->lock, flags); |
512 | 512 | ||
513 | if (type & (IRQ_TYPE_LEVEL_LOW | IRQ_TYPE_LEVEL_HIGH)) | 513 | if (type & (IRQ_TYPE_LEVEL_LOW | IRQ_TYPE_LEVEL_HIGH)) |
514 | __irq_set_handler_locked(d->irq, handle_level_irq); | 514 | irq_set_handler_locked(d, handle_level_irq); |
515 | else if (type & (IRQ_TYPE_EDGE_FALLING | IRQ_TYPE_EDGE_RISING)) | 515 | else if (type & (IRQ_TYPE_EDGE_FALLING | IRQ_TYPE_EDGE_RISING)) |
516 | __irq_set_handler_locked(d->irq, handle_edge_irq); | 516 | irq_set_handler_locked(d, handle_edge_irq); |
517 | 517 | ||
518 | return 0; | 518 | return 0; |
519 | 519 | ||
@@ -714,7 +714,7 @@ static void omap_gpio_irq_handler(unsigned int irq, struct irq_desc *desc) | |||
714 | struct gpio_bank *bank; | 714 | struct gpio_bank *bank; |
715 | int unmasked = 0; | 715 | int unmasked = 0; |
716 | struct irq_chip *irqchip = irq_desc_get_chip(desc); | 716 | struct irq_chip *irqchip = irq_desc_get_chip(desc); |
717 | struct gpio_chip *chip = irq_get_handler_data(irq); | 717 | struct gpio_chip *chip = irq_desc_get_handler_data(desc); |
718 | 718 | ||
719 | chained_irq_enter(irqchip, desc); | 719 | chained_irq_enter(irqchip, desc); |
720 | 720 | ||
diff --git a/drivers/gpio/gpio-pch.c b/drivers/gpio/gpio-pch.c index 2d9a950ca2d4..34ed176df15a 100644 --- a/drivers/gpio/gpio-pch.c +++ b/drivers/gpio/gpio-pch.c | |||
@@ -281,9 +281,9 @@ static int pch_irq_type(struct irq_data *d, unsigned int type) | |||
281 | 281 | ||
282 | /* And the handler */ | 282 | /* And the handler */ |
283 | if (type & (IRQ_TYPE_LEVEL_LOW | IRQ_TYPE_LEVEL_HIGH)) | 283 | if (type & (IRQ_TYPE_LEVEL_LOW | IRQ_TYPE_LEVEL_HIGH)) |
284 | __irq_set_handler_locked(d->irq, handle_level_irq); | 284 | irq_set_handler_locked(d, handle_level_irq); |
285 | else if (type & (IRQ_TYPE_EDGE_FALLING | IRQ_TYPE_EDGE_RISING)) | 285 | else if (type & (IRQ_TYPE_EDGE_FALLING | IRQ_TYPE_EDGE_RISING)) |
286 | __irq_set_handler_locked(d->irq, handle_edge_irq); | 286 | irq_set_handler_locked(d, handle_edge_irq); |
287 | 287 | ||
288 | unlock: | 288 | unlock: |
289 | spin_unlock_irqrestore(&chip->spinlock, flags); | 289 | spin_unlock_irqrestore(&chip->spinlock, flags); |
diff --git a/drivers/gpio/gpio-sa1100.c b/drivers/gpio/gpio-sa1100.c index 3fa22dade243..e847a4cf9326 100644 --- a/drivers/gpio/gpio-sa1100.c +++ b/drivers/gpio/gpio-sa1100.c | |||
@@ -173,9 +173,9 @@ static struct irq_domain *sa1100_gpio_irqdomain; | |||
173 | * and call the handler. | 173 | * and call the handler. |
174 | */ | 174 | */ |
175 | static void | 175 | static void |
176 | sa1100_gpio_handler(unsigned int irq, struct irq_desc *desc) | 176 | sa1100_gpio_handler(unsigned int __irq, struct irq_desc *desc) |
177 | { | 177 | { |
178 | unsigned int mask; | 178 | unsigned int irq, mask; |
179 | 179 | ||
180 | mask = GEDR; | 180 | mask = GEDR; |
181 | do { | 181 | do { |
diff --git a/drivers/gpio/gpio-tegra.c b/drivers/gpio/gpio-tegra.c index 9b25c90f725c..530b27f9d66f 100644 --- a/drivers/gpio/gpio-tegra.c +++ b/drivers/gpio/gpio-tegra.c | |||
@@ -252,9 +252,9 @@ static int tegra_gpio_irq_set_type(struct irq_data *d, unsigned int type) | |||
252 | tegra_gpio_enable(gpio); | 252 | tegra_gpio_enable(gpio); |
253 | 253 | ||
254 | if (type & (IRQ_TYPE_LEVEL_LOW | IRQ_TYPE_LEVEL_HIGH)) | 254 | if (type & (IRQ_TYPE_LEVEL_LOW | IRQ_TYPE_LEVEL_HIGH)) |
255 | __irq_set_handler_locked(d->irq, handle_level_irq); | 255 | irq_set_handler_locked(d, handle_level_irq); |
256 | else if (type & (IRQ_TYPE_EDGE_FALLING | IRQ_TYPE_EDGE_RISING)) | 256 | else if (type & (IRQ_TYPE_EDGE_FALLING | IRQ_TYPE_EDGE_RISING)) |
257 | __irq_set_handler_locked(d->irq, handle_edge_irq); | 257 | irq_set_handler_locked(d, handle_edge_irq); |
258 | 258 | ||
259 | return 0; | 259 | return 0; |
260 | } | 260 | } |
@@ -268,16 +268,14 @@ static void tegra_gpio_irq_shutdown(struct irq_data *d) | |||
268 | 268 | ||
269 | static void tegra_gpio_irq_handler(unsigned int irq, struct irq_desc *desc) | 269 | static void tegra_gpio_irq_handler(unsigned int irq, struct irq_desc *desc) |
270 | { | 270 | { |
271 | struct tegra_gpio_bank *bank; | ||
272 | int port; | 271 | int port; |
273 | int pin; | 272 | int pin; |
274 | int unmasked = 0; | 273 | int unmasked = 0; |
275 | struct irq_chip *chip = irq_desc_get_chip(desc); | 274 | struct irq_chip *chip = irq_desc_get_chip(desc); |
275 | struct tegra_gpio_bank *bank = irq_desc_get_handler_data(desc); | ||
276 | 276 | ||
277 | chained_irq_enter(chip, desc); | 277 | chained_irq_enter(chip, desc); |
278 | 278 | ||
279 | bank = irq_get_handler_data(irq); | ||
280 | |||
281 | for (port = 0; port < 4; port++) { | 279 | for (port = 0; port < 4; port++) { |
282 | int gpio = tegra_gpio_compose(bank->bank, port, 0); | 280 | int gpio = tegra_gpio_compose(bank->bank, port, 0); |
283 | unsigned long sta = tegra_gpio_readl(GPIO_INT_STA(gpio)) & | 281 | unsigned long sta = tegra_gpio_readl(GPIO_INT_STA(gpio)) & |
diff --git a/drivers/gpio/gpio-timberdale.c b/drivers/gpio/gpio-timberdale.c index e8f97e03c9bb..ac53ff0a8086 100644 --- a/drivers/gpio/gpio-timberdale.c +++ b/drivers/gpio/gpio-timberdale.c | |||
@@ -194,11 +194,12 @@ out: | |||
194 | 194 | ||
195 | static void timbgpio_irq(unsigned int irq, struct irq_desc *desc) | 195 | static void timbgpio_irq(unsigned int irq, struct irq_desc *desc) |
196 | { | 196 | { |
197 | struct timbgpio *tgpio = irq_get_handler_data(irq); | 197 | struct timbgpio *tgpio = irq_desc_get_handler_data(desc); |
198 | struct irq_data *data = irq_desc_get_irq_data(desc); | ||
198 | unsigned long ipr; | 199 | unsigned long ipr; |
199 | int offset; | 200 | int offset; |
200 | 201 | ||
201 | desc->irq_data.chip->irq_ack(irq_get_irq_data(irq)); | 202 | data->chip->irq_ack(data); |
202 | ipr = ioread32(tgpio->membase + TGPIO_IPR); | 203 | ipr = ioread32(tgpio->membase + TGPIO_IPR); |
203 | iowrite32(ipr, tgpio->membase + TGPIO_ICR); | 204 | iowrite32(ipr, tgpio->membase + TGPIO_ICR); |
204 | 205 | ||
@@ -299,8 +300,7 @@ static int timbgpio_probe(struct platform_device *pdev) | |||
299 | #endif | 300 | #endif |
300 | } | 301 | } |
301 | 302 | ||
302 | irq_set_handler_data(irq, tgpio); | 303 | irq_set_chained_handler_and_data(irq, timbgpio_irq, tgpio); |
303 | irq_set_chained_handler(irq, timbgpio_irq); | ||
304 | 304 | ||
305 | return 0; | 305 | return 0; |
306 | } | 306 | } |
diff --git a/drivers/gpio/gpio-tz1090.c b/drivers/gpio/gpio-tz1090.c index 445660adc898..bbac92ae4c32 100644 --- a/drivers/gpio/gpio-tz1090.c +++ b/drivers/gpio/gpio-tz1090.c | |||
@@ -510,8 +510,8 @@ static int tz1090_gpio_bank_probe(struct tz1090_gpio_bank_info *info) | |||
510 | gc->chip_types[1].chip.flags = IRQCHIP_MASK_ON_SUSPEND; | 510 | gc->chip_types[1].chip.flags = IRQCHIP_MASK_ON_SUSPEND; |
511 | 511 | ||
512 | /* Setup chained handler for this GPIO bank */ | 512 | /* Setup chained handler for this GPIO bank */ |
513 | irq_set_handler_data(bank->irq, bank); | 513 | irq_set_chained_handler_and_data(bank->irq, tz1090_gpio_irq_handler, |
514 | irq_set_chained_handler(bank->irq, tz1090_gpio_irq_handler); | 514 | bank); |
515 | 515 | ||
516 | return 0; | 516 | return 0; |
517 | } | 517 | } |
diff --git a/drivers/gpio/gpio-vf610.c b/drivers/gpio/gpio-vf610.c index 7bd9f209ffa8..fa344388f4da 100644 --- a/drivers/gpio/gpio-vf610.c +++ b/drivers/gpio/gpio-vf610.c | |||
@@ -120,7 +120,7 @@ static int vf610_gpio_direction_output(struct gpio_chip *chip, unsigned gpio, | |||
120 | 120 | ||
121 | static void vf610_gpio_irq_handler(u32 irq, struct irq_desc *desc) | 121 | static void vf610_gpio_irq_handler(u32 irq, struct irq_desc *desc) |
122 | { | 122 | { |
123 | struct vf610_gpio_port *port = irq_get_handler_data(irq); | 123 | struct vf610_gpio_port *port = irq_desc_get_handler_data(desc); |
124 | struct irq_chip *chip = irq_desc_get_chip(desc); | 124 | struct irq_chip *chip = irq_desc_get_chip(desc); |
125 | int pin; | 125 | int pin; |
126 | unsigned long irq_isfr; | 126 | unsigned long irq_isfr; |
diff --git a/drivers/gpio/gpio-zynq.c b/drivers/gpio/gpio-zynq.c index 399c4be9e63c..bb3aacad4d3b 100644 --- a/drivers/gpio/gpio-zynq.c +++ b/drivers/gpio/gpio-zynq.c | |||
@@ -441,10 +441,10 @@ static int zynq_gpio_set_irq_type(struct irq_data *irq_data, unsigned int type) | |||
441 | gpio->base_addr + ZYNQ_GPIO_INTANY_OFFSET(bank_num)); | 441 | gpio->base_addr + ZYNQ_GPIO_INTANY_OFFSET(bank_num)); |
442 | 442 | ||
443 | if (type & IRQ_TYPE_LEVEL_MASK) { | 443 | if (type & IRQ_TYPE_LEVEL_MASK) { |
444 | __irq_set_chip_handler_name_locked(irq_data->irq, | 444 | irq_set_chip_handler_name_locked(irq_data, |
445 | &zynq_gpio_level_irqchip, handle_fasteoi_irq, NULL); | 445 | &zynq_gpio_level_irqchip, handle_fasteoi_irq, NULL); |
446 | } else { | 446 | } else { |
447 | __irq_set_chip_handler_name_locked(irq_data->irq, | 447 | irq_set_chip_handler_name_locked(irq_data, |
448 | &zynq_gpio_edge_irqchip, handle_level_irq, NULL); | 448 | &zynq_gpio_edge_irqchip, handle_level_irq, NULL); |
449 | } | 449 | } |
450 | 450 | ||
@@ -518,7 +518,7 @@ static void zynq_gpio_irqhandler(unsigned int irq, struct irq_desc *desc) | |||
518 | { | 518 | { |
519 | u32 int_sts, int_enb; | 519 | u32 int_sts, int_enb; |
520 | unsigned int bank_num; | 520 | unsigned int bank_num; |
521 | struct zynq_gpio *gpio = irq_get_handler_data(irq); | 521 | struct zynq_gpio *gpio = irq_desc_get_handler_data(desc); |
522 | struct irq_chip *irqchip = irq_desc_get_chip(desc); | 522 | struct irq_chip *irqchip = irq_desc_get_chip(desc); |
523 | 523 | ||
524 | chained_irq_enter(irqchip, desc); | 524 | chained_irq_enter(irqchip, desc); |
diff --git a/drivers/gpio/gpiolib.c b/drivers/gpio/gpiolib.c index 174447fc7457..6d60ec2c9a79 100644 --- a/drivers/gpio/gpiolib.c +++ b/drivers/gpio/gpiolib.c | |||
@@ -446,8 +446,8 @@ void gpiochip_set_chained_irqchip(struct gpio_chip *gpiochip, | |||
446 | * The parent irqchip is already using the chip_data for this | 446 | * The parent irqchip is already using the chip_data for this |
447 | * irqchip, so our callbacks simply use the handler_data. | 447 | * irqchip, so our callbacks simply use the handler_data. |
448 | */ | 448 | */ |
449 | irq_set_handler_data(parent_irq, gpiochip); | 449 | irq_set_chained_handler_and_data(parent_irq, parent_handler, |
450 | irq_set_chained_handler(parent_irq, parent_handler); | 450 | gpiochip); |
451 | 451 | ||
452 | gpiochip->irq_parent = parent_irq; | 452 | gpiochip->irq_parent = parent_irq; |
453 | } | 453 | } |