genirq/irqdomain: Add irq_domain:: Dev for per device MSI domains
authorThomas Gleixner <tglx@linutronix.de>
Thu, 24 Nov 2022 23:25:54 +0000 (00:25 +0100)
committerThomas Gleixner <tglx@linutronix.de>
Mon, 5 Dec 2022 18:21:01 +0000 (19:21 +0100)
Per device domains require the device pointer of the device which
instantiated the domain for some purposes. Add the pointer to struct
irq_domain. It will be used in the next step which provides the
infrastructure to create per device MSI domains.

Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
Reviewed-by: Kevin Tian <kevin.tian@intel.com>
Acked-by: Marc Zyngier <maz@kernel.org>
Link: https://lore.kernel.org/r/20221124232325.618807601@linutronix.de
include/linux/irqdomain.h

index a668cc0..a372086 100644 (file)
@@ -132,6 +132,9 @@ struct irq_domain_chip_generic;
  * @gc:                Pointer to a list of generic chips. There is a helper function for
  *             setting up one or more generic chips for interrupt controllers
  *             drivers using the generic chip library which uses this pointer.
+ * @dev:       Pointer to the device which instantiated the irqdomain
+ *             With per device irq domains this is not necessarily the same
+ *             as @pm_dev.
  * @pm_dev:    Pointer to a device that can be utilized for power management
  *             purposes related to the irq domain.
  * @parent:    Pointer to parent irq_domain to support hierarchy irq_domains
@@ -155,6 +158,7 @@ struct irq_domain {
        struct fwnode_handle            *fwnode;
        enum irq_domain_bus_token       bus_token;
        struct irq_domain_chip_generic  *gc;
+       struct device                   *dev;
        struct device                   *pm_dev;
 #ifdef CONFIG_IRQ_DOMAIN_HIERARCHY
        struct irq_domain               *parent;