Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

dt-bindings: interrupt-controller: riscv,cpu-intc: convert to dtschema

Convert the RISC-V Hart-Level Interrupt Controller (HLIC) to newer
DT schema, Created DT schema based on the .txt file which had
`compatible`, `#interrupt-cells` and `interrupt-controller` as
required properties.
Changes made with respect to original file:
- Changed the example to just use interrupt-controller instead of
using the whole cpu block
- Changed the example compatible string.

Reviewed-by: Conor Dooley <conor.dooley@microchip.com>
Signed-off-by: Kanak Shilledar <kanakshilledar@gmail.com>
Link: https://lore.kernel.org/r/20240615021507.122035-2-kanakshilledar@gmail.com
Signed-off-by: Palmer Dabbelt <palmer@rivosinc.com>

authored by

Kanak Shilledar and committed by
Palmer Dabbelt
9ff14104 1613e604

+73 -52
-52
Documentation/devicetree/bindings/interrupt-controller/riscv,cpu-intc.txt
··· 1 - RISC-V Hart-Level Interrupt Controller (HLIC) 2 - --------------------------------------------- 3 - 4 - RISC-V cores include Control Status Registers (CSRs) which are local to each 5 - CPU core (HART in RISC-V terminology) and can be read or written by software. 6 - Some of these CSRs are used to control local interrupts connected to the core. 7 - Every interrupt is ultimately routed through a hart's HLIC before it 8 - interrupts that hart. 9 - 10 - The RISC-V supervisor ISA manual specifies three interrupt sources that are 11 - attached to every HLIC: software interrupts, the timer interrupt, and external 12 - interrupts. Software interrupts are used to send IPIs between cores. The 13 - timer interrupt comes from an architecturally mandated real-time timer that is 14 - controlled via Supervisor Binary Interface (SBI) calls and CSR reads. External 15 - interrupts connect all other device interrupts to the HLIC, which are routed 16 - via the platform-level interrupt controller (PLIC). 17 - 18 - All RISC-V systems that conform to the supervisor ISA specification are 19 - required to have a HLIC with these three interrupt sources present. Since the 20 - interrupt map is defined by the ISA it's not listed in the HLIC's device tree 21 - entry, though external interrupt controllers (like the PLIC, for example) will 22 - need to define how their interrupts map to the relevant HLICs. This means 23 - a PLIC interrupt property will typically list the HLICs for all present HARTs 24 - in the system. 25 - 26 - Required properties: 27 - - compatible : "riscv,cpu-intc" 28 - - #interrupt-cells : should be <1>. The interrupt sources are defined by the 29 - RISC-V supervisor ISA manual, with only the following three interrupts being 30 - defined for supervisor mode: 31 - - Source 1 is the supervisor software interrupt, which can be sent by an SBI 32 - call and is reserved for use by software. 33 - - Source 5 is the supervisor timer interrupt, which can be configured by 34 - SBI calls and implements a one-shot timer. 35 - - Source 9 is the supervisor external interrupt, which chains to all other 36 - device interrupts. 37 - - interrupt-controller : Identifies the node as an interrupt controller 38 - 39 - Furthermore, this interrupt-controller MUST be embedded inside the cpu 40 - definition of the hart whose CSRs control these local interrupts. 41 - 42 - An example device tree entry for a HLIC is show below. 43 - 44 - cpu1: cpu@1 { 45 - compatible = "riscv"; 46 - ... 47 - cpu1-intc: interrupt-controller { 48 - #interrupt-cells = <1>; 49 - compatible = "sifive,fu540-c000-cpu-intc", "riscv,cpu-intc"; 50 - interrupt-controller; 51 - }; 52 - };
+73
Documentation/devicetree/bindings/interrupt-controller/riscv,cpu-intc.yaml
··· 1 + # SPDX-License-Identifier: GPL-2.0 OR BSD-2-Clause 2 + %YAML 1.2 3 + --- 4 + $id: http://devicetree.org/schemas/interrupt-controller/riscv,cpu-intc.yaml# 5 + $schema: http://devicetree.org/meta-schemas/core.yaml# 6 + 7 + title: RISC-V Hart-Level Interrupt Controller (HLIC) 8 + 9 + description: 10 + RISC-V cores include Control Status Registers (CSRs) which are local to 11 + each CPU core (HART in RISC-V terminology) and can be read or written by 12 + software. Some of these CSRs are used to control local interrupts connected 13 + to the core. Every interrupt is ultimately routed through a hart's HLIC 14 + before it interrupts that hart. 15 + 16 + The RISC-V supervisor ISA manual specifies three interrupt sources that are 17 + attached to every HLIC namely software interrupts, the timer interrupt, and 18 + external interrupts. Software interrupts are used to send IPIs between 19 + cores. The timer interrupt comes from an architecturally mandated real- 20 + time timer that is controlled via Supervisor Binary Interface (SBI) calls 21 + and CSR reads. External interrupts connect all other device interrupts to 22 + the HLIC, which are routed via the platform-level interrupt controller 23 + (PLIC). 24 + 25 + All RISC-V systems that conform to the supervisor ISA specification are 26 + required to have a HLIC with these three interrupt sources present. Since 27 + the interrupt map is defined by the ISA it's not listed in the HLIC's device 28 + tree entry, though external interrupt controllers (like the PLIC, for 29 + example) will need to define how their interrupts map to the relevant HLICs. 30 + This means a PLIC interrupt property will typically list the HLICs for all 31 + present HARTs in the system. 32 + 33 + maintainers: 34 + - Palmer Dabbelt <palmer@dabbelt.com> 35 + - Paul Walmsley <paul.walmsley@sifive.com> 36 + 37 + properties: 38 + compatible: 39 + oneOf: 40 + - items: 41 + - const: andestech,cpu-intc 42 + - const: riscv,cpu-intc 43 + - const: riscv,cpu-intc 44 + 45 + interrupt-controller: true 46 + 47 + '#interrupt-cells': 48 + const: 1 49 + description: | 50 + The interrupt sources are defined by the RISC-V supervisor ISA manual, 51 + with only the following three interrupts being defined for 52 + supervisor mode: 53 + - Source 1 is the supervisor software interrupt, which can be sent by 54 + an SBI call and is reserved for use by software. 55 + - Source 5 is the supervisor timer interrupt, which can be configured 56 + by SBI calls and implements a one-shot timer. 57 + - Source 9 is the supervisor external interrupt, which chains to all 58 + other device interrupts. 59 + 60 + required: 61 + - compatible 62 + - '#interrupt-cells' 63 + - interrupt-controller 64 + 65 + additionalProperties: false 66 + 67 + examples: 68 + - | 69 + interrupt-controller { 70 + #interrupt-cells = <1>; 71 + compatible = "riscv,cpu-intc"; 72 + interrupt-controller; 73 + };