genirq/msi: Provide MSI_FLAG_PARENT_PM_DEV
Some platform-MSI implementations require that power management is redirected to the underlying interrupt chip device. To make this work with per device MSI domains provide a new feature flag and let the core code handle the setup of dev->pm_dev when set during device MSI domain creation. Signed-off-by: Thomas Gleixner <tglx@linutronix.de> Signed-off-by: Anup Patel <apatel@ventanamicro.com> Signed-off-by: Thomas Gleixner <tglx@linutronix.de> Link: https://lore.kernel.org/r/20240127161753.114685-14-apatel@ventanamicro.com
This commit is contained in:
parent
e49312fe09
commit
9bbe13a5d4
|
@ -554,6 +554,8 @@ enum {
|
||||||
MSI_FLAG_FREE_MSI_DESCS = (1 << 6),
|
MSI_FLAG_FREE_MSI_DESCS = (1 << 6),
|
||||||
/* Use dev->fwnode for MSI device domain creation */
|
/* Use dev->fwnode for MSI device domain creation */
|
||||||
MSI_FLAG_USE_DEV_FWNODE = (1 << 7),
|
MSI_FLAG_USE_DEV_FWNODE = (1 << 7),
|
||||||
|
/* Set parent->dev into domain->pm_dev on device domain creation */
|
||||||
|
MSI_FLAG_PARENT_PM_DEV = (1 << 8),
|
||||||
|
|
||||||
/* Mask for the generic functionality */
|
/* Mask for the generic functionality */
|
||||||
MSI_GENERIC_FLAGS_MASK = GENMASK(15, 0),
|
MSI_GENERIC_FLAGS_MASK = GENMASK(15, 0),
|
||||||
|
|
|
@ -845,8 +845,11 @@ static struct irq_domain *__msi_create_irq_domain(struct fwnode_handle *fwnode,
|
||||||
domain = irq_domain_create_hierarchy(parent, flags | IRQ_DOMAIN_FLAG_MSI, 0,
|
domain = irq_domain_create_hierarchy(parent, flags | IRQ_DOMAIN_FLAG_MSI, 0,
|
||||||
fwnode, &msi_domain_ops, info);
|
fwnode, &msi_domain_ops, info);
|
||||||
|
|
||||||
if (domain)
|
if (domain) {
|
||||||
irq_domain_update_bus_token(domain, info->bus_token);
|
irq_domain_update_bus_token(domain, info->bus_token);
|
||||||
|
if (info->flags & MSI_FLAG_PARENT_PM_DEV)
|
||||||
|
domain->pm_dev = parent->pm_dev;
|
||||||
|
}
|
||||||
|
|
||||||
return domain;
|
return domain;
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue