aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorPalmer Dabbelt <palmer@dabbelt.com>2017-06-27 01:07:50 -0400
committerPalmer Dabbelt <palmer@sifive.com>2018-08-13 12:36:02 -0400
commitb67bc7cb408816b94224a74dff9868d2a38bf30c (patch)
treeb34c3971cbc2e70e716a6cbbea905da4142d8001
parent4c42ae4f6ab78f9ce3fa7e66de44f666733288da (diff)
dt-bindings: interrupt-controller: RISC-V local interrupt controller
Add documentation on the RISC-V local interrupt controller, which is a per-hart interrupt controller that manages all interrupts entering a RISC-V hart. This interrupt controller is present on all RISC-V systems. Signed-off-by: Palmer Dabbelt <palmer@dabbelt.com> [hch: minor cleanups] Signed-off-by: Christoph Hellwig <hch@lst.de> Signed-off-by: Palmer Dabbelt <palmer@sifive.com>
-rw-r--r--Documentation/devicetree/bindings/interrupt-controller/riscv,cpu-intc.txt44
1 files changed, 44 insertions, 0 deletions
diff --git a/Documentation/devicetree/bindings/interrupt-controller/riscv,cpu-intc.txt b/Documentation/devicetree/bindings/interrupt-controller/riscv,cpu-intc.txt
new file mode 100644
index 000000000000..b0a8af51c388
--- /dev/null
+++ b/Documentation/devicetree/bindings/interrupt-controller/riscv,cpu-intc.txt
@@ -0,0 +1,44 @@
1RISC-V Hart-Level Interrupt Controller (HLIC)
2---------------------------------------------
3
4RISC-V cores include Control Status Registers (CSRs) which are local to each
5CPU core (HART in RISC-V terminology) and can be read or written by software.
6Some of these CSRs are used to control local interrupts connected to the core.
7Every interrupt is ultimately routed through a hart's HLIC before it
8interrupts that hart.
9
10The RISC-V supervisor ISA manual specifies three interrupt sources that are
11attached to every HLIC: software interrupts, the timer interrupt, and external
12interrupts. Software interrupts are used to send IPIs between cores. The
13timer interrupt comes from an architecturally mandated real-time timer that is
14controller via Supervisor Binary Interface (SBI) calls and CSR reads. External
15interrupts connect all other device interrupts to the HLIC, which are routed
16via the platform-level interrupt controller (PLIC).
17
18All RISC-V systems that conform to the supervisor ISA specification are
19required to have a HLIC with these three interrupt sources present. Since the
20interrupt map is defined by the ISA it's not listed in the HLIC's device tree
21entry, though external interrupt controllers (like the PLIC, for example) will
22need to define how their interrupts map to the relevant HLICs. This means
23a PLIC interrupt property will typically list the HLICs for all present HARTs
24in the system.
25
26Required properties:
27- compatible : "riscv,cpu-intc"
28- #interrupt-cells : should be <1>
29- interrupt-controller : Identifies the node as an interrupt controller
30
31Furthermore, this interrupt-controller MUST be embedded inside the cpu
32definition of the hart whose CSRs control these local interrupts.
33
34An example device tree entry for a HLIC is show below.
35
36 cpu1: cpu@1 {
37 compatible = "riscv";
38 ...
39 cpu1-intc: interrupt-controller {
40 #interrupt-cells = <1>;
41 compatible = "riscv,cpu-intc", "sifive,fu540-c000-cpu-intc";
42 interrupt-controller;
43 };
44 };