irqdomain: Handle domain hierarchy parent in irq_domain_instantiate()
To use irq_domain_instantiate() from irq_domain_create_hierarchy(), irq_domain_instantiate() needs to handle the domain hierarchy parent. Add the required functionality. Signed-off-by: Herve Codina <herve.codina@bootlin.com> Signed-off-by: Thomas Gleixner <tglx@linutronix.de> Link: https://lore.kernel.org/r/20240614173232.1184015-9-herve.codina@bootlin.compull/923/head
parent
757398541c
commit
419e3778ff
|
|
@ -276,6 +276,12 @@ struct irq_domain_info {
|
||||||
int direct_max;
|
int direct_max;
|
||||||
const struct irq_domain_ops *ops;
|
const struct irq_domain_ops *ops;
|
||||||
void *host_data;
|
void *host_data;
|
||||||
|
#ifdef CONFIG_IRQ_DOMAIN_HIERARCHY
|
||||||
|
/**
|
||||||
|
* @parent: Pointer to the parent irq domain used in a hierarchy domain
|
||||||
|
*/
|
||||||
|
struct irq_domain *parent;
|
||||||
|
#endif
|
||||||
};
|
};
|
||||||
|
|
||||||
struct irq_domain *irq_domain_instantiate(const struct irq_domain_info *info);
|
struct irq_domain *irq_domain_instantiate(const struct irq_domain_info *info);
|
||||||
|
|
|
||||||
|
|
@ -265,6 +265,13 @@ struct irq_domain *irq_domain_instantiate(const struct irq_domain_info *info)
|
||||||
|
|
||||||
domain->flags |= info->domain_flags;
|
domain->flags |= info->domain_flags;
|
||||||
|
|
||||||
|
#ifdef CONFIG_IRQ_DOMAIN_HIERARCHY
|
||||||
|
if (info->parent) {
|
||||||
|
domain->root = info->parent->root;
|
||||||
|
domain->parent = info->parent;
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
__irq_domain_publish(domain);
|
__irq_domain_publish(domain);
|
||||||
|
|
||||||
return domain;
|
return domain;
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue