summaryrefslogtreecommitdiff
path: root/include/linux
diff options
context:
space:
mode:
authorLinus Walleij <linus.walleij@linaro.org>2021-10-27 00:16:14 +0200
committerLinus Walleij <linus.walleij@linaro.org>2021-10-27 00:16:14 +0200
commit5853fd57d8933f0b667ed467fe30a086112af6c9 (patch)
tree3c811b3fc8c81891d1cd9079f019e3ac4ba1e8a9 /include/linux
parentf0c142fcf4d6a671109d6bd00d77993e65fb9f47 (diff)
parentcfe6807d82e97e81c3209dca9448f091e1448a57 (diff)
Merge branch 'ib-gpio-ppid' into devel
Diffstat (limited to 'include/linux')
-rw-r--r--include/linux/gpio/driver.h19
1 files changed, 17 insertions, 2 deletions
diff --git a/include/linux/gpio/driver.h b/include/linux/gpio/driver.h
index a0f9901dcae6..a673a359e20b 100644
--- a/include/linux/gpio/driver.h
+++ b/include/linux/gpio/driver.h
@@ -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:
@@ -204,6 +211,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
* a particular driver wants to clear IRQ related registers