forked from mirrors/linux
		
	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…
	
		Reference in a new issue