Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

irqchip: Kill off set_irq_flags usage

set_irq_flags is ARM specific with custom flags which have genirq
equivalents. Convert drivers to use the genirq interfaces directly, so we
can kill off set_irq_flags. The translation of flags is as follows:

IRQF_VALID -> !IRQ_NOREQUEST
IRQF_PROBE -> !IRQ_NOPROBE
IRQF_NOAUTOEN -> IRQ_NOAUTOEN

For IRQs managed by an irqdomain, the irqdomain core code handles clearing
and setting IRQ_NOREQUEST already, so there is no need to do this in
.map() functions and we can simply remove the set_irq_flags calls. Some
users also modify IRQ_NOPROBE and this has been maintained although it
is not clear that is really needed. There appears to be a great deal of
blind copy and paste of this code.

Signed-off-by: Rob Herring <robh@kernel.org>
Cc: linux-arm-kernel@lists.infradead.org
Cc: Russell King <linux@arm.linux.org.uk>
Cc: Jason Cooper <jason@lakedaemon.net>
Cc: Kukjin Kim <kgene@kernel.org>
Cc: Krzysztof Kozlowski <k.kozlowski@samsung.com>
Cc: Stephen Warren <swarren@wwwdotorg.org>
Cc: Lee Jones <lee@kernel.org>
Cc: Alexander Shiyan <shc_work@mail.ru>
Cc: Maxime Ripard <maxime.ripard@free-electrons.com>
Cc: linux-rpi-kernel@lists.infradead.org
Cc: linux-samsung-soc@vger.kernel.org
Link: http://lkml.kernel.org/r/1440889285-5637-3-git-send-email-robh@kernel.org
Signed-off-by: Thomas Gleixner <tglx@linutronix.de>

authored by

Rob Herring and committed by
Thomas Gleixner
d17cab44 ca0141de

+18 -37
+1 -1
drivers/irqchip/exynos-combiner.c
··· 163 163 164 164 irq_set_chip_and_handler(irq, &combiner_chip, handle_level_irq); 165 165 irq_set_chip_data(irq, &combiner_data[hw >> 3]); 166 - set_irq_flags(irq, IRQF_VALID | IRQF_PROBE); 166 + irq_set_probe(irq); 167 167 168 168 return 0; 169 169 }
+1 -2
drivers/irqchip/irq-armada-370-xp.c
··· 200 200 { 201 201 irq_set_chip_and_handler(virq, &armada_370_xp_msi_irq_chip, 202 202 handle_simple_irq); 203 - set_irq_flags(virq, IRQF_VALID); 204 203 205 204 return 0; 206 205 } ··· 316 317 irq_set_chip_and_handler(virq, &armada_370_xp_irq_chip, 317 318 handle_level_irq); 318 319 } 319 - set_irq_flags(virq, IRQF_VALID | IRQF_PROBE); 320 + irq_set_probe(virq); 320 321 321 322 return 0; 322 323 }
+1 -1
drivers/irqchip/irq-bcm2835.c
··· 166 166 BUG_ON(irq <= 0); 167 167 irq_set_chip_and_handler(irq, &armctrl_chip, 168 168 handle_level_irq); 169 - set_irq_flags(irq, IRQF_VALID | IRQF_PROBE); 169 + irq_set_probe(irq); 170 170 } 171 171 } 172 172
+3 -3
drivers/irqchip/irq-clps711x.c
··· 132 132 irq_hw_number_t hw) 133 133 { 134 134 irq_flow_handler_t handler = handle_level_irq; 135 - unsigned int flags = IRQF_VALID | IRQF_PROBE; 135 + unsigned int flags = 0; 136 136 137 137 if (!clps711x_irqs[hw].flags) 138 138 return 0; 139 139 140 140 if (clps711x_irqs[hw].flags & CLPS711X_FLAG_FIQ) { 141 141 handler = handle_bad_irq; 142 - flags |= IRQF_NOAUTOEN; 142 + flags |= IRQ_NOAUTOEN; 143 143 } else if (clps711x_irqs[hw].eoi) { 144 144 handler = handle_fasteoi_irq; 145 145 } ··· 149 149 writel_relaxed(0, clps711x_intc->base + clps711x_irqs[hw].eoi); 150 150 151 151 irq_set_chip_and_handler(virq, &clps711x_intc_chip, handler); 152 - set_irq_flags(virq, flags); 152 + irq_modify_status(virq, IRQ_NOPROBE, flags); 153 153 154 154 return 0; 155 155 }
+2 -3
drivers/irqchip/irq-gic-v3.c
··· 752 752 irq_set_percpu_devid(irq); 753 753 irq_domain_set_info(d, irq, hw, chip, d->host_data, 754 754 handle_percpu_devid_irq, NULL, NULL); 755 - set_irq_flags(irq, IRQF_VALID | IRQF_NOAUTOEN); 755 + irq_set_status_flags(irq, IRQ_NOAUTOEN); 756 756 } 757 757 /* SPIs */ 758 758 if (hw >= 32 && hw < gic_data.irq_nr) { 759 759 irq_domain_set_info(d, irq, hw, chip, d->host_data, 760 760 handle_fasteoi_irq, NULL, NULL); 761 - set_irq_flags(irq, IRQF_VALID | IRQF_PROBE); 761 + irq_set_probe(irq); 762 762 } 763 763 /* LPIs */ 764 764 if (hw >= 8192 && hw < GIC_ID_NR) { ··· 766 766 return -EPERM; 767 767 irq_domain_set_info(d, irq, hw, chip, d->host_data, 768 768 handle_fasteoi_irq, NULL, NULL); 769 - set_irq_flags(irq, IRQF_VALID); 770 769 } 771 770 772 771 return 0;
+2 -2
drivers/irqchip/irq-gic.c
··· 890 890 irq_set_percpu_devid(irq); 891 891 irq_domain_set_info(d, irq, hw, chip, d->host_data, 892 892 handle_percpu_devid_irq, NULL, NULL); 893 - set_irq_flags(irq, IRQF_VALID | IRQF_NOAUTOEN); 893 + irq_set_status_flags(irq, IRQ_NOAUTOEN); 894 894 } else { 895 895 irq_domain_set_info(d, irq, hw, chip, d->host_data, 896 896 handle_fasteoi_irq, NULL, NULL); 897 - set_irq_flags(irq, IRQF_VALID | IRQF_PROBE); 897 + irq_set_probe(irq); 898 898 } 899 899 return 0; 900 900 }
+2 -2
drivers/irqchip/irq-hip04.c
··· 307 307 irq_set_percpu_devid(irq); 308 308 irq_set_chip_and_handler(irq, &hip04_irq_chip, 309 309 handle_percpu_devid_irq); 310 - set_irq_flags(irq, IRQF_VALID | IRQF_NOAUTOEN); 310 + irq_set_status_flags(irq, IRQ_NOAUTOEN); 311 311 } else { 312 312 irq_set_chip_and_handler(irq, &hip04_irq_chip, 313 313 handle_fasteoi_irq); 314 - set_irq_flags(irq, IRQF_VALID | IRQF_PROBE); 314 + irq_set_probe(irq); 315 315 } 316 316 irq_set_chip_data(irq, d->host_data); 317 317 return 0;
+1 -1
drivers/irqchip/irq-keystone.c
··· 127 127 128 128 irq_set_chip_data(virq, kirq); 129 129 irq_set_chip_and_handler(virq, &kirq->chip, handle_level_irq); 130 - set_irq_flags(virq, IRQF_VALID | IRQF_PROBE); 130 + irq_set_probe(virq); 131 131 return 0; 132 132 } 133 133
-3
drivers/irqchip/irq-mmp.c
··· 164 164 irq_hw_number_t hw) 165 165 { 166 166 irq_set_chip_and_handler(irq, &icu_irq_chip, handle_level_irq); 167 - set_irq_flags(irq, IRQF_VALID); 168 167 return 0; 169 168 } 170 169 ··· 233 234 for (irq = 0; irq < 64; irq++) { 234 235 icu_mask_irq(irq_get_irq_data(irq)); 235 236 irq_set_chip_and_handler(irq, &icu_irq_chip, handle_level_irq); 236 - set_irq_flags(irq, IRQF_VALID); 237 237 } 238 238 irq_set_default_host(icu_data[0].domain); 239 239 set_handle_irq(mmp_handle_irq); ··· 335 337 irq_set_chip_and_handler(irq, &icu_irq_chip, 336 338 handle_level_irq); 337 339 } 338 - set_irq_flags(irq, IRQF_VALID); 339 340 } 340 341 irq_set_default_host(icu_data[0].domain); 341 342 set_handle_irq(mmp2_handle_irq);
-1
drivers/irqchip/irq-mxs.c
··· 84 84 irq_hw_number_t hw) 85 85 { 86 86 irq_set_chip_and_handler(virq, &mxs_icoll_chip, handle_level_irq); 87 - set_irq_flags(virq, IRQF_VALID); 88 87 89 88 return 0; 90 89 }
-1
drivers/irqchip/irq-renesas-intc-irqpin.c
··· 353 353 irq_set_chip_data(virq, h->host_data); 354 354 irq_set_lockdep_class(virq, &intc_irqpin_irq_lock_class); 355 355 irq_set_chip_and_handler(virq, &p->irq_chip, handle_level_irq); 356 - set_irq_flags(virq, IRQF_VALID); /* kill me now */ 357 356 return 0; 358 357 } 359 358
+2 -12
drivers/irqchip/irq-s3c24xx.c
··· 466 466 467 467 irq_set_chip_data(virq, irq_data); 468 468 469 - set_irq_flags(virq, IRQF_VALID); 470 - 471 469 if (parent_intc && irq_data->type != S3C_IRQTYPE_NONE) { 472 470 if (irq_data->parent_irq > 31) { 473 471 pr_err("irq-s3c24xx: parent irq %lu is out of range\n", 474 472 irq_data->parent_irq); 475 - goto err; 473 + return -EINVAL; 476 474 } 477 475 478 476 parent_irq_data = &parent_intc->irqs[irq_data->parent_irq]; ··· 483 485 if (!irqno) { 484 486 pr_err("irq-s3c24xx: could not find mapping for parent irq %lu\n", 485 487 irq_data->parent_irq); 486 - goto err; 488 + return -EINVAL; 487 489 } 488 490 irq_set_chained_handler(irqno, s3c_irq_demux); 489 491 } 490 492 491 493 return 0; 492 - 493 - err: 494 - set_irq_flags(virq, 0); 495 - 496 - /* the only error can result from bad mapping data*/ 497 - return -EINVAL; 498 494 } 499 495 500 496 static const struct irq_domain_ops s3c24xx_irq_ops = { ··· 1165 1173 handle_edge_irq); 1166 1174 1167 1175 irq_set_chip_data(virq, irq_data); 1168 - 1169 - set_irq_flags(virq, IRQF_VALID); 1170 1176 1171 1177 return 0; 1172 1178 }
+1 -1
drivers/irqchip/irq-sun4i.c
··· 83 83 irq_hw_number_t hw) 84 84 { 85 85 irq_set_chip_and_handler(virq, &sun4i_irq_chip, handle_fasteoi_irq); 86 - set_irq_flags(virq, IRQF_VALID | IRQF_PROBE); 86 + irq_set_probe(virq); 87 87 88 88 return 0; 89 89 }
+1 -1
drivers/irqchip/irq-versatile-fpga.c
··· 128 128 irq_set_chip_data(irq, f); 129 129 irq_set_chip_and_handler(irq, &f->chip, 130 130 handle_level_irq); 131 - set_irq_flags(irq, IRQF_VALID | IRQF_PROBE); 131 + irq_set_probe(irq); 132 132 return 0; 133 133 } 134 134
+1 -1
drivers/irqchip/irq-vic.c
··· 201 201 return -EPERM; 202 202 irq_set_chip_and_handler(irq, &vic_chip, handle_level_irq); 203 203 irq_set_chip_data(irq, v->base); 204 - set_irq_flags(irq, IRQF_VALID | IRQF_PROBE); 204 + irq_set_probe(irq); 205 205 return 0; 206 206 } 207 207
-1
drivers/irqchip/irq-vt8500.c
··· 167 167 irq_hw_number_t hw) 168 168 { 169 169 irq_set_chip_and_handler(virq, &vt8500_irq_chip, handle_level_irq); 170 - set_irq_flags(virq, IRQF_VALID); 171 170 172 171 return 0; 173 172 }
-1
drivers/irqchip/spear-shirq.c
··· 211 211 for (i = 0; i < shirq->nr_irqs; i++) { 212 212 irq_set_chip_and_handler(shirq->virq_base + i, 213 213 shirq->irq_chip, handle_simple_irq); 214 - set_irq_flags(shirq->virq_base + i, IRQF_VALID); 215 214 irq_set_chip_data(shirq->virq_base + i, shirq); 216 215 } 217 216 }