1 # SPDX-License-Identifier: (GPL-2.0 OR MIT)
4 $id: http://devicetree.org/schemas/riscv/cpus.yaml#
5 $schema: http://devicetree.org/meta-schemas/core.yaml#
7 title: RISC-V bindings for 'cpus' DT nodes
10 - Paul Walmsley <paul.walmsley@sifive.com>
11 - Palmer Dabbelt <palmer@sifive.com>
14 - $ref: /schemas/cpus.yaml#
19 description: Container of cpu nodes
24 A single unsigned 32-bit integer uniquely identifies each RISC-V
25 hart in a system. (See the "reg" node under the "cpu" node,
46 Identifies that the hart uses the RISC-V instruction set
47 and identifies the type of the hart.
51 - $ref: "/schemas/types.yaml#/definitions/string"
57 Identifies the MMU address translation mode used on this
58 hart. These values originate from the RISC-V Privileged
59 Specification document, available from
60 https://riscv.org/specifications/
64 - $ref: "/schemas/types.yaml#/definitions/string"
69 Identifies the specific RISC-V instruction set architecture
70 supported by the hart. These are documented in the RISC-V
71 User-Level ISA document, available from
72 https://riscv.org/specifications/
78 Specifies the clock frequency of the system timer in Hz.
79 This value is common to all harts on a single system image.
83 description: Describes the CPU's local interrupt controller
92 interrupt-controller: true
97 - interrupt-controller
102 - interrupt-controller
106 // Example 1: SiFive Freedom U540G Development Kit
108 #address-cells = <1>;
110 timebase-frequency = <1000000>;
112 clock-frequency = <0>;
113 compatible = "sifive,rocket0", "riscv";
115 i-cache-block-size = <64>;
116 i-cache-sets = <128>;
117 i-cache-size = <16384>;
119 riscv,isa = "rv64imac";
120 cpu_intc0: interrupt-controller {
121 #interrupt-cells = <1>;
122 compatible = "riscv,cpu-intc";
123 interrupt-controller;
127 clock-frequency = <0>;
128 compatible = "sifive,rocket0", "riscv";
129 d-cache-block-size = <64>;
131 d-cache-size = <32768>;
135 i-cache-block-size = <64>;
137 i-cache-size = <32768>;
140 mmu-type = "riscv,sv39";
142 riscv,isa = "rv64imafdc";
144 cpu_intc1: interrupt-controller {
145 #interrupt-cells = <1>;
146 compatible = "riscv,cpu-intc";
147 interrupt-controller;
153 // Example 2: Spike ISA Simulator with 1 Hart
155 #address-cells = <1>;
160 compatible = "riscv";
161 riscv,isa = "rv64imafdc";
162 mmu-type = "riscv,sv48";
163 interrupt-controller {
164 #interrupt-cells = <1>;
165 interrupt-controller;
166 compatible = "riscv,cpu-intc";