Lines Matching +full:dt +full:- +full:node
1 // SPDX-License-Identifier: GPL-2.0
4 * Copyright (C) 2017-2018 SiFive
8 #define pr_fmt(fmt) "riscv-intc: " fmt
24 unsigned long cause = regs->cause & ~CAUSE_IRQ_FLAG; in riscv_intc_irq()
34 * non-SMP system gets one, then we don't know what to do. in riscv_intc_irq()
46 * On RISC-V systems local interrupts are masked or unmasked by writing
54 csr_clear(CSR_IE, BIT(d->hwirq)); in riscv_intc_irq_mask()
59 csr_set(CSR_IE, BIT(d->hwirq)); in riscv_intc_irq_unmask()
75 .name = "RISC-V INTC",
84 irq_domain_set_info(d, irq, hwirq, &riscv_intc_chip, d->host_data, in riscv_intc_domain_map()
95 static int __init riscv_intc_init(struct device_node *node, in riscv_intc_init() argument
101 rc = riscv_of_parent_hartid(node, &hartid); in riscv_intc_init()
103 pr_warn("unable to find hart id for %pOF\n", node); in riscv_intc_init()
108 * The DT will have one INTC DT node under each CPU (or HART) in riscv_intc_init()
109 * DT node so riscv_intc_init() function will be called once in riscv_intc_init()
110 * for each INTC DT node. We only need to do INTC initialization in riscv_intc_init()
111 * for the INTC DT node belonging to boot CPU (or boot HART). in riscv_intc_init()
116 intc_domain = irq_domain_add_linear(node, BITS_PER_LONG, in riscv_intc_init()
120 return -ENXIO; in riscv_intc_init()
139 IRQCHIP_DECLARE(riscv, "riscv,cpu-intc", riscv_intc_init);