forked from mirrors/linux
		
	gpio: put GPIO IRQs into their own lock class
Another feature that is duplicated in a number of GPIO irqchips is that these cascades IRQs are assigned their own lock class so as to avoid warnings about lockdep recursions. Do this also in the generic GPIO irqchip helpers for smooth transition to this core infrastructure. Cc: Thomas Gleixner <tglx@linutronix.de> Signed-off-by: Linus Walleij <linus.walleij@linaro.org>
This commit is contained in:
		
							parent
							
								
									1e0d982317
								
							
						
					
					
						commit
						e45d1c80c0
					
				
					 1 changed files with 7 additions and 0 deletions
				
			
		|  | @ -1377,6 +1377,12 @@ void gpiochip_set_chained_irqchip(struct gpio_chip *gpiochip, | |||
| } | ||||
| EXPORT_SYMBOL_GPL(gpiochip_set_chained_irqchip); | ||||
| 
 | ||||
| /*
 | ||||
|  * This lock class tells lockdep that GPIO irqs are in a different | ||||
|  * category than their parents, so it won't report false recursion. | ||||
|  */ | ||||
| static struct lock_class_key gpiochip_irq_lock_class; | ||||
| 
 | ||||
| /**
 | ||||
|  * gpiochip_irq_map() - maps an IRQ into a GPIO irqchip | ||||
|  * @d: the irqdomain used by this irqchip | ||||
|  | @ -1393,6 +1399,7 @@ static int gpiochip_irq_map(struct irq_domain *d, unsigned int irq, | |||
| 	struct gpio_chip *chip = d->host_data; | ||||
| 
 | ||||
| 	irq_set_chip_data(irq, chip); | ||||
| 	irq_set_lockdep_class(irq, &gpiochip_irq_lock_class); | ||||
| 	irq_set_chip_and_handler(irq, chip->irqchip, chip->irq_handler); | ||||
| 	/* Chips that can sleep need nested thread handlers */ | ||||
| 	if (chip->can_sleep) | ||||
|  |  | |||
		Loading…
	
		Reference in a new issue
	
	 Linus Walleij
						Linus Walleij