mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
synced 2026-05-06 06:10:45 -04:00
Merge branch 'ib-gpio-ppid' into devel
This commit is contained in:
@@ -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
|
||||
|
||||
@@ -168,11 +168,18 @@ struct gpio_irq_chip {
|
||||
|
||||
/**
|
||||
* @parent_handler_data:
|
||||
* @parent_handler_data_array:
|
||||
*
|
||||
* Data associated, and passed to, the handler for the parent
|
||||
* interrupt.
|
||||
* interrupt. Can either be a single pointer if @per_parent_data
|
||||
* is false, or an array of @num_parents pointers otherwise. If
|
||||
* @per_parent_data is true, @parent_handler_data_array cannot be
|
||||
* NULL.
|
||||
*/
|
||||
void *parent_handler_data;
|
||||
union {
|
||||
void *parent_handler_data;
|
||||
void **parent_handler_data_array;
|
||||
};
|
||||
|
||||
/**
|
||||
* @num_parents:
|
||||
@@ -203,6 +210,14 @@ struct gpio_irq_chip {
|
||||
*/
|
||||
bool threaded;
|
||||
|
||||
/**
|
||||
* @per_parent_data:
|
||||
*
|
||||
* True if parent_handler_data_array describes a @num_parents
|
||||
* sized array to be used as parent data.
|
||||
*/
|
||||
bool per_parent_data;
|
||||
|
||||
/**
|
||||
* @init_hw: optional routine to initialize hardware before
|
||||
* an IRQ chip will be added. This is quite useful when
|
||||
|
||||
Reference in New Issue
Block a user