| # 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; |
| }; |