|
@@ -19,6 +19,36 @@ struct module;
|
|
|
|
|
|
#ifdef CONFIG_GPIOLIB
|
|
#ifdef CONFIG_GPIOLIB
|
|
|
|
|
|
|
|
+#ifdef CONFIG_GPIOLIB_IRQCHIP
|
|
|
|
+/**
|
|
|
|
+ * struct gpio_irq_chip - GPIO interrupt controller
|
|
|
|
+ */
|
|
|
|
+struct gpio_irq_chip {
|
|
|
|
+ /**
|
|
|
|
+ * @domain_ops:
|
|
|
|
+ *
|
|
|
|
+ * Table of interrupt domain operations for this IRQ chip.
|
|
|
|
+ */
|
|
|
|
+ const struct irq_domain_ops *domain_ops;
|
|
|
|
+
|
|
|
|
+ /**
|
|
|
|
+ * @parent_handler:
|
|
|
|
+ *
|
|
|
|
+ * The interrupt handler for the GPIO chip's parent interrupts, may be
|
|
|
|
+ * NULL if the parent interrupts are nested rather than cascaded.
|
|
|
|
+ */
|
|
|
|
+ irq_flow_handler_t parent_handler;
|
|
|
|
+
|
|
|
|
+ /**
|
|
|
|
+ * @parent_handler_data:
|
|
|
|
+ *
|
|
|
|
+ * Data associated, and passed to, the handler for the parent
|
|
|
|
+ * interrupt.
|
|
|
|
+ */
|
|
|
|
+ void *parent_handler_data;
|
|
|
|
+};
|
|
|
|
+#endif
|
|
|
|
+
|
|
/**
|
|
/**
|
|
* struct gpio_chip - abstract a GPIO controller
|
|
* struct gpio_chip - abstract a GPIO controller
|
|
* @label: a functional name for the GPIO device, such as a part
|
|
* @label: a functional name for the GPIO device, such as a part
|
|
@@ -176,6 +206,14 @@ struct gpio_chip {
|
|
bool irq_need_valid_mask;
|
|
bool irq_need_valid_mask;
|
|
unsigned long *irq_valid_mask;
|
|
unsigned long *irq_valid_mask;
|
|
struct lock_class_key *lock_key;
|
|
struct lock_class_key *lock_key;
|
|
|
|
+
|
|
|
|
+ /**
|
|
|
|
+ * @irq:
|
|
|
|
+ *
|
|
|
|
+ * Integrates interrupt chip functionality with the GPIO chip. Can be
|
|
|
|
+ * used to handle IRQs for most practical cases.
|
|
|
|
+ */
|
|
|
|
+ struct gpio_irq_chip irq;
|
|
#endif
|
|
#endif
|
|
|
|
|
|
#if defined(CONFIG_OF_GPIO)
|
|
#if defined(CONFIG_OF_GPIO)
|