irqdomain: Add device pointer to irq_domain_info and msi_domain_info
Add device pointer to irq_domain_info and msi_domain_info, so that the device can be specified at domain creation time. Signed-off-by: Thomas Gleixner <tglx@linutronix.de> Signed-off-by: Nam Cao <namcao@linutronix.de> Signed-off-by: Thomas Gleixner <tglx@linutronix.de> Link: https://lore.kernel.org/all/943e52403b20cf13c320d55bd4446b4562466aab.1750860131.git.namcao@linutronix.depull/1309/head
parent
41a5f82885
commit
858e65af91
|
|
@ -279,6 +279,7 @@ struct irq_domain_chip_generic_info;
|
|||
* domains are added using same fwnode
|
||||
* @ops: Domain operation callbacks
|
||||
* @host_data: Controller private data pointer
|
||||
* @dev: Device which creates the domain
|
||||
* @dgc_info: Geneneric chip information structure pointer used to
|
||||
* create generic chips for the domain if not NULL.
|
||||
* @init: Function called when the domain is created.
|
||||
|
|
@ -298,6 +299,7 @@ struct irq_domain_info {
|
|||
const char *name_suffix;
|
||||
const struct irq_domain_ops *ops;
|
||||
void *host_data;
|
||||
struct device *dev;
|
||||
#ifdef CONFIG_IRQ_DOMAIN_HIERARCHY
|
||||
/**
|
||||
* @parent: Pointer to the parent irq domain used in a hierarchy domain
|
||||
|
|
|
|||
|
|
@ -488,6 +488,7 @@ struct msi_domain_ops {
|
|||
* gets initialized to the maximum software index limit
|
||||
* by the domain creation code.
|
||||
* @ops: The callback data structure
|
||||
* @dev: Device which creates the domain
|
||||
* @chip: Optional: associated interrupt chip
|
||||
* @chip_data: Optional: associated interrupt chip data
|
||||
* @handler: Optional: associated interrupt flow handler
|
||||
|
|
@ -501,6 +502,7 @@ struct msi_domain_info {
|
|||
enum irq_domain_bus_token bus_token;
|
||||
unsigned int hwsize;
|
||||
struct msi_domain_ops *ops;
|
||||
struct device *dev;
|
||||
struct irq_chip *chip;
|
||||
void *chip_data;
|
||||
irq_flow_handler_t handler;
|
||||
|
|
|
|||
|
|
@ -317,6 +317,7 @@ static struct irq_domain *__irq_domain_instantiate(const struct irq_domain_info
|
|||
|
||||
domain->flags |= info->domain_flags;
|
||||
domain->exit = info->exit;
|
||||
domain->dev = info->dev;
|
||||
|
||||
#ifdef CONFIG_IRQ_DOMAIN_HIERARCHY
|
||||
if (info->parent) {
|
||||
|
|
|
|||
|
|
@ -889,6 +889,7 @@ static struct irq_domain *__msi_create_irq_domain(struct fwnode_handle *fwnode,
|
|||
|
||||
if (domain) {
|
||||
irq_domain_update_bus_token(domain, info->bus_token);
|
||||
domain->dev = info->dev;
|
||||
if (info->flags & MSI_FLAG_PARENT_PM_DEV)
|
||||
domain->pm_dev = parent->pm_dev;
|
||||
}
|
||||
|
|
@ -1051,6 +1052,7 @@ bool msi_create_device_irq_domain(struct device *dev, unsigned int domid,
|
|||
bundle->info.data = domain_data;
|
||||
bundle->info.chip_data = chip_data;
|
||||
bundle->info.alloc_data = &bundle->alloc_info;
|
||||
bundle->info.dev = dev;
|
||||
|
||||
pops = parent->msi_parent_ops;
|
||||
snprintf(bundle->name, sizeof(bundle->name), "%s%s-%s",
|
||||
|
|
@ -1089,7 +1091,6 @@ bool msi_create_device_irq_domain(struct device *dev, unsigned int domid,
|
|||
if (!domain)
|
||||
return false;
|
||||
|
||||
domain->dev = dev;
|
||||
dev->msi.data->__domains[domid].domain = domain;
|
||||
|
||||
if (msi_domain_prepare_irqs(domain, dev, hwsize, &bundle->alloc_info)) {
|
||||
|
|
|
|||
Loading…
Reference in New Issue