diff options
Diffstat (limited to 'drivers/gpio/gpiolib.c')
| -rw-r--r-- | drivers/gpio/gpiolib.c | 9 | 
1 files changed, 7 insertions, 2 deletions
| diff --git a/drivers/gpio/gpiolib.c b/drivers/gpio/gpiolib.c index d1b9b721218f..abfbf546d159 100644 --- a/drivers/gpio/gpiolib.c +++ b/drivers/gpio/gpiolib.c @@ -1534,9 +1534,14 @@ static int gpiochip_add_irqchip(struct gpio_chip *gc,  	}  	if (gc->irq.parent_handler) { -		void *data = gc->irq.parent_handler_data ?: gc; -  		for (i = 0; i < gc->irq.num_parents; i++) { +			void *data; + +			if (gc->irq.per_parent_data) +				data = gc->irq.parent_handler_data_array[i]; +			else +				data = gc->irq.parent_handler_data ?: gc; +  			/*  			 * The parent IRQ chip is already using the chip_data  			 * for this IRQ chip, so our callbacks simply use the | 
