Skip to content

Commit 45ec846

Browse files
author
Marc Zyngier
committed
irqdomain: Let irq_domain_set_{info,hwirq_and_chip} take a const irq_chip
In order to let a const irqchip be fed to the irqchip layer, adjust the various prototypes. An extra cast in irq_domain_set_hwirq_and_chip() is required to avoid a warning. Signed-off-by: Marc Zyngier <maz@kernel.org> Acked-by: Linus Walleij <linus.walleij@linaro.org> Link: https://lore.kernel.org/r/20220209162607.1118325-2-maz@kernel.org
1 parent beb0622 commit 45ec846

2 files changed

Lines changed: 8 additions & 6 deletions

File tree

include/linux/irqdomain.h

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -479,7 +479,8 @@ int irq_destroy_ipi(unsigned int irq, const struct cpumask *dest);
479479
extern struct irq_data *irq_domain_get_irq_data(struct irq_domain *domain,
480480
unsigned int virq);
481481
extern void irq_domain_set_info(struct irq_domain *domain, unsigned int virq,
482-
irq_hw_number_t hwirq, struct irq_chip *chip,
482+
irq_hw_number_t hwirq,
483+
const struct irq_chip *chip,
483484
void *chip_data, irq_flow_handler_t handler,
484485
void *handler_data, const char *handler_name);
485486
extern void irq_domain_reset_irq_data(struct irq_data *irq_data);
@@ -522,7 +523,7 @@ extern int irq_domain_alloc_irqs_hierarchy(struct irq_domain *domain,
522523
extern int irq_domain_set_hwirq_and_chip(struct irq_domain *domain,
523524
unsigned int virq,
524525
irq_hw_number_t hwirq,
525-
struct irq_chip *chip,
526+
const struct irq_chip *chip,
526527
void *chip_data);
527528
extern void irq_domain_free_irqs_common(struct irq_domain *domain,
528529
unsigned int virq,

kernel/irq/irqdomain.c

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1319,7 +1319,8 @@ EXPORT_SYMBOL_GPL(irq_domain_get_irq_data);
13191319
* @chip_data: The associated chip data
13201320
*/
13211321
int irq_domain_set_hwirq_and_chip(struct irq_domain *domain, unsigned int virq,
1322-
irq_hw_number_t hwirq, struct irq_chip *chip,
1322+
irq_hw_number_t hwirq,
1323+
const struct irq_chip *chip,
13231324
void *chip_data)
13241325
{
13251326
struct irq_data *irq_data = irq_domain_get_irq_data(domain, virq);
@@ -1328,7 +1329,7 @@ int irq_domain_set_hwirq_and_chip(struct irq_domain *domain, unsigned int virq,
13281329
return -ENOENT;
13291330

13301331
irq_data->hwirq = hwirq;
1331-
irq_data->chip = chip ? chip : &no_irq_chip;
1332+
irq_data->chip = (struct irq_chip *)(chip ? chip : &no_irq_chip);
13321333
irq_data->chip_data = chip_data;
13331334

13341335
return 0;
@@ -1347,7 +1348,7 @@ EXPORT_SYMBOL_GPL(irq_domain_set_hwirq_and_chip);
13471348
* @handler_name: The interrupt handler name
13481349
*/
13491350
void irq_domain_set_info(struct irq_domain *domain, unsigned int virq,
1350-
irq_hw_number_t hwirq, struct irq_chip *chip,
1351+
irq_hw_number_t hwirq, const struct irq_chip *chip,
13511352
void *chip_data, irq_flow_handler_t handler,
13521353
void *handler_data, const char *handler_name)
13531354
{
@@ -1853,7 +1854,7 @@ EXPORT_SYMBOL_GPL(irq_domain_get_irq_data);
18531854
* @handler_name: The interrupt handler name
18541855
*/
18551856
void irq_domain_set_info(struct irq_domain *domain, unsigned int virq,
1856-
irq_hw_number_t hwirq, struct irq_chip *chip,
1857+
irq_hw_number_t hwirq, const struct irq_chip *chip,
18571858
void *chip_data, irq_flow_handler_t handler,
18581859
void *handler_data, const char *handler_name)
18591860
{

0 commit comments

Comments
 (0)