summaryrefslogtreecommitdiff
path: root/drivers/irqchip/irq-riscv-intc.c
diff options
context:
space:
mode:
authorAnup Patel <apatel@ventanamicro.com>2023-03-28 06:52:18 +0300
committerMarc Zyngier <maz@kernel.org>2023-04-08 13:26:24 +0300
commit0c60a31ce62ca3e93550868fd699dfc4dfc4e795 (patch)
tree682c44523764b22b374fb3e64a859c161b883d20 /drivers/irqchip/irq-riscv-intc.c
parent3ee92565b83ecc08e5b0c878dd87a2973eaca2ea (diff)
downloadlinux-0c60a31ce62ca3e93550868fd699dfc4dfc4e795.tar.xz
irqchip/riscv-intc: Allow drivers to directly discover INTC hwnode
Various RISC-V drivers (such as SBI IPI, SBI Timer, SBI PMU, and KVM RISC-V) don't have associated DT node but these drivers need standard per-CPU (local) interrupts defined by the RISC-V privileged specification. We add riscv_get_intc_hwnode() in arch/riscv which allows RISC-V drivers not having DT node to discover INTC hwnode which in-turn helps these drivers to map per-CPU (local) interrupts provided by the INTC driver. Signed-off-by: Anup Patel <apatel@ventanamicro.com> Reviewed-by: Atish Patra <atishp@rivosinc.com> Acked-by: Palmer Dabbelt <palmer@rivosinc.com> Signed-off-by: Marc Zyngier <maz@kernel.org> Link: https://lore.kernel.org/r/20230328035223.1480939-3-apatel@ventanamicro.com
Diffstat (limited to 'drivers/irqchip/irq-riscv-intc.c')
-rw-r--r--drivers/irqchip/irq-riscv-intc.c7
1 files changed, 7 insertions, 0 deletions
diff --git a/drivers/irqchip/irq-riscv-intc.c b/drivers/irqchip/irq-riscv-intc.c
index 499e5f81b3fe..9066467e99e4 100644
--- a/drivers/irqchip/irq-riscv-intc.c
+++ b/drivers/irqchip/irq-riscv-intc.c
@@ -92,6 +92,11 @@ static const struct irq_domain_ops riscv_intc_domain_ops = {
.xlate = irq_domain_xlate_onecell,
};
+static struct fwnode_handle *riscv_intc_hwnode(void)
+{
+ return intc_domain->fwnode;
+}
+
static int __init riscv_intc_init(struct device_node *node,
struct device_node *parent)
{
@@ -126,6 +131,8 @@ static int __init riscv_intc_init(struct device_node *node,
return rc;
}
+ riscv_set_intc_hwnode_fn(riscv_intc_hwnode);
+
cpuhp_setup_state(CPUHP_AP_IRQ_RISCV_STARTING,
"irqchip/riscv/intc:starting",
riscv_intc_cpu_starting,