summaryrefslogtreecommitdiff
path: root/drivers/irqchip/irq-aclint-sswi.c
diff options
context:
space:
mode:
authorVladimir Kondratiev <vladimir.kondratiev@mobileye.com>2025-06-12 17:39:09 +0300
committerThomas Gleixner <tglx@linutronix.de>2025-06-26 16:06:40 +0200
commit128ab2cfd0205fe395196a9f3221bcddd6adf54e (patch)
tree06db6b059c0c6c1a0de9cd5ef830646d2ca4ed3f /drivers/irqchip/irq-aclint-sswi.c
parentc8c8443a64a186df0508c709d51fe9c7db0b5d55 (diff)
irqchip/aslint-sswi: Resolve hart index
Resolve hart index according to assignment in the "riscv,hart-indexes" property as defined in the specification [1] Signed-off-by: Vladimir Kondratiev <vladimir.kondratiev@mobileye.com> Signed-off-by: Thomas Gleixner <tglx@linutronix.de> Link: https://lore.kernel.org/all/20250612143911.3224046-6-vladimir.kondratiev@mobileye.com Link: https://github.com/riscvarchive/riscv-aclint [1]
Diffstat (limited to 'drivers/irqchip/irq-aclint-sswi.c')
-rw-r--r--drivers/irqchip/irq-aclint-sswi.c6
1 files changed, 6 insertions, 0 deletions
diff --git a/drivers/irqchip/irq-aclint-sswi.c b/drivers/irqchip/irq-aclint-sswi.c
index 9d8b19be66b6..93e28e9f281f 100644
--- a/drivers/irqchip/irq-aclint-sswi.c
+++ b/drivers/irqchip/irq-aclint-sswi.c
@@ -71,6 +71,7 @@ static int __init aclint_sswi_parse_irq(struct fwnode_handle *fwnode, void __iom
for (u32 i = 0; i < contexts; i++) {
struct of_phandle_args parent;
unsigned long hartid;
+ u32 hart_index;
int rc, cpu;
rc = of_irq_parse_one(to_of_node(fwnode), i, &parent);
@@ -86,6 +87,11 @@ static int __init aclint_sswi_parse_irq(struct fwnode_handle *fwnode, void __iom
cpu = riscv_hartid_to_cpuid(hartid);
+ rc = riscv_get_hart_index(fwnode, i, &hart_index);
+ if (rc) {
+ pr_warn("%pfwP: hart index [%d] not found\n", fwnode, i);
+ return -EINVAL;
+ }
per_cpu(sswi_cpu_regs, cpu) = reg + hart_index * 4;
}