mirror of
https://gitee.com/bianbu-linux/linux-6.6
synced 2025-04-26 14:17:26 -04:00
genirq: Allow irq_chip registration functions to 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_set_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-3-maz@kernel.org
This commit is contained in:
parent
45ec846c1c
commit
393e1280f7
2 changed files with 7 additions and 9 deletions
|
@ -710,10 +710,11 @@ extern struct irq_chip no_irq_chip;
|
||||||
extern struct irq_chip dummy_irq_chip;
|
extern struct irq_chip dummy_irq_chip;
|
||||||
|
|
||||||
extern void
|
extern void
|
||||||
irq_set_chip_and_handler_name(unsigned int irq, struct irq_chip *chip,
|
irq_set_chip_and_handler_name(unsigned int irq, const struct irq_chip *chip,
|
||||||
irq_flow_handler_t handle, const char *name);
|
irq_flow_handler_t handle, const char *name);
|
||||||
|
|
||||||
static inline void irq_set_chip_and_handler(unsigned int irq, struct irq_chip *chip,
|
static inline void irq_set_chip_and_handler(unsigned int irq,
|
||||||
|
const struct irq_chip *chip,
|
||||||
irq_flow_handler_t handle)
|
irq_flow_handler_t handle)
|
||||||
{
|
{
|
||||||
irq_set_chip_and_handler_name(irq, chip, handle, NULL);
|
irq_set_chip_and_handler_name(irq, chip, handle, NULL);
|
||||||
|
@ -803,7 +804,7 @@ static inline void irq_set_percpu_devid_flags(unsigned int irq)
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Set/get chip/data for an IRQ: */
|
/* Set/get chip/data for an IRQ: */
|
||||||
extern int irq_set_chip(unsigned int irq, struct irq_chip *chip);
|
extern int irq_set_chip(unsigned int irq, const struct irq_chip *chip);
|
||||||
extern int irq_set_handler_data(unsigned int irq, void *data);
|
extern int irq_set_handler_data(unsigned int irq, void *data);
|
||||||
extern int irq_set_chip_data(unsigned int irq, void *data);
|
extern int irq_set_chip_data(unsigned int irq, void *data);
|
||||||
extern int irq_set_irq_type(unsigned int irq, unsigned int type);
|
extern int irq_set_irq_type(unsigned int irq, unsigned int type);
|
||||||
|
|
|
@ -38,7 +38,7 @@ struct irqaction chained_action = {
|
||||||
* @irq: irq number
|
* @irq: irq number
|
||||||
* @chip: pointer to irq chip description structure
|
* @chip: pointer to irq chip description structure
|
||||||
*/
|
*/
|
||||||
int irq_set_chip(unsigned int irq, struct irq_chip *chip)
|
int irq_set_chip(unsigned int irq, const struct irq_chip *chip)
|
||||||
{
|
{
|
||||||
unsigned long flags;
|
unsigned long flags;
|
||||||
struct irq_desc *desc = irq_get_desc_lock(irq, &flags, 0);
|
struct irq_desc *desc = irq_get_desc_lock(irq, &flags, 0);
|
||||||
|
@ -46,10 +46,7 @@ int irq_set_chip(unsigned int irq, struct irq_chip *chip)
|
||||||
if (!desc)
|
if (!desc)
|
||||||
return -EINVAL;
|
return -EINVAL;
|
||||||
|
|
||||||
if (!chip)
|
desc->irq_data.chip = (struct irq_chip *)(chip ?: &no_irq_chip);
|
||||||
chip = &no_irq_chip;
|
|
||||||
|
|
||||||
desc->irq_data.chip = chip;
|
|
||||||
irq_put_desc_unlock(desc, flags);
|
irq_put_desc_unlock(desc, flags);
|
||||||
/*
|
/*
|
||||||
* For !CONFIG_SPARSE_IRQ make the irq show up in
|
* For !CONFIG_SPARSE_IRQ make the irq show up in
|
||||||
|
@ -1073,7 +1070,7 @@ irq_set_chained_handler_and_data(unsigned int irq, irq_flow_handler_t handle,
|
||||||
EXPORT_SYMBOL_GPL(irq_set_chained_handler_and_data);
|
EXPORT_SYMBOL_GPL(irq_set_chained_handler_and_data);
|
||||||
|
|
||||||
void
|
void
|
||||||
irq_set_chip_and_handler_name(unsigned int irq, struct irq_chip *chip,
|
irq_set_chip_and_handler_name(unsigned int irq, const struct irq_chip *chip,
|
||||||
irq_flow_handler_t handle, const char *name)
|
irq_flow_handler_t handle, const char *name)
|
||||||
{
|
{
|
||||||
irq_set_chip(irq, chip);
|
irq_set_chip(irq, chip);
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue