of/irq: Add interrupt affinity reporting interface

Plug the irq_populate_fwspec_info() helper into the OF layer to offer an
interrupt affinity reporting function.

Signed-off-by: Marc Zyngier <[email protected]>
Signed-off-by: Thomas Gleixner <[email protected]>
Tested-by: Will Deacon <[email protected]>
Reviewed-by: Jonathan Cameron <[email protected]>
Link: https://patch.msgid.link/[email protected]
This commit is contained in:
Marc Zyngier authored and Thomas Gleixner committed 2025-10-27 17:16:32 +01:00
1 parent 5324fe21ba
commit 5404f5c06d
2 files changed
+27

No files matched your search

+20
View File
@@ -479,6 +479,26 @@ out:
}
EXPORT_SYMBOL_GPL(of_irq_get);
const struct cpumask *of_irq_get_affinity(struct device_node *dev, int index)
{
struct of_phandle_args oirq;
struct irq_fwspec_info info;
struct irq_fwspec fwspec;
int rc;
rc = of_irq_parse_one(dev, index, &oirq);
if (rc)
return NULL;
of_phandle_args_to_fwspec(oirq.np, oirq.args, oirq.args_count,
&fwspec);
if (irq_populate_fwspec_info(&fwspec, &info))
return NULL;
return info.affinity;
}
/**
* of_irq_get_byname - Decode a node's IRQ and return it as a Linux IRQ number
* @dev: pointer to device tree node
+7
View File
@@ -43,6 +43,8 @@ extern int of_irq_parse_one(struct device_node *device, int index,
struct of_phandle_args *out_irq);
extern int of_irq_count(struct device_node *dev);
extern int of_irq_get(struct device_node *dev, int index);
extern const struct cpumask *of_irq_get_affinity(struct device_node *dev,
int index);
extern int of_irq_get_byname(struct device_node *dev, const char *name);
extern int of_irq_to_resource_table(struct device_node *dev,
struct resource *res, int nr_irqs);
@@ -76,6 +78,11 @@ static inline int of_irq_get_byname(struct device_node *dev, const char *name)
{
return 0;
}
static inline const struct cpumask *of_irq_get_affinity(struct device_node *dev,
int index)
{
return NULL;
}
static inline int of_irq_to_resource_table(struct device_node *dev,
struct resource *res, int nr_irqs)
{