| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273 |
- # SPDX-License-Identifier: GPL-2.0 OR BSD-2-Clause
- %YAML 1.2
- ---
- $id: http://devicetree.org/schemas/interrupt-controller/riscv,cpu-intc.yaml#
- $schema: http://devicetree.org/meta-schemas/core.yaml#
- title: RISC-V Hart-Level Interrupt Controller (HLIC)
- description:
- RISC-V cores include Control Status Registers (CSRs) which are local to
- each CPU core (HART in RISC-V terminology) and can be read or written by
- software. Some of these CSRs are used to control local interrupts connected
- to the core. Every interrupt is ultimately routed through a hart's HLIC
- before it interrupts that hart.
- The RISC-V supervisor ISA manual specifies three interrupt sources that are
- attached to every HLIC namely software interrupts, the timer interrupt, and
- external interrupts. Software interrupts are used to send IPIs between
- cores. The timer interrupt comes from an architecturally mandated real-
- time timer that is controlled via Supervisor Binary Interface (SBI) calls
- and CSR reads. External interrupts connect all other device interrupts to
- the HLIC, which are routed via the platform-level interrupt controller
- (PLIC).
- All RISC-V systems that conform to the supervisor ISA specification are
- required to have a HLIC with these three interrupt sources present. Since
- the interrupt map is defined by the ISA it's not listed in the HLIC's device
- tree entry, though external interrupt controllers (like the PLIC, for
- example) will need to define how their interrupts map to the relevant HLICs.
- This means a PLIC interrupt property will typically list the HLICs for all
- present HARTs in the system.
- maintainers:
- - Palmer Dabbelt <palmer@dabbelt.com>
- - Paul Walmsley <paul.walmsley@sifive.com>
- properties:
- compatible:
- oneOf:
- - items:
- - const: andestech,cpu-intc
- - const: riscv,cpu-intc
- - const: riscv,cpu-intc
- interrupt-controller: true
- '#interrupt-cells':
- const: 1
- description: |
- The interrupt sources are defined by the RISC-V supervisor ISA manual,
- with only the following three interrupts being defined for
- supervisor mode:
- - Source 1 is the supervisor software interrupt, which can be sent by
- an SBI call and is reserved for use by software.
- - Source 5 is the supervisor timer interrupt, which can be configured
- by SBI calls and implements a one-shot timer.
- - Source 9 is the supervisor external interrupt, which chains to all
- other device interrupts.
- required:
- - compatible
- - '#interrupt-cells'
- - interrupt-controller
- additionalProperties: false
- examples:
- - |
- interrupt-controller {
- #interrupt-cells = <1>;
- compatible = "riscv,cpu-intc";
- interrupt-controller;
- };
|