14fd669a8SPaul Walmsley# SPDX-License-Identifier: (GPL-2.0 OR MIT) 24fd669a8SPaul Walmsley%YAML 1.2 34fd669a8SPaul Walmsley--- 44fd669a8SPaul Walmsley$id: http://devicetree.org/schemas/riscv/cpus.yaml# 54fd669a8SPaul Walmsley$schema: http://devicetree.org/meta-schemas/core.yaml# 64fd669a8SPaul Walmsley 73367934dSKrzysztof Kozlowskititle: RISC-V CPUs 84fd669a8SPaul Walmsley 94fd669a8SPaul Walmsleymaintainers: 104fd669a8SPaul Walmsley - Paul Walmsley <paul.walmsley@sifive.com> 114fd669a8SPaul Walmsley - Palmer Dabbelt <palmer@sifive.com> 12299824e6SConor Dooley - Conor Dooley <conor@kernel.org> 134fd669a8SPaul Walmsley 148e5e72e3SPaul Walmsleydescription: | 158e5e72e3SPaul Walmsley This document uses some terminology common to the RISC-V community 168e5e72e3SPaul Walmsley that is not widely used, the definitions of which are listed here: 178e5e72e3SPaul Walmsley 188e5e72e3SPaul Walmsley hart: A hardware execution context, which contains all the state 198e5e72e3SPaul Walmsley mandated by the RISC-V ISA: a PC and some registers. This 208e5e72e3SPaul Walmsley terminology is designed to disambiguate software's view of execution 218e5e72e3SPaul Walmsley contexts from any particular microarchitectural implementation 228e5e72e3SPaul Walmsley strategy. For example, an Intel laptop containing one socket with 238e5e72e3SPaul Walmsley two cores, each of which has two hyperthreads, could be described as 248e5e72e3SPaul Walmsley having four harts. 258e5e72e3SPaul Walmsley 263c1b4758SConor DooleyallOf: 273c1b4758SConor Dooley - $ref: /schemas/cpu.yaml# 28aeb71e42SConor Dooley - $ref: extensions.yaml 293c1b4758SConor Dooley 304fd669a8SPaul Walmsleyproperties: 314fd669a8SPaul Walmsley compatible: 329af865d9SRob Herring oneOf: 339af865d9SRob Herring - items: 344fd669a8SPaul Walmsley - enum: 359f643dc2SLad Prabhakar - andestech,ax45mp 3657e1b873SLad Prabhakar - canaan,k210 3775e6d724SYash Shah - sifive,bullet0 384fd669a8SPaul Walmsley - sifive,e5 3975e6d724SYash Shah - sifive,e7 4075e6d724SYash Shah - sifive,e71 4157e1b873SLad Prabhakar - sifive,rocket0 428868caa2SHal Feng - sifive,s7 434fd669a8SPaul Walmsley - sifive,u5 4457e1b873SLad Prabhakar - sifive,u54 4575e6d724SYash Shah - sifive,u7 4657e1b873SLad Prabhakar - sifive,u74 4757e1b873SLad Prabhakar - sifive,u74-mc 4841adc2fbSSamuel Holland - thead,c906 4941adc2fbSSamuel Holland - thead,c910 504fd669a8SPaul Walmsley - const: riscv 51f46428f0SKrzysztof Kozlowski - items: 52f46428f0SKrzysztof Kozlowski - enum: 53f46428f0SKrzysztof Kozlowski - sifive,e51 54f46428f0SKrzysztof Kozlowski - sifive,u54-mc 55f46428f0SKrzysztof Kozlowski - const: sifive,rocket0 56f46428f0SKrzysztof Kozlowski - const: riscv 579af865d9SRob Herring - const: riscv # Simulator only 584fd669a8SPaul Walmsley description: 594fd669a8SPaul Walmsley Identifies that the hart uses the RISC-V instruction set 604fd669a8SPaul Walmsley and identifies the type of the hart. 614fd669a8SPaul Walmsley 624fd669a8SPaul Walmsley mmu-type: 634fd669a8SPaul Walmsley description: 644fd669a8SPaul Walmsley Identifies the MMU address translation mode used on this 654fd669a8SPaul Walmsley hart. These values originate from the RISC-V Privileged 664fd669a8SPaul Walmsley Specification document, available from 674fd669a8SPaul Walmsley https://riscv.org/specifications/ 68f2023385SKrzysztof Kozlowski $ref: /schemas/types.yaml#/definitions/string 693d21a460SRob Herring enum: 703d21a460SRob Herring - riscv,sv32 713d21a460SRob Herring - riscv,sv39 723d21a460SRob Herring - riscv,sv48 73d4dda690SConor Dooley - riscv,sv57 747ef71c71SDamien Le Moal - riscv,none 754fd669a8SPaul Walmsley 76d1afce67SHeiko Stuebner riscv,cbom-block-size: 77d1afce67SHeiko Stuebner $ref: /schemas/types.yaml#/definitions/uint32 78d1afce67SHeiko Stuebner description: 79d1afce67SHeiko Stuebner The blocksize in bytes for the Zicbom cache operations. 80d1afce67SHeiko Stuebner 81ea20f117SAndrew Jones riscv,cboz-block-size: 82ea20f117SAndrew Jones $ref: /schemas/types.yaml#/definitions/uint32 83ea20f117SAndrew Jones description: 84ea20f117SAndrew Jones The blocksize in bytes for the Zicboz cache operations. 85ea20f117SAndrew Jones 863c1b4758SConor Dooley # RISC-V has multiple properties for cache op block sizes as the sizes 873c1b4758SConor Dooley # differ between individual CBO extensions 883c1b4758SConor Dooley cache-op-block-size: false 899af865d9SRob Herring # RISC-V requires 'timebase-frequency' in /cpus, so disallow it here 909af865d9SRob Herring timebase-frequency: false 914fd669a8SPaul Walmsley 924fd669a8SPaul Walmsley interrupt-controller: 934fd669a8SPaul Walmsley type: object 94*11b1c9cdSRob Herring additionalProperties: false 954fd669a8SPaul Walmsley description: Describes the CPU's local interrupt controller 964fd669a8SPaul Walmsley 974fd669a8SPaul Walmsley properties: 984fd669a8SPaul Walmsley '#interrupt-cells': 994fd669a8SPaul Walmsley const: 1 1004fd669a8SPaul Walmsley 1014fd669a8SPaul Walmsley compatible: 1024fd669a8SPaul Walmsley const: riscv,cpu-intc 1034fd669a8SPaul Walmsley 1044fd669a8SPaul Walmsley interrupt-controller: true 1054fd669a8SPaul Walmsley 1064fd669a8SPaul Walmsley required: 1074fd669a8SPaul Walmsley - '#interrupt-cells' 1084fd669a8SPaul Walmsley - compatible 1094fd669a8SPaul Walmsley - interrupt-controller 1104fd669a8SPaul Walmsley 1111bd524f7SAnup Patel cpu-idle-states: 112f2023385SKrzysztof Kozlowski $ref: /schemas/types.yaml#/definitions/phandle-array 1132524257bSPalmer Dabbelt items: 1142524257bSPalmer Dabbelt maxItems: 1 1151bd524f7SAnup Patel description: | 1161bd524f7SAnup Patel List of phandles to idle state nodes supported 1171bd524f7SAnup Patel by this hart (see ./idle-states.yaml). 1181bd524f7SAnup Patel 11999199450SConor Dooley capacity-dmips-mhz: 12099199450SConor Dooley description: 12199199450SConor Dooley u32 value representing CPU capacity (see ../cpu/cpu-capacity.txt) in 12299199450SConor Dooley DMIPS/MHz, relative to highest capacity-dmips-mhz 12399199450SConor Dooley in the system. 12499199450SConor Dooley 125aeb71e42SConor DooleyanyOf: 126aeb71e42SConor Dooley - required: 1274fd669a8SPaul Walmsley - riscv,isa 128aeb71e42SConor Dooley - required: 129aeb71e42SConor Dooley - riscv,isa-base 130aeb71e42SConor Dooley 131aeb71e42SConor Dooleydependencies: 132aeb71e42SConor Dooley riscv,isa-base: [ "riscv,isa-extensions" ] 133aeb71e42SConor Dooley riscv,isa-extensions: [ "riscv,isa-base" ] 134aeb71e42SConor Dooley 135aeb71e42SConor Dooleyrequired: 1364fd669a8SPaul Walmsley - interrupt-controller 1374fd669a8SPaul Walmsley 1381ffe6ddcSConor DooleyunevaluatedProperties: false 1396a0e321eSRob Herring 1404fd669a8SPaul Walmsleyexamples: 1414fd669a8SPaul Walmsley - | 1424fd669a8SPaul Walmsley // Example 1: SiFive Freedom U540G Development Kit 1434fd669a8SPaul Walmsley cpus { 1444fd669a8SPaul Walmsley #address-cells = <1>; 1454fd669a8SPaul Walmsley #size-cells = <0>; 1464fd669a8SPaul Walmsley timebase-frequency = <1000000>; 1474fd669a8SPaul Walmsley cpu@0 { 1484fd669a8SPaul Walmsley clock-frequency = <0>; 1494fd669a8SPaul Walmsley compatible = "sifive,rocket0", "riscv"; 1504fd669a8SPaul Walmsley device_type = "cpu"; 1514fd669a8SPaul Walmsley i-cache-block-size = <64>; 1524fd669a8SPaul Walmsley i-cache-sets = <128>; 1534fd669a8SPaul Walmsley i-cache-size = <16384>; 1544fd669a8SPaul Walmsley reg = <0>; 155aeb71e42SConor Dooley riscv,isa-base = "rv64i"; 156aeb71e42SConor Dooley riscv,isa-extensions = "i", "m", "a", "c"; 157aeb71e42SConor Dooley 1584fd669a8SPaul Walmsley cpu_intc0: interrupt-controller { 1594fd669a8SPaul Walmsley #interrupt-cells = <1>; 1604fd669a8SPaul Walmsley compatible = "riscv,cpu-intc"; 1614fd669a8SPaul Walmsley interrupt-controller; 1624fd669a8SPaul Walmsley }; 1634fd669a8SPaul Walmsley }; 1644fd669a8SPaul Walmsley cpu@1 { 1654fd669a8SPaul Walmsley clock-frequency = <0>; 1664fd669a8SPaul Walmsley compatible = "sifive,rocket0", "riscv"; 1674fd669a8SPaul Walmsley d-cache-block-size = <64>; 1684fd669a8SPaul Walmsley d-cache-sets = <64>; 1694fd669a8SPaul Walmsley d-cache-size = <32768>; 1704fd669a8SPaul Walmsley d-tlb-sets = <1>; 1714fd669a8SPaul Walmsley d-tlb-size = <32>; 1724fd669a8SPaul Walmsley device_type = "cpu"; 1734fd669a8SPaul Walmsley i-cache-block-size = <64>; 1744fd669a8SPaul Walmsley i-cache-sets = <64>; 1754fd669a8SPaul Walmsley i-cache-size = <32768>; 1764fd669a8SPaul Walmsley i-tlb-sets = <1>; 1774fd669a8SPaul Walmsley i-tlb-size = <32>; 1784fd669a8SPaul Walmsley mmu-type = "riscv,sv39"; 1794fd669a8SPaul Walmsley reg = <1>; 1804fd669a8SPaul Walmsley tlb-split; 181aeb71e42SConor Dooley riscv,isa-base = "rv64i"; 182aeb71e42SConor Dooley riscv,isa-extensions = "i", "m", "a", "f", "d", "c"; 183aeb71e42SConor Dooley 1844fd669a8SPaul Walmsley cpu_intc1: interrupt-controller { 1854fd669a8SPaul Walmsley #interrupt-cells = <1>; 1864fd669a8SPaul Walmsley compatible = "riscv,cpu-intc"; 1874fd669a8SPaul Walmsley interrupt-controller; 1884fd669a8SPaul Walmsley }; 1894fd669a8SPaul Walmsley }; 1904fd669a8SPaul Walmsley }; 1914fd669a8SPaul Walmsley 1924fd669a8SPaul Walmsley - | 1934fd669a8SPaul Walmsley // Example 2: Spike ISA Simulator with 1 Hart 1944fd669a8SPaul Walmsley cpus { 1953cdb0157SPaul Walmsley #address-cells = <1>; 1963cdb0157SPaul Walmsley #size-cells = <0>; 1974fd669a8SPaul Walmsley cpu@0 { 1984fd669a8SPaul Walmsley device_type = "cpu"; 1994fd669a8SPaul Walmsley reg = <0>; 2004fd669a8SPaul Walmsley compatible = "riscv"; 2014fd669a8SPaul Walmsley mmu-type = "riscv,sv48"; 202aeb71e42SConor Dooley riscv,isa-base = "rv64i"; 203aeb71e42SConor Dooley riscv,isa-extensions = "i", "m", "a", "f", "d", "c"; 204aeb71e42SConor Dooley 2054fd669a8SPaul Walmsley interrupt-controller { 2064fd669a8SPaul Walmsley #interrupt-cells = <1>; 2074fd669a8SPaul Walmsley interrupt-controller; 2084fd669a8SPaul Walmsley compatible = "riscv,cpu-intc"; 2094fd669a8SPaul Walmsley }; 2104fd669a8SPaul Walmsley }; 2114fd669a8SPaul Walmsley }; 2124fd669a8SPaul Walmsley... 213