mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
synced 2026-08-31 16:30:02 -04:00
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 <maz@kernel.org> Signed-off-by: Thomas Gleixner <tglx@linutronix.de> Tested-by: Will Deacon <will@kernel.org> Reviewed-by: Jonathan Cameron <jonathan.cameron@huawei.com> Link: https://patch.msgid.link/20251020122944.3074811-4-maz@kernel.org
This commit is contained in:
committed by
Thomas Gleixner
parent
5324fe21ba
commit
5404f5c06d
@@ -479,6 +479,26 @@ int of_irq_get(struct device_node *dev, int index)
|
|||||||
}
|
}
|
||||||
EXPORT_SYMBOL_GPL(of_irq_get);
|
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
|
* of_irq_get_byname - Decode a node's IRQ and return it as a Linux IRQ number
|
||||||
* @dev: pointer to device tree node
|
* @dev: pointer to device tree node
|
||||||
|
|||||||
@@ -43,6 +43,8 @@ extern int of_irq_parse_one(struct device_node *device, int index,
|
|||||||
struct of_phandle_args *out_irq);
|
struct of_phandle_args *out_irq);
|
||||||
extern int of_irq_count(struct device_node *dev);
|
extern int of_irq_count(struct device_node *dev);
|
||||||
extern int of_irq_get(struct device_node *dev, int index);
|
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_get_byname(struct device_node *dev, const char *name);
|
||||||
extern int of_irq_to_resource_table(struct device_node *dev,
|
extern int of_irq_to_resource_table(struct device_node *dev,
|
||||||
struct resource *res, int nr_irqs);
|
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;
|
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,
|
static inline int of_irq_to_resource_table(struct device_node *dev,
|
||||||
struct resource *res, int nr_irqs)
|
struct resource *res, int nr_irqs)
|
||||||
{
|
{
|
||||||
|
|||||||
Reference in New Issue
Block a user