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

Merge tag 'soc-newsoc-6.16' of git://git.kernel.org/pub/scm/linux/kernel/git/soc/soc

Pull sophgo SoC devicetree updates from Arnd Bergmann:
"The Sophgo SG2044 SoC is their second generation server chip with 64
cores, following the SG2042.

In addition, there are minor updates for the cv180x SoCs"

* tag 'soc-newsoc-6.16' of git://git.kernel.org/pub/scm/linux/kernel/git/soc/soc:
riscv: dts: sophgo: switch precise compatible for existed clock device for CV18XX
riscv: dts: sophgo: Add initial device tree of Sophgo SRD3-10
dt-bindings: riscv: sophgo: Add SG2044 compatible string
dt-bindings: interrupt-controller: Add Sophgo SG2044 PLIC
dt-bindings: interrupt-controller: Add Sophgo SG2044 CLINT mswi
riscv: dts: sopgho: use SOC_PERIPHERAL_IRQ to calculate interrupt number
riscv: dts: sophgo: rename header file cv18xx.dtsi to cv180x.dtsi
riscv: dts: sophgo: Move riscv cpu definition to a separate file
riscv: dts: sophgo: Move all soc specific device into soc dtsi file
riscv: sophgo: dts: Add spi controller for SG2042
riscv: dts: sophgo: sg2042: add pinctrl support

+3508 -113
+1
Documentation/devicetree/bindings/interrupt-controller/sifive,plic-1.0.0.yaml
··· 70 70 - sophgo,cv1812h-plic 71 71 - sophgo,sg2002-plic 72 72 - sophgo,sg2042-plic 73 + - sophgo,sg2044-plic 73 74 - thead,th1520-plic 74 75 - const: thead,c900-plic 75 76 - items:
+1
Documentation/devicetree/bindings/interrupt-controller/thead,c900-aclint-mswi.yaml
··· 14 14 items: 15 15 - enum: 16 16 - sophgo,sg2042-aclint-mswi 17 + - sophgo,sg2044-aclint-mswi 17 18 - const: thead,c900-aclint-mswi 18 19 19 20 reg:
+4
Documentation/devicetree/bindings/riscv/sophgo.yaml
··· 35 35 - enum: 36 36 - milkv,pioneer 37 37 - const: sophgo,sg2042 38 + - items: 39 + - enum: 40 + - sophgo,srd3-10 41 + - const: sophgo,sg2044 38 42 39 43 additionalProperties: true 40 44
+1
arch/riscv/boot/dts/sophgo/Makefile
··· 3 3 dtb-$(CONFIG_ARCH_SOPHGO) += cv1812h-huashan-pi.dtb 4 4 dtb-$(CONFIG_ARCH_SOPHGO) += sg2002-licheerv-nano-b.dtb 5 5 dtb-$(CONFIG_ARCH_SOPHGO) += sg2042-milkv-pioneer.dtb 6 + dtb-$(CONFIG_ARCH_SOPHGO) += sg2044-sophgo-srd3-10.dtb
+30 -13
arch/riscv/boot/dts/sophgo/cv1800b.dtsi
··· 3 3 * Copyright (C) 2023 Jisheng Zhang <jszhang@kernel.org> 4 4 */ 5 5 6 + #define SOC_PERIPHERAL_IRQ(nr) ((nr) + 16) 7 + 6 8 #include <dt-bindings/pinctrl/pinctrl-cv1800b.h> 7 - #include "cv18xx.dtsi" 9 + #include "cv180x-cpus.dtsi" 10 + #include "cv180x.dtsi" 8 11 9 12 / { 10 13 compatible = "sophgo,cv1800b"; ··· 18 15 }; 19 16 20 17 soc { 18 + interrupt-parent = <&plic>; 19 + dma-noncoherent; 20 + 21 21 pinctrl: pinctrl@3001000 { 22 22 compatible = "sophgo,cv1800b-pinctrl"; 23 23 reg = <0x03001000 0x1000>, 24 24 <0x05027000 0x1000>; 25 25 reg-names = "sys", "rtc"; 26 26 }; 27 + 28 + clk: clock-controller@3002000 { 29 + compatible = "sophgo,cv1800b-clk"; 30 + reg = <0x03002000 0x1000>; 31 + clocks = <&osc>; 32 + #clock-cells = <1>; 33 + }; 34 + 35 + plic: interrupt-controller@70000000 { 36 + compatible = "sophgo,cv1800b-plic", "thead,c900-plic"; 37 + reg = <0x70000000 0x4000000>; 38 + interrupts-extended = <&cpu0_intc 11>, <&cpu0_intc 9>; 39 + interrupt-controller; 40 + #address-cells = <0>; 41 + #interrupt-cells = <2>; 42 + riscv,ndev = <101>; 43 + }; 44 + 45 + clint: timer@74000000 { 46 + compatible = "sophgo,cv1800b-clint", "thead,c900-clint"; 47 + reg = <0x74000000 0x10000>; 48 + interrupts-extended = <&cpu0_intc 3>, <&cpu0_intc 7>; 49 + }; 27 50 }; 28 - }; 29 - 30 - &plic { 31 - compatible = "sophgo,cv1800b-plic", "thead,c900-plic"; 32 - }; 33 - 34 - &clint { 35 - compatible = "sophgo,cv1800b-clint", "thead,c900-clint"; 36 - }; 37 - 38 - &clk { 39 - compatible = "sophgo,cv1800-clk"; 40 51 };
+36
arch/riscv/boot/dts/sophgo/cv180x-cpus.dtsi
··· 1 + // SPDX-License-Identifier: (GPL-2.0 OR MIT) 2 + /* 3 + * Copyright (C) 2023 Jisheng Zhang <jszhang@kernel.org> 4 + * Copyright (C) 2023 Inochi Amaoto <inochiama@outlook.com> 5 + */ 6 + 7 + / { 8 + cpus: cpus { 9 + #address-cells = <1>; 10 + #size-cells = <0>; 11 + timebase-frequency = <25000000>; 12 + 13 + cpu0: cpu@0 { 14 + compatible = "thead,c906", "riscv"; 15 + device_type = "cpu"; 16 + reg = <0>; 17 + d-cache-block-size = <64>; 18 + d-cache-sets = <512>; 19 + d-cache-size = <65536>; 20 + i-cache-block-size = <64>; 21 + i-cache-sets = <128>; 22 + i-cache-size = <32768>; 23 + mmu-type = "riscv,sv39"; 24 + riscv,isa = "rv64imafdc"; 25 + riscv,isa-base = "rv64i"; 26 + riscv,isa-extensions = "i", "m", "a", "f", "d", "c", "zicntr", "zicsr", 27 + "zifencei", "zihpm"; 28 + 29 + cpu0_intc: interrupt-controller { 30 + compatible = "riscv,cpu-intc"; 31 + interrupt-controller; 32 + #interrupt-cells = <1>; 33 + }; 34 + }; 35 + }; 36 + };
+30 -13
arch/riscv/boot/dts/sophgo/cv1812h.dtsi
··· 3 3 * Copyright (C) 2023 Inochi Amaoto <inochiama@outlook.com> 4 4 */ 5 5 6 + #define SOC_PERIPHERAL_IRQ(nr) ((nr) + 16) 7 + 6 8 #include <dt-bindings/interrupt-controller/irq.h> 7 9 #include <dt-bindings/pinctrl/pinctrl-cv1812h.h> 8 - #include "cv18xx.dtsi" 10 + #include "cv180x-cpus.dtsi" 11 + #include "cv180x.dtsi" 9 12 #include "cv181x.dtsi" 10 13 11 14 / { ··· 20 17 }; 21 18 22 19 soc { 20 + interrupt-parent = <&plic>; 21 + dma-noncoherent; 22 + 23 23 pinctrl: pinctrl@3001000 { 24 24 compatible = "sophgo,cv1812h-pinctrl"; 25 25 reg = <0x03001000 0x1000>, 26 26 <0x05027000 0x1000>; 27 27 reg-names = "sys", "rtc"; 28 28 }; 29 + 30 + clk: clock-controller@3002000 { 31 + compatible = "sophgo,cv1812h-clk"; 32 + reg = <0x03002000 0x1000>; 33 + clocks = <&osc>; 34 + #clock-cells = <1>; 35 + }; 36 + 37 + plic: interrupt-controller@70000000 { 38 + compatible = "sophgo,cv1812h-plic", "thead,c900-plic"; 39 + reg = <0x70000000 0x4000000>; 40 + interrupts-extended = <&cpu0_intc 11>, <&cpu0_intc 9>; 41 + interrupt-controller; 42 + #address-cells = <0>; 43 + #interrupt-cells = <2>; 44 + riscv,ndev = <101>; 45 + }; 46 + 47 + clint: timer@74000000 { 48 + compatible = "sophgo,cv1812h-clint", "thead,c900-clint"; 49 + reg = <0x74000000 0x10000>; 50 + interrupts-extended = <&cpu0_intc 3>, <&cpu0_intc 7>; 51 + }; 29 52 }; 30 - }; 31 - 32 - &plic { 33 - compatible = "sophgo,cv1812h-plic", "thead,c900-plic"; 34 - }; 35 - 36 - &clint { 37 - compatible = "sophgo,cv1812h-clint", "thead,c900-clint"; 38 - }; 39 - 40 - &clk { 41 - compatible = "sophgo,cv1810-clk"; 42 53 };
+1 -1
arch/riscv/boot/dts/sophgo/cv181x.dtsi
··· 11 11 emmc: mmc@4300000 { 12 12 compatible = "sophgo,cv1800b-dwcmshc"; 13 13 reg = <0x4300000 0x1000>; 14 - interrupts = <34 IRQ_TYPE_LEVEL_HIGH>; 14 + interrupts = <SOC_PERIPHERAL_IRQ(18) IRQ_TYPE_LEVEL_HIGH>; 15 15 clocks = <&clk CLK_AXI4_EMMC>, 16 16 <&clk CLK_EMMC>; 17 17 clock-names = "core", "bus";
+22 -73
arch/riscv/boot/dts/sophgo/cv18xx.dtsi arch/riscv/boot/dts/sophgo/cv180x.dtsi
··· 12 12 #address-cells = <1>; 13 13 #size-cells = <1>; 14 14 15 - cpus: cpus { 16 - #address-cells = <1>; 17 - #size-cells = <0>; 18 - timebase-frequency = <25000000>; 19 - 20 - cpu0: cpu@0 { 21 - compatible = "thead,c906", "riscv"; 22 - device_type = "cpu"; 23 - reg = <0>; 24 - d-cache-block-size = <64>; 25 - d-cache-sets = <512>; 26 - d-cache-size = <65536>; 27 - i-cache-block-size = <64>; 28 - i-cache-sets = <128>; 29 - i-cache-size = <32768>; 30 - mmu-type = "riscv,sv39"; 31 - riscv,isa = "rv64imafdc"; 32 - riscv,isa-base = "rv64i"; 33 - riscv,isa-extensions = "i", "m", "a", "f", "d", "c", "zicntr", "zicsr", 34 - "zifencei", "zihpm"; 35 - 36 - cpu0_intc: interrupt-controller { 37 - compatible = "riscv,cpu-intc"; 38 - interrupt-controller; 39 - #interrupt-cells = <1>; 40 - }; 41 - }; 42 - }; 43 - 44 15 osc: oscillator { 45 16 compatible = "fixed-clock"; 46 17 clock-output-names = "osc_25m"; ··· 20 49 21 50 soc { 22 51 compatible = "simple-bus"; 23 - interrupt-parent = <&plic>; 24 52 #address-cells = <1>; 25 53 #size-cells = <1>; 26 - dma-noncoherent; 27 54 ranges; 28 - 29 - clk: clock-controller@3002000 { 30 - reg = <0x03002000 0x1000>; 31 - clocks = <&osc>; 32 - #clock-cells = <1>; 33 - }; 34 55 35 56 gpio0: gpio@3020000 { 36 57 compatible = "snps,dw-apb-gpio"; ··· 38 75 reg = <0>; 39 76 interrupt-controller; 40 77 #interrupt-cells = <2>; 41 - interrupts = <60 IRQ_TYPE_LEVEL_HIGH>; 78 + interrupts = <SOC_PERIPHERAL_IRQ(44) IRQ_TYPE_LEVEL_HIGH>; 42 79 }; 43 80 }; 44 81 ··· 56 93 reg = <0>; 57 94 interrupt-controller; 58 95 #interrupt-cells = <2>; 59 - interrupts = <61 IRQ_TYPE_LEVEL_HIGH>; 96 + interrupts = <SOC_PERIPHERAL_IRQ(45) IRQ_TYPE_LEVEL_HIGH>; 60 97 }; 61 98 }; 62 99 ··· 74 111 reg = <0>; 75 112 interrupt-controller; 76 113 #interrupt-cells = <2>; 77 - interrupts = <62 IRQ_TYPE_LEVEL_HIGH>; 114 + interrupts = <SOC_PERIPHERAL_IRQ(46) IRQ_TYPE_LEVEL_HIGH>; 78 115 }; 79 116 }; 80 117 ··· 92 129 reg = <0>; 93 130 interrupt-controller; 94 131 #interrupt-cells = <2>; 95 - interrupts = <63 IRQ_TYPE_LEVEL_HIGH>; 132 + interrupts = <SOC_PERIPHERAL_IRQ(47) IRQ_TYPE_LEVEL_HIGH>; 96 133 }; 97 134 }; 98 135 ··· 100 137 compatible = "sophgo,cv1800b-saradc"; 101 138 reg = <0x030f0000 0x1000>; 102 139 clocks = <&clk CLK_SARADC>; 103 - interrupts = <100 IRQ_TYPE_LEVEL_HIGH>; 140 + interrupts = <SOC_PERIPHERAL_IRQ(84) IRQ_TYPE_LEVEL_HIGH>; 104 141 #address-cells = <1>; 105 142 #size-cells = <0>; 106 143 status = "disabled"; ··· 125 162 #size-cells = <0>; 126 163 clocks = <&clk CLK_I2C>, <&clk CLK_APB_I2C0>; 127 164 clock-names = "ref", "pclk"; 128 - interrupts = <49 IRQ_TYPE_LEVEL_HIGH>; 165 + interrupts = <SOC_PERIPHERAL_IRQ(33) IRQ_TYPE_LEVEL_HIGH>; 129 166 status = "disabled"; 130 167 }; 131 168 ··· 136 173 #size-cells = <0>; 137 174 clocks = <&clk CLK_I2C>, <&clk CLK_APB_I2C1>; 138 175 clock-names = "ref", "pclk"; 139 - interrupts = <50 IRQ_TYPE_LEVEL_HIGH>; 176 + interrupts = <SOC_PERIPHERAL_IRQ(34) IRQ_TYPE_LEVEL_HIGH>; 140 177 status = "disabled"; 141 178 }; 142 179 ··· 147 184 #size-cells = <0>; 148 185 clocks = <&clk CLK_I2C>, <&clk CLK_APB_I2C2>; 149 186 clock-names = "ref", "pclk"; 150 - interrupts = <51 IRQ_TYPE_LEVEL_HIGH>; 187 + interrupts = <SOC_PERIPHERAL_IRQ(35) IRQ_TYPE_LEVEL_HIGH>; 151 188 status = "disabled"; 152 189 }; 153 190 ··· 158 195 #size-cells = <0>; 159 196 clocks = <&clk CLK_I2C>, <&clk CLK_APB_I2C3>; 160 197 clock-names = "ref", "pclk"; 161 - interrupts = <52 IRQ_TYPE_LEVEL_HIGH>; 198 + interrupts = <SOC_PERIPHERAL_IRQ(36) IRQ_TYPE_LEVEL_HIGH>; 162 199 status = "disabled"; 163 200 }; 164 201 ··· 169 206 #size-cells = <0>; 170 207 clocks = <&clk CLK_I2C>, <&clk CLK_APB_I2C4>; 171 208 clock-names = "ref", "pclk"; 172 - interrupts = <53 IRQ_TYPE_LEVEL_HIGH>; 209 + interrupts = <SOC_PERIPHERAL_IRQ(37) IRQ_TYPE_LEVEL_HIGH>; 173 210 status = "disabled"; 174 211 }; 175 212 176 213 uart0: serial@4140000 { 177 214 compatible = "snps,dw-apb-uart"; 178 215 reg = <0x04140000 0x100>; 179 - interrupts = <44 IRQ_TYPE_LEVEL_HIGH>; 216 + interrupts = <SOC_PERIPHERAL_IRQ(28) IRQ_TYPE_LEVEL_HIGH>; 180 217 clocks = <&clk CLK_UART0>, <&clk CLK_APB_UART0>; 181 218 clock-names = "baudclk", "apb_pclk"; 182 219 reg-shift = <2>; ··· 187 224 uart1: serial@4150000 { 188 225 compatible = "snps,dw-apb-uart"; 189 226 reg = <0x04150000 0x100>; 190 - interrupts = <45 IRQ_TYPE_LEVEL_HIGH>; 227 + interrupts = <SOC_PERIPHERAL_IRQ(29) IRQ_TYPE_LEVEL_HIGH>; 191 228 clocks = <&clk CLK_UART1>, <&clk CLK_APB_UART1>; 192 229 clock-names = "baudclk", "apb_pclk"; 193 230 reg-shift = <2>; ··· 198 235 uart2: serial@4160000 { 199 236 compatible = "snps,dw-apb-uart"; 200 237 reg = <0x04160000 0x100>; 201 - interrupts = <46 IRQ_TYPE_LEVEL_HIGH>; 238 + interrupts = <SOC_PERIPHERAL_IRQ(30) IRQ_TYPE_LEVEL_HIGH>; 202 239 clocks = <&clk CLK_UART2>, <&clk CLK_APB_UART2>; 203 240 clock-names = "baudclk", "apb_pclk"; 204 241 reg-shift = <2>; ··· 209 246 uart3: serial@4170000 { 210 247 compatible = "snps,dw-apb-uart"; 211 248 reg = <0x04170000 0x100>; 212 - interrupts = <47 IRQ_TYPE_LEVEL_HIGH>; 249 + interrupts = <SOC_PERIPHERAL_IRQ(31) IRQ_TYPE_LEVEL_HIGH>; 213 250 clocks = <&clk CLK_UART3>, <&clk CLK_APB_UART3>; 214 251 clock-names = "baudclk", "apb_pclk"; 215 252 reg-shift = <2>; ··· 224 261 #size-cells = <0>; 225 262 clocks = <&clk CLK_SPI>, <&clk CLK_APB_SPI0>; 226 263 clock-names = "ssi_clk", "pclk"; 227 - interrupts = <54 IRQ_TYPE_LEVEL_HIGH>; 264 + interrupts = <SOC_PERIPHERAL_IRQ(38) IRQ_TYPE_LEVEL_HIGH>; 228 265 status = "disabled"; 229 266 }; 230 267 ··· 235 272 #size-cells = <0>; 236 273 clocks = <&clk CLK_SPI>, <&clk CLK_APB_SPI1>; 237 274 clock-names = "ssi_clk", "pclk"; 238 - interrupts = <55 IRQ_TYPE_LEVEL_HIGH>; 275 + interrupts = <SOC_PERIPHERAL_IRQ(39) IRQ_TYPE_LEVEL_HIGH>; 239 276 status = "disabled"; 240 277 }; 241 278 ··· 246 283 #size-cells = <0>; 247 284 clocks = <&clk CLK_SPI>, <&clk CLK_APB_SPI2>; 248 285 clock-names = "ssi_clk", "pclk"; 249 - interrupts = <56 IRQ_TYPE_LEVEL_HIGH>; 286 + interrupts = <SOC_PERIPHERAL_IRQ(40) IRQ_TYPE_LEVEL_HIGH>; 250 287 status = "disabled"; 251 288 }; 252 289 ··· 257 294 #size-cells = <0>; 258 295 clocks = <&clk CLK_SPI>, <&clk CLK_APB_SPI3>; 259 296 clock-names = "ssi_clk", "pclk"; 260 - interrupts = <57 IRQ_TYPE_LEVEL_HIGH>; 297 + interrupts = <SOC_PERIPHERAL_IRQ(41) IRQ_TYPE_LEVEL_HIGH>; 261 298 status = "disabled"; 262 299 }; 263 300 264 301 uart4: serial@41c0000 { 265 302 compatible = "snps,dw-apb-uart"; 266 303 reg = <0x041c0000 0x100>; 267 - interrupts = <48 IRQ_TYPE_LEVEL_HIGH>; 304 + interrupts = <SOC_PERIPHERAL_IRQ(32) IRQ_TYPE_LEVEL_HIGH>; 268 305 clocks = <&clk CLK_UART4>, <&clk CLK_APB_UART4>; 269 306 clock-names = "baudclk", "apb_pclk"; 270 307 reg-shift = <2>; ··· 275 312 sdhci0: mmc@4310000 { 276 313 compatible = "sophgo,cv1800b-dwcmshc"; 277 314 reg = <0x4310000 0x1000>; 278 - interrupts = <36 IRQ_TYPE_LEVEL_HIGH>; 315 + interrupts = <SOC_PERIPHERAL_IRQ(20) IRQ_TYPE_LEVEL_HIGH>; 279 316 clocks = <&clk CLK_AXI4_SD0>, 280 317 <&clk CLK_SD0>; 281 318 clock-names = "core", "bus"; ··· 285 322 sdhci1: mmc@4320000 { 286 323 compatible = "sophgo,cv1800b-dwcmshc"; 287 324 reg = <0x4320000 0x1000>; 288 - interrupts = <38 IRQ_TYPE_LEVEL_HIGH>; 325 + interrupts = <SOC_PERIPHERAL_IRQ(22) IRQ_TYPE_LEVEL_HIGH>; 289 326 clocks = <&clk CLK_AXI4_SD1>, 290 327 <&clk CLK_SD1>; 291 328 clock-names = "core", "bus"; ··· 295 332 dmac: dma-controller@4330000 { 296 333 compatible = "snps,axi-dma-1.01a"; 297 334 reg = <0x04330000 0x1000>; 298 - interrupts = <29 IRQ_TYPE_LEVEL_HIGH>; 335 + interrupts = <SOC_PERIPHERAL_IRQ(13) IRQ_TYPE_LEVEL_HIGH>; 299 336 clocks = <&clk CLK_SDMA_AXI>, <&clk CLK_SDMA_AXI>; 300 337 clock-names = "core-clk", "cfgr-clk"; 301 338 #dma-cells = <1>; ··· 306 343 snps,dma-masters = <2>; 307 344 snps,data-width = <2>; 308 345 status = "disabled"; 309 - }; 310 - 311 - plic: interrupt-controller@70000000 { 312 - reg = <0x70000000 0x4000000>; 313 - interrupts-extended = <&cpu0_intc 11>, <&cpu0_intc 9>; 314 - interrupt-controller; 315 - #address-cells = <0>; 316 - #interrupt-cells = <2>; 317 - riscv,ndev = <101>; 318 - }; 319 - 320 - clint: timer@74000000 { 321 - reg = <0x74000000 0x10000>; 322 - interrupts-extended = <&cpu0_intc 3>, <&cpu0_intc 7>; 323 346 }; 324 347 }; 325 348 };
+30 -13
arch/riscv/boot/dts/sophgo/sg2002.dtsi
··· 3 3 * Copyright (C) 2024 Thomas Bonnefille <thomas.bonnefille@bootlin.com> 4 4 */ 5 5 6 + #define SOC_PERIPHERAL_IRQ(nr) ((nr) + 16) 7 + 6 8 #include <dt-bindings/interrupt-controller/irq.h> 7 9 #include <dt-bindings/pinctrl/pinctrl-sg2002.h> 8 - #include "cv18xx.dtsi" 10 + #include "cv180x-cpus.dtsi" 11 + #include "cv180x.dtsi" 9 12 #include "cv181x.dtsi" 10 13 11 14 / { ··· 20 17 }; 21 18 22 19 soc { 20 + interrupt-parent = <&plic>; 21 + dma-noncoherent; 22 + 23 23 pinctrl: pinctrl@3001000 { 24 24 compatible = "sophgo,sg2002-pinctrl"; 25 25 reg = <0x03001000 0x1000>, 26 26 <0x05027000 0x1000>; 27 27 reg-names = "sys", "rtc"; 28 28 }; 29 + 30 + clk: clock-controller@3002000 { 31 + compatible = "sophgo,sg2002-clk", "sophgo,sg2000-clk"; 32 + reg = <0x03002000 0x1000>; 33 + clocks = <&osc>; 34 + #clock-cells = <1>; 35 + }; 36 + 37 + plic: interrupt-controller@70000000 { 38 + compatible = "sophgo,sg2002-plic", "thead,c900-plic"; 39 + reg = <0x70000000 0x4000000>; 40 + interrupts-extended = <&cpu0_intc 11>, <&cpu0_intc 9>; 41 + interrupt-controller; 42 + #address-cells = <0>; 43 + #interrupt-cells = <2>; 44 + riscv,ndev = <101>; 45 + }; 46 + 47 + clint: timer@74000000 { 48 + compatible = "sophgo,sg2002-clint", "thead,c900-clint"; 49 + reg = <0x74000000 0x10000>; 50 + interrupts-extended = <&cpu0_intc 3>, <&cpu0_intc 7>; 51 + }; 29 52 }; 30 - }; 31 - 32 - &plic { 33 - compatible = "sophgo,sg2002-plic", "thead,c900-plic"; 34 - }; 35 - 36 - &clint { 37 - compatible = "sophgo,sg2002-clint", "thead,c900-clint"; 38 - }; 39 - 40 - &clk { 41 - compatible = "sophgo,sg2000-clk"; 42 53 }; 43 54 44 55 &sdhci0 {
+72
arch/riscv/boot/dts/sophgo/sg2042-milkv-pioneer.dts
··· 42 42 }; 43 43 44 44 &emmc { 45 + pinctrl-0 = <&emmc_cfg>; 46 + pinctrl-names = "default"; 45 47 bus-width = <4>; 46 48 no-sdio; 47 49 no-sd; ··· 53 51 }; 54 52 55 53 &i2c1 { 54 + pinctrl-0 = <&i2c1_cfg>; 55 + pinctrl-names = "default"; 56 56 status = "okay"; 57 57 58 58 mcu: syscon@17 { ··· 64 60 }; 65 61 }; 66 62 63 + &pinctrl { 64 + emmc_cfg: sdhci-emmc-cfg { 65 + sdhci-emmc-wp-pins { 66 + pinmux = <PINMUX(PIN_EMMC_WP, 0)>; 67 + bias-disable; 68 + drive-strength-microamp = <26800>; 69 + input-schmitt-disable; 70 + }; 71 + 72 + sdhci-emmc-cd-pins { 73 + pinmux = <PINMUX(PIN_EMMC_CD, 0)>; 74 + bias-pull-up; 75 + drive-strength-microamp = <26800>; 76 + input-schmitt-enable; 77 + }; 78 + 79 + sdhci-emmc-rst-pwr-pins { 80 + pinmux = <PINMUX(PIN_EMMC_RST, 0)>, 81 + <PINMUX(PIN_EMMC_PWR_EN, 0)>; 82 + bias-disable; 83 + drive-strength-microamp = <26800>; 84 + input-schmitt-disable; 85 + }; 86 + }; 87 + 88 + i2c1_cfg: i2c1-cfg { 89 + i2c1-pins { 90 + pinmux = <PINMUX(PIN_IIC1_SDA, 0)>, 91 + <PINMUX(PIN_IIC1_SCL, 0)>; 92 + bias-pull-up; 93 + drive-strength-microamp = <26800>; 94 + input-schmitt-enable; 95 + }; 96 + }; 97 + 98 + sd_cfg: sdhci-sd-cfg { 99 + sdhci-sd-cd-wp-pins { 100 + pinmux = <PINMUX(PIN_SDIO_CD, 0)>, 101 + <PINMUX(PIN_SDIO_WP, 0)>; 102 + bias-pull-up; 103 + drive-strength-microamp = <26800>; 104 + input-schmitt-enable; 105 + }; 106 + 107 + sdhci-sd-rst-pwr-pins { 108 + pinmux = <PINMUX(PIN_SDIO_RST, 0)>, 109 + <PINMUX(PIN_SDIO_PWR_EN, 0)>; 110 + bias-disable; 111 + drive-strength-microamp = <26800>; 112 + input-schmitt-disable; 113 + }; 114 + }; 115 + 116 + uart0_cfg: uart0-cfg { 117 + uart0-rx-pins { 118 + pinmux = <PINMUX(PIN_UART0_TX, 0)>, 119 + <PINMUX(PIN_UART0_RX, 0)>; 120 + bias-pull-up; 121 + drive-strength-microamp = <26800>; 122 + input-schmitt-enable; 123 + }; 124 + }; 125 + }; 126 + 67 127 &sd { 128 + pinctrl-0 = <&sd_cfg>; 129 + pinctrl-names = "default"; 68 130 bus-width = <4>; 69 131 no-sdio; 70 132 no-mmc; ··· 139 69 }; 140 70 141 71 &uart0 { 72 + pinctrl-0 = <&uart0_cfg>; 73 + pinctrl-names = "default"; 142 74 status = "okay"; 143 75 }; 144 76
+32
arch/riscv/boot/dts/sophgo/sg2042.dtsi
··· 8 8 #include <dt-bindings/clock/sophgo,sg2042-pll.h> 9 9 #include <dt-bindings/clock/sophgo,sg2042-rpgate.h> 10 10 #include <dt-bindings/interrupt-controller/irq.h> 11 + #include <dt-bindings/pinctrl/pinctrl-sg2042.h> 11 12 #include <dt-bindings/reset/sophgo,sg2042-reset.h> 12 13 13 14 #include "sg2042-cpus.dtsi" ··· 199 198 clocks = <&clkgen GATE_CLK_RP_CPU_NORMAL>; 200 199 clock-names = "rpgate"; 201 200 #clock-cells = <1>; 201 + }; 202 + 203 + pinctrl: pinctrl@7030011000 { 204 + compatible = "sophgo,sg2042-pinctrl"; 205 + reg = <0x70 0x30011000 0x0 0x1000>; 202 206 }; 203 207 204 208 clkgen: clock-controller@7030012000 { ··· 540 534 reg-shift = <2>; 541 535 reg-io-width = <4>; 542 536 resets = <&rstgen RST_UART0>; 537 + status = "disabled"; 538 + }; 539 + 540 + spi0: spi@7040004000 { 541 + compatible = "sophgo,sg2042-spi", "snps,dw-apb-ssi"; 542 + reg = <0x70 0x40004000 0x00 0x1000>; 543 + clocks = <&clkgen GATE_CLK_APB_SPI>; 544 + interrupt-parent = <&intc>; 545 + interrupts = <110 IRQ_TYPE_LEVEL_HIGH>; 546 + #address-cells = <1>; 547 + #size-cells = <0>; 548 + num-cs = <2>; 549 + resets = <&rstgen RST_SPI0>; 550 + status = "disabled"; 551 + }; 552 + 553 + spi1: spi@7040005000 { 554 + compatible = "sophgo,sg2042-spi", "snps,dw-apb-ssi"; 555 + reg = <0x70 0x40005000 0x00 0x1000>; 556 + clocks = <&clkgen GATE_CLK_APB_SPI>; 557 + interrupt-parent = <&intc>; 558 + interrupts = <111 IRQ_TYPE_LEVEL_HIGH>; 559 + #address-cells = <1>; 560 + #size-cells = <0>; 561 + num-cs = <2>; 562 + resets = <&rstgen RST_SPI1>; 543 563 status = "disabled"; 544 564 }; 545 565
+3002
arch/riscv/boot/dts/sophgo/sg2044-cpus.dtsi
··· 1 + // SPDX-License-Identifier: (GPL-2.0 OR MIT) 2 + /* 3 + * Copyright (C) 2025 Inochi Amaoto <inochiama@gmail.com> 4 + */ 5 + 6 + / { 7 + #address-cells = <2>; 8 + #size-cells = <2>; 9 + 10 + cpus { 11 + #address-cells = <1>; 12 + #size-cells = <0>; 13 + timebase-frequency = <50000000>; 14 + 15 + cpu0: cpu@0 { 16 + compatible = "thead,c920", "riscv"; 17 + reg = <0>; 18 + i-cache-block-size = <64>; 19 + i-cache-size = <65536>; 20 + i-cache-sets = <512>; 21 + d-cache-block-size = <64>; 22 + d-cache-size = <65536>; 23 + d-cache-sets = <512>; 24 + device_type = "cpu"; 25 + mmu-type = "riscv,sv48"; 26 + next-level-cache = <&l2_cache0>; 27 + riscv,isa = "rv64imafdcv"; 28 + riscv,isa-base = "rv64i"; 29 + riscv,isa-extensions = "i", "m", "a", "f", "d", "c", 30 + "v", "sscofpmf", "sstc", 31 + "svinval", "svnapot", "svpbmt", 32 + "zawrs", "zba", "zbb", "zbc", 33 + "zbs", "zca", "zcb", "zcd", 34 + "zfa", "zfbfmin", "zfh", "zfhmin", 35 + "zicbom", "zicbop", "zicboz", 36 + "zicntr", "zicond","zicsr", "zifencei", 37 + "zihintntl", "zihintpause", "zihpm", 38 + "zvfbfmin", "zvfbfwma", "zvfh", 39 + "zvfhmin"; 40 + riscv,cbom-block-size = <64>; 41 + riscv,cboz-block-size = <64>; 42 + 43 + cpu0_intc: interrupt-controller { 44 + compatible = "riscv,cpu-intc"; 45 + interrupt-controller; 46 + #interrupt-cells = <1>; 47 + }; 48 + }; 49 + 50 + cpu1: cpu@1 { 51 + compatible = "thead,c920", "riscv"; 52 + reg = <1>; 53 + i-cache-block-size = <64>; 54 + i-cache-size = <65536>; 55 + i-cache-sets = <512>; 56 + d-cache-block-size = <64>; 57 + d-cache-size = <65536>; 58 + d-cache-sets = <512>; 59 + device_type = "cpu"; 60 + mmu-type = "riscv,sv48"; 61 + next-level-cache = <&l2_cache0>; 62 + riscv,isa = "rv64imafdcv"; 63 + riscv,isa-base = "rv64i"; 64 + riscv,isa-extensions = "i", "m", "a", "f", "d", "c", 65 + "v", "sscofpmf", "sstc", 66 + "svinval", "svnapot", "svpbmt", 67 + "zawrs", "zba", "zbb", "zbc", 68 + "zbs", "zca", "zcb", "zcd", 69 + "zfa", "zfbfmin", "zfh", "zfhmin", 70 + "zicbom", "zicbop", "zicboz", 71 + "zicntr", "zicond","zicsr", "zifencei", 72 + "zihintntl", "zihintpause", "zihpm", 73 + "zvfbfmin", "zvfbfwma", "zvfh", 74 + "zvfhmin"; 75 + riscv,cbom-block-size = <64>; 76 + riscv,cboz-block-size = <64>; 77 + 78 + cpu1_intc: interrupt-controller { 79 + compatible = "riscv,cpu-intc"; 80 + interrupt-controller; 81 + #interrupt-cells = <1>; 82 + }; 83 + }; 84 + 85 + cpu2: cpu@2 { 86 + compatible = "thead,c920", "riscv"; 87 + reg = <2>; 88 + i-cache-block-size = <64>; 89 + i-cache-size = <65536>; 90 + i-cache-sets = <512>; 91 + d-cache-block-size = <64>; 92 + d-cache-size = <65536>; 93 + d-cache-sets = <512>; 94 + device_type = "cpu"; 95 + mmu-type = "riscv,sv48"; 96 + next-level-cache = <&l2_cache0>; 97 + riscv,isa = "rv64imafdcv"; 98 + riscv,isa-base = "rv64i"; 99 + riscv,isa-extensions = "i", "m", "a", "f", "d", "c", 100 + "v", "sscofpmf", "sstc", 101 + "svinval", "svnapot", "svpbmt", 102 + "zawrs", "zba", "zbb", "zbc", 103 + "zbs", "zca", "zcb", "zcd", 104 + "zfa", "zfbfmin", "zfh", "zfhmin", 105 + "zicbom", "zicbop", "zicboz", 106 + "zicntr", "zicond","zicsr", "zifencei", 107 + "zihintntl", "zihintpause", "zihpm", 108 + "zvfbfmin", "zvfbfwma", "zvfh", 109 + "zvfhmin"; 110 + riscv,cbom-block-size = <64>; 111 + riscv,cboz-block-size = <64>; 112 + 113 + cpu2_intc: interrupt-controller { 114 + compatible = "riscv,cpu-intc"; 115 + interrupt-controller; 116 + #interrupt-cells = <1>; 117 + }; 118 + }; 119 + 120 + cpu3: cpu@3 { 121 + compatible = "thead,c920", "riscv"; 122 + reg = <3>; 123 + i-cache-block-size = <64>; 124 + i-cache-size = <65536>; 125 + i-cache-sets = <512>; 126 + d-cache-block-size = <64>; 127 + d-cache-size = <65536>; 128 + d-cache-sets = <512>; 129 + device_type = "cpu"; 130 + mmu-type = "riscv,sv48"; 131 + next-level-cache = <&l2_cache0>; 132 + riscv,isa = "rv64imafdcv"; 133 + riscv,isa-base = "rv64i"; 134 + riscv,isa-extensions = "i", "m", "a", "f", "d", "c", 135 + "v", "sscofpmf", "sstc", 136 + "svinval", "svnapot", "svpbmt", 137 + "zawrs", "zba", "zbb", "zbc", 138 + "zbs", "zca", "zcb", "zcd", 139 + "zfa", "zfbfmin", "zfh", "zfhmin", 140 + "zicbom", "zicbop", "zicboz", 141 + "zicntr", "zicond","zicsr", "zifencei", 142 + "zihintntl", "zihintpause", "zihpm", 143 + "zvfbfmin", "zvfbfwma", "zvfh", 144 + "zvfhmin"; 145 + riscv,cbom-block-size = <64>; 146 + riscv,cboz-block-size = <64>; 147 + 148 + cpu3_intc: interrupt-controller { 149 + compatible = "riscv,cpu-intc"; 150 + interrupt-controller; 151 + #interrupt-cells = <1>; 152 + }; 153 + }; 154 + 155 + cpu4: cpu@4 { 156 + compatible = "thead,c920", "riscv"; 157 + reg = <4>; 158 + i-cache-block-size = <64>; 159 + i-cache-size = <65536>; 160 + i-cache-sets = <512>; 161 + d-cache-block-size = <64>; 162 + d-cache-size = <65536>; 163 + d-cache-sets = <512>; 164 + device_type = "cpu"; 165 + mmu-type = "riscv,sv48"; 166 + next-level-cache = <&l2_cache1>; 167 + riscv,isa = "rv64imafdcv"; 168 + riscv,isa-base = "rv64i"; 169 + riscv,isa-extensions = "i", "m", "a", "f", "d", "c", 170 + "v", "sscofpmf", "sstc", 171 + "svinval", "svnapot", "svpbmt", 172 + "zawrs", "zba", "zbb", "zbc", 173 + "zbs", "zca", "zcb", "zcd", 174 + "zfa", "zfbfmin", "zfh", "zfhmin", 175 + "zicbom", "zicbop", "zicboz", 176 + "zicntr", "zicond","zicsr", "zifencei", 177 + "zihintntl", "zihintpause", "zihpm", 178 + "zvfbfmin", "zvfbfwma", "zvfh", 179 + "zvfhmin"; 180 + riscv,cbom-block-size = <64>; 181 + riscv,cboz-block-size = <64>; 182 + 183 + cpu4_intc: interrupt-controller { 184 + compatible = "riscv,cpu-intc"; 185 + interrupt-controller; 186 + #interrupt-cells = <1>; 187 + }; 188 + }; 189 + 190 + cpu5: cpu@5 { 191 + compatible = "thead,c920", "riscv"; 192 + reg = <5>; 193 + i-cache-block-size = <64>; 194 + i-cache-size = <65536>; 195 + i-cache-sets = <512>; 196 + d-cache-block-size = <64>; 197 + d-cache-size = <65536>; 198 + d-cache-sets = <512>; 199 + device_type = "cpu"; 200 + mmu-type = "riscv,sv48"; 201 + next-level-cache = <&l2_cache1>; 202 + riscv,isa = "rv64imafdcv"; 203 + riscv,isa-base = "rv64i"; 204 + riscv,isa-extensions = "i", "m", "a", "f", "d", "c", 205 + "v", "sscofpmf", "sstc", 206 + "svinval", "svnapot", "svpbmt", 207 + "zawrs", "zba", "zbb", "zbc", 208 + "zbs", "zca", "zcb", "zcd", 209 + "zfa", "zfbfmin", "zfh", "zfhmin", 210 + "zicbom", "zicbop", "zicboz", 211 + "zicntr", "zicond","zicsr", "zifencei", 212 + "zihintntl", "zihintpause", "zihpm", 213 + "zvfbfmin", "zvfbfwma", "zvfh", 214 + "zvfhmin"; 215 + riscv,cbom-block-size = <64>; 216 + riscv,cboz-block-size = <64>; 217 + 218 + cpu5_intc: interrupt-controller { 219 + compatible = "riscv,cpu-intc"; 220 + interrupt-controller; 221 + #interrupt-cells = <1>; 222 + }; 223 + }; 224 + 225 + cpu6: cpu@6 { 226 + compatible = "thead,c920", "riscv"; 227 + reg = <6>; 228 + i-cache-block-size = <64>; 229 + i-cache-size = <65536>; 230 + i-cache-sets = <512>; 231 + d-cache-block-size = <64>; 232 + d-cache-size = <65536>; 233 + d-cache-sets = <512>; 234 + device_type = "cpu"; 235 + mmu-type = "riscv,sv48"; 236 + next-level-cache = <&l2_cache1>; 237 + riscv,isa = "rv64imafdcv"; 238 + riscv,isa-base = "rv64i"; 239 + riscv,isa-extensions = "i", "m", "a", "f", "d", "c", 240 + "v", "sscofpmf", "sstc", 241 + "svinval", "svnapot", "svpbmt", 242 + "zawrs", "zba", "zbb", "zbc", 243 + "zbs", "zca", "zcb", "zcd", 244 + "zfa", "zfbfmin", "zfh", "zfhmin", 245 + "zicbom", "zicbop", "zicboz", 246 + "zicntr", "zicond","zicsr", "zifencei", 247 + "zihintntl", "zihintpause", "zihpm", 248 + "zvfbfmin", "zvfbfwma", "zvfh", 249 + "zvfhmin"; 250 + riscv,cbom-block-size = <64>; 251 + riscv,cboz-block-size = <64>; 252 + 253 + cpu6_intc: interrupt-controller { 254 + compatible = "riscv,cpu-intc"; 255 + interrupt-controller; 256 + #interrupt-cells = <1>; 257 + }; 258 + }; 259 + 260 + cpu7: cpu@7 { 261 + compatible = "thead,c920", "riscv"; 262 + reg = <7>; 263 + i-cache-block-size = <64>; 264 + i-cache-size = <65536>; 265 + i-cache-sets = <512>; 266 + d-cache-block-size = <64>; 267 + d-cache-size = <65536>; 268 + d-cache-sets = <512>; 269 + device_type = "cpu"; 270 + mmu-type = "riscv,sv48"; 271 + next-level-cache = <&l2_cache1>; 272 + riscv,isa = "rv64imafdcv"; 273 + riscv,isa-base = "rv64i"; 274 + riscv,isa-extensions = "i", "m", "a", "f", "d", "c", 275 + "v", "sscofpmf", "sstc", 276 + "svinval", "svnapot", "svpbmt", 277 + "zawrs", "zba", "zbb", "zbc", 278 + "zbs", "zca", "zcb", "zcd", 279 + "zfa", "zfbfmin", "zfh", "zfhmin", 280 + "zicbom", "zicbop", "zicboz", 281 + "zicntr", "zicond","zicsr", "zifencei", 282 + "zihintntl", "zihintpause", "zihpm", 283 + "zvfbfmin", "zvfbfwma", "zvfh", 284 + "zvfhmin"; 285 + riscv,cbom-block-size = <64>; 286 + riscv,cboz-block-size = <64>; 287 + 288 + cpu7_intc: interrupt-controller { 289 + compatible = "riscv,cpu-intc"; 290 + interrupt-controller; 291 + #interrupt-cells = <1>; 292 + }; 293 + }; 294 + 295 + cpu8: cpu@8 { 296 + compatible = "thead,c920", "riscv"; 297 + reg = <8>; 298 + i-cache-block-size = <64>; 299 + i-cache-size = <65536>; 300 + i-cache-sets = <512>; 301 + d-cache-block-size = <64>; 302 + d-cache-size = <65536>; 303 + d-cache-sets = <512>; 304 + device_type = "cpu"; 305 + mmu-type = "riscv,sv48"; 306 + next-level-cache = <&l2_cache2>; 307 + riscv,isa = "rv64imafdcv"; 308 + riscv,isa-base = "rv64i"; 309 + riscv,isa-extensions = "i", "m", "a", "f", "d", "c", 310 + "v", "sscofpmf", "sstc", 311 + "svinval", "svnapot", "svpbmt", 312 + "zawrs", "zba", "zbb", "zbc", 313 + "zbs", "zca", "zcb", "zcd", 314 + "zfa", "zfbfmin", "zfh", "zfhmin", 315 + "zicbom", "zicbop", "zicboz", 316 + "zicntr", "zicond","zicsr", "zifencei", 317 + "zihintntl", "zihintpause", "zihpm", 318 + "zvfbfmin", "zvfbfwma", "zvfh", 319 + "zvfhmin"; 320 + riscv,cbom-block-size = <64>; 321 + riscv,cboz-block-size = <64>; 322 + 323 + cpu8_intc: interrupt-controller { 324 + compatible = "riscv,cpu-intc"; 325 + interrupt-controller; 326 + #interrupt-cells = <1>; 327 + }; 328 + }; 329 + 330 + cpu9: cpu@9 { 331 + compatible = "thead,c920", "riscv"; 332 + reg = <9>; 333 + i-cache-block-size = <64>; 334 + i-cache-size = <65536>; 335 + i-cache-sets = <512>; 336 + d-cache-block-size = <64>; 337 + d-cache-size = <65536>; 338 + d-cache-sets = <512>; 339 + device_type = "cpu"; 340 + mmu-type = "riscv,sv48"; 341 + next-level-cache = <&l2_cache2>; 342 + riscv,isa = "rv64imafdcv"; 343 + riscv,isa-base = "rv64i"; 344 + riscv,isa-extensions = "i", "m", "a", "f", "d", "c", 345 + "v", "sscofpmf", "sstc", 346 + "svinval", "svnapot", "svpbmt", 347 + "zawrs", "zba", "zbb", "zbc", 348 + "zbs", "zca", "zcb", "zcd", 349 + "zfa", "zfbfmin", "zfh", "zfhmin", 350 + "zicbom", "zicbop", "zicboz", 351 + "zicntr", "zicond","zicsr", "zifencei", 352 + "zihintntl", "zihintpause", "zihpm", 353 + "zvfbfmin", "zvfbfwma", "zvfh", 354 + "zvfhmin"; 355 + riscv,cbom-block-size = <64>; 356 + riscv,cboz-block-size = <64>; 357 + 358 + cpu9_intc: interrupt-controller { 359 + compatible = "riscv,cpu-intc"; 360 + interrupt-controller; 361 + #interrupt-cells = <1>; 362 + }; 363 + }; 364 + 365 + cpu10: cpu@10 { 366 + compatible = "thead,c920", "riscv"; 367 + reg = <10>; 368 + i-cache-block-size = <64>; 369 + i-cache-size = <65536>; 370 + i-cache-sets = <512>; 371 + d-cache-block-size = <64>; 372 + d-cache-size = <65536>; 373 + d-cache-sets = <512>; 374 + device_type = "cpu"; 375 + mmu-type = "riscv,sv48"; 376 + next-level-cache = <&l2_cache2>; 377 + riscv,isa = "rv64imafdcv"; 378 + riscv,isa-base = "rv64i"; 379 + riscv,isa-extensions = "i", "m", "a", "f", "d", "c", 380 + "v", "sscofpmf", "sstc", 381 + "svinval", "svnapot", "svpbmt", 382 + "zawrs", "zba", "zbb", "zbc", 383 + "zbs", "zca", "zcb", "zcd", 384 + "zfa", "zfbfmin", "zfh", "zfhmin", 385 + "zicbom", "zicbop", "zicboz", 386 + "zicntr", "zicond","zicsr", "zifencei", 387 + "zihintntl", "zihintpause", "zihpm", 388 + "zvfbfmin", "zvfbfwma", "zvfh", 389 + "zvfhmin"; 390 + riscv,cbom-block-size = <64>; 391 + riscv,cboz-block-size = <64>; 392 + 393 + cpu10_intc: interrupt-controller { 394 + compatible = "riscv,cpu-intc"; 395 + interrupt-controller; 396 + #interrupt-cells = <1>; 397 + }; 398 + }; 399 + 400 + cpu11: cpu@11 { 401 + compatible = "thead,c920", "riscv"; 402 + reg = <11>; 403 + i-cache-block-size = <64>; 404 + i-cache-size = <65536>; 405 + i-cache-sets = <512>; 406 + d-cache-block-size = <64>; 407 + d-cache-size = <65536>; 408 + d-cache-sets = <512>; 409 + device_type = "cpu"; 410 + mmu-type = "riscv,sv48"; 411 + next-level-cache = <&l2_cache2>; 412 + riscv,isa = "rv64imafdcv"; 413 + riscv,isa-base = "rv64i"; 414 + riscv,isa-extensions = "i", "m", "a", "f", "d", "c", 415 + "v", "sscofpmf", "sstc", 416 + "svinval", "svnapot", "svpbmt", 417 + "zawrs", "zba", "zbb", "zbc", 418 + "zbs", "zca", "zcb", "zcd", 419 + "zfa", "zfbfmin", "zfh", "zfhmin", 420 + "zicbom", "zicbop", "zicboz", 421 + "zicntr", "zicond","zicsr", "zifencei", 422 + "zihintntl", "zihintpause", "zihpm", 423 + "zvfbfmin", "zvfbfwma", "zvfh", 424 + "zvfhmin"; 425 + riscv,cbom-block-size = <64>; 426 + riscv,cboz-block-size = <64>; 427 + 428 + cpu11_intc: interrupt-controller { 429 + compatible = "riscv,cpu-intc"; 430 + interrupt-controller; 431 + #interrupt-cells = <1>; 432 + }; 433 + }; 434 + 435 + cpu12: cpu@12 { 436 + compatible = "thead,c920", "riscv"; 437 + reg = <12>; 438 + i-cache-block-size = <64>; 439 + i-cache-size = <65536>; 440 + i-cache-sets = <512>; 441 + d-cache-block-size = <64>; 442 + d-cache-size = <65536>; 443 + d-cache-sets = <512>; 444 + device_type = "cpu"; 445 + mmu-type = "riscv,sv48"; 446 + next-level-cache = <&l2_cache3>; 447 + riscv,isa = "rv64imafdcv"; 448 + riscv,isa-base = "rv64i"; 449 + riscv,isa-extensions = "i", "m", "a", "f", "d", "c", 450 + "v", "sscofpmf", "sstc", 451 + "svinval", "svnapot", "svpbmt", 452 + "zawrs", "zba", "zbb", "zbc", 453 + "zbs", "zca", "zcb", "zcd", 454 + "zfa", "zfbfmin", "zfh", "zfhmin", 455 + "zicbom", "zicbop", "zicboz", 456 + "zicntr", "zicond","zicsr", "zifencei", 457 + "zihintntl", "zihintpause", "zihpm", 458 + "zvfbfmin", "zvfbfwma", "zvfh", 459 + "zvfhmin"; 460 + riscv,cbom-block-size = <64>; 461 + riscv,cboz-block-size = <64>; 462 + 463 + cpu12_intc: interrupt-controller { 464 + compatible = "riscv,cpu-intc"; 465 + interrupt-controller; 466 + #interrupt-cells = <1>; 467 + }; 468 + }; 469 + 470 + cpu13: cpu@13 { 471 + compatible = "thead,c920", "riscv"; 472 + reg = <13>; 473 + i-cache-block-size = <64>; 474 + i-cache-size = <65536>; 475 + i-cache-sets = <512>; 476 + d-cache-block-size = <64>; 477 + d-cache-size = <65536>; 478 + d-cache-sets = <512>; 479 + device_type = "cpu"; 480 + mmu-type = "riscv,sv48"; 481 + next-level-cache = <&l2_cache3>; 482 + riscv,isa = "rv64imafdcv"; 483 + riscv,isa-base = "rv64i"; 484 + riscv,isa-extensions = "i", "m", "a", "f", "d", "c", 485 + "v", "sscofpmf", "sstc", 486 + "svinval", "svnapot", "svpbmt", 487 + "zawrs", "zba", "zbb", "zbc", 488 + "zbs", "zca", "zcb", "zcd", 489 + "zfa", "zfbfmin", "zfh", "zfhmin", 490 + "zicbom", "zicbop", "zicboz", 491 + "zicntr", "zicond","zicsr", "zifencei", 492 + "zihintntl", "zihintpause", "zihpm", 493 + "zvfbfmin", "zvfbfwma", "zvfh", 494 + "zvfhmin"; 495 + riscv,cbom-block-size = <64>; 496 + riscv,cboz-block-size = <64>; 497 + 498 + cpu13_intc: interrupt-controller { 499 + compatible = "riscv,cpu-intc"; 500 + interrupt-controller; 501 + #interrupt-cells = <1>; 502 + }; 503 + }; 504 + 505 + cpu14: cpu@14 { 506 + compatible = "thead,c920", "riscv"; 507 + reg = <14>; 508 + i-cache-block-size = <64>; 509 + i-cache-size = <65536>; 510 + i-cache-sets = <512>; 511 + d-cache-block-size = <64>; 512 + d-cache-size = <65536>; 513 + d-cache-sets = <512>; 514 + device_type = "cpu"; 515 + mmu-type = "riscv,sv48"; 516 + next-level-cache = <&l2_cache3>; 517 + riscv,isa = "rv64imafdcv"; 518 + riscv,isa-base = "rv64i"; 519 + riscv,isa-extensions = "i", "m", "a", "f", "d", "c", 520 + "v", "sscofpmf", "sstc", 521 + "svinval", "svnapot", "svpbmt", 522 + "zawrs", "zba", "zbb", "zbc", 523 + "zbs", "zca", "zcb", "zcd", 524 + "zfa", "zfbfmin", "zfh", "zfhmin", 525 + "zicbom", "zicbop", "zicboz", 526 + "zicntr", "zicond","zicsr", "zifencei", 527 + "zihintntl", "zihintpause", "zihpm", 528 + "zvfbfmin", "zvfbfwma", "zvfh", 529 + "zvfhmin"; 530 + riscv,cbom-block-size = <64>; 531 + riscv,cboz-block-size = <64>; 532 + 533 + cpu14_intc: interrupt-controller { 534 + compatible = "riscv,cpu-intc"; 535 + interrupt-controller; 536 + #interrupt-cells = <1>; 537 + }; 538 + }; 539 + 540 + cpu15: cpu@15 { 541 + compatible = "thead,c920", "riscv"; 542 + reg = <15>; 543 + i-cache-block-size = <64>; 544 + i-cache-size = <65536>; 545 + i-cache-sets = <512>; 546 + d-cache-block-size = <64>; 547 + d-cache-size = <65536>; 548 + d-cache-sets = <512>; 549 + device_type = "cpu"; 550 + mmu-type = "riscv,sv48"; 551 + next-level-cache = <&l2_cache3>; 552 + riscv,isa = "rv64imafdcv"; 553 + riscv,isa-base = "rv64i"; 554 + riscv,isa-extensions = "i", "m", "a", "f", "d", "c", 555 + "v", "sscofpmf", "sstc", 556 + "svinval", "svnapot", "svpbmt", 557 + "zawrs", "zba", "zbb", "zbc", 558 + "zbs", "zca", "zcb", "zcd", 559 + "zfa", "zfbfmin", "zfh", "zfhmin", 560 + "zicbom", "zicbop", "zicboz", 561 + "zicntr", "zicond","zicsr", "zifencei", 562 + "zihintntl", "zihintpause", "zihpm", 563 + "zvfbfmin", "zvfbfwma", "zvfh", 564 + "zvfhmin"; 565 + riscv,cbom-block-size = <64>; 566 + riscv,cboz-block-size = <64>; 567 + 568 + cpu15_intc: interrupt-controller { 569 + compatible = "riscv,cpu-intc"; 570 + interrupt-controller; 571 + #interrupt-cells = <1>; 572 + }; 573 + }; 574 + 575 + cpu16: cpu@16 { 576 + compatible = "thead,c920", "riscv"; 577 + reg = <16>; 578 + i-cache-block-size = <64>; 579 + i-cache-size = <65536>; 580 + i-cache-sets = <512>; 581 + d-cache-block-size = <64>; 582 + d-cache-size = <65536>; 583 + d-cache-sets = <512>; 584 + device_type = "cpu"; 585 + mmu-type = "riscv,sv48"; 586 + next-level-cache = <&l2_cache4>; 587 + riscv,isa = "rv64imafdcv"; 588 + riscv,isa-base = "rv64i"; 589 + riscv,isa-extensions = "i", "m", "a", "f", "d", "c", 590 + "v", "sscofpmf", "sstc", 591 + "svinval", "svnapot", "svpbmt", 592 + "zawrs", "zba", "zbb", "zbc", 593 + "zbs", "zca", "zcb", "zcd", 594 + "zfa", "zfbfmin", "zfh", "zfhmin", 595 + "zicbom", "zicbop", "zicboz", 596 + "zicntr", "zicond","zicsr", "zifencei", 597 + "zihintntl", "zihintpause", "zihpm", 598 + "zvfbfmin", "zvfbfwma", "zvfh", 599 + "zvfhmin"; 600 + riscv,cbom-block-size = <64>; 601 + riscv,cboz-block-size = <64>; 602 + 603 + cpu16_intc: interrupt-controller { 604 + compatible = "riscv,cpu-intc"; 605 + interrupt-controller; 606 + #interrupt-cells = <1>; 607 + }; 608 + }; 609 + 610 + cpu17: cpu@17 { 611 + compatible = "thead,c920", "riscv"; 612 + reg = <17>; 613 + i-cache-block-size = <64>; 614 + i-cache-size = <65536>; 615 + i-cache-sets = <512>; 616 + d-cache-block-size = <64>; 617 + d-cache-size = <65536>; 618 + d-cache-sets = <512>; 619 + device_type = "cpu"; 620 + mmu-type = "riscv,sv48"; 621 + next-level-cache = <&l2_cache4>; 622 + riscv,isa = "rv64imafdcv"; 623 + riscv,isa-base = "rv64i"; 624 + riscv,isa-extensions = "i", "m", "a", "f", "d", "c", 625 + "v", "sscofpmf", "sstc", 626 + "svinval", "svnapot", "svpbmt", 627 + "zawrs", "zba", "zbb", "zbc", 628 + "zbs", "zca", "zcb", "zcd", 629 + "zfa", "zfbfmin", "zfh", "zfhmin", 630 + "zicbom", "zicbop", "zicboz", 631 + "zicntr", "zicond","zicsr", "zifencei", 632 + "zihintntl", "zihintpause", "zihpm", 633 + "zvfbfmin", "zvfbfwma", "zvfh", 634 + "zvfhmin"; 635 + riscv,cbom-block-size = <64>; 636 + riscv,cboz-block-size = <64>; 637 + 638 + cpu17_intc: interrupt-controller { 639 + compatible = "riscv,cpu-intc"; 640 + interrupt-controller; 641 + #interrupt-cells = <1>; 642 + }; 643 + }; 644 + 645 + cpu18: cpu@18 { 646 + compatible = "thead,c920", "riscv"; 647 + reg = <18>; 648 + i-cache-block-size = <64>; 649 + i-cache-size = <65536>; 650 + i-cache-sets = <512>; 651 + d-cache-block-size = <64>; 652 + d-cache-size = <65536>; 653 + d-cache-sets = <512>; 654 + device_type = "cpu"; 655 + mmu-type = "riscv,sv48"; 656 + next-level-cache = <&l2_cache4>; 657 + riscv,isa = "rv64imafdcv"; 658 + riscv,isa-base = "rv64i"; 659 + riscv,isa-extensions = "i", "m", "a", "f", "d", "c", 660 + "v", "sscofpmf", "sstc", 661 + "svinval", "svnapot", "svpbmt", 662 + "zawrs", "zba", "zbb", "zbc", 663 + "zbs", "zca", "zcb", "zcd", 664 + "zfa", "zfbfmin", "zfh", "zfhmin", 665 + "zicbom", "zicbop", "zicboz", 666 + "zicntr", "zicond","zicsr", "zifencei", 667 + "zihintntl", "zihintpause", "zihpm", 668 + "zvfbfmin", "zvfbfwma", "zvfh", 669 + "zvfhmin"; 670 + riscv,cbom-block-size = <64>; 671 + riscv,cboz-block-size = <64>; 672 + 673 + cpu18_intc: interrupt-controller { 674 + compatible = "riscv,cpu-intc"; 675 + interrupt-controller; 676 + #interrupt-cells = <1>; 677 + }; 678 + }; 679 + 680 + cpu19: cpu@19 { 681 + compatible = "thead,c920", "riscv"; 682 + reg = <19>; 683 + i-cache-block-size = <64>; 684 + i-cache-size = <65536>; 685 + i-cache-sets = <512>; 686 + d-cache-block-size = <64>; 687 + d-cache-size = <65536>; 688 + d-cache-sets = <512>; 689 + device_type = "cpu"; 690 + mmu-type = "riscv,sv48"; 691 + next-level-cache = <&l2_cache4>; 692 + riscv,isa = "rv64imafdcv"; 693 + riscv,isa-base = "rv64i"; 694 + riscv,isa-extensions = "i", "m", "a", "f", "d", "c", 695 + "v", "sscofpmf", "sstc", 696 + "svinval", "svnapot", "svpbmt", 697 + "zawrs", "zba", "zbb", "zbc", 698 + "zbs", "zca", "zcb", "zcd", 699 + "zfa", "zfbfmin", "zfh", "zfhmin", 700 + "zicbom", "zicbop", "zicboz", 701 + "zicntr", "zicond","zicsr", "zifencei", 702 + "zihintntl", "zihintpause", "zihpm", 703 + "zvfbfmin", "zvfbfwma", "zvfh", 704 + "zvfhmin"; 705 + riscv,cbom-block-size = <64>; 706 + riscv,cboz-block-size = <64>; 707 + 708 + cpu19_intc: interrupt-controller { 709 + compatible = "riscv,cpu-intc"; 710 + interrupt-controller; 711 + #interrupt-cells = <1>; 712 + }; 713 + }; 714 + 715 + cpu20: cpu@20 { 716 + compatible = "thead,c920", "riscv"; 717 + reg = <20>; 718 + i-cache-block-size = <64>; 719 + i-cache-size = <65536>; 720 + i-cache-sets = <512>; 721 + d-cache-block-size = <64>; 722 + d-cache-size = <65536>; 723 + d-cache-sets = <512>; 724 + device_type = "cpu"; 725 + mmu-type = "riscv,sv48"; 726 + next-level-cache = <&l2_cache5>; 727 + riscv,isa = "rv64imafdcv"; 728 + riscv,isa-base = "rv64i"; 729 + riscv,isa-extensions = "i", "m", "a", "f", "d", "c", 730 + "v", "sscofpmf", "sstc", 731 + "svinval", "svnapot", "svpbmt", 732 + "zawrs", "zba", "zbb", "zbc", 733 + "zbs", "zca", "zcb", "zcd", 734 + "zfa", "zfbfmin", "zfh", "zfhmin", 735 + "zicbom", "zicbop", "zicboz", 736 + "zicntr", "zicond","zicsr", "zifencei", 737 + "zihintntl", "zihintpause", "zihpm", 738 + "zvfbfmin", "zvfbfwma", "zvfh", 739 + "zvfhmin"; 740 + riscv,cbom-block-size = <64>; 741 + riscv,cboz-block-size = <64>; 742 + 743 + cpu20_intc: interrupt-controller { 744 + compatible = "riscv,cpu-intc"; 745 + interrupt-controller; 746 + #interrupt-cells = <1>; 747 + }; 748 + }; 749 + 750 + cpu21: cpu@21 { 751 + compatible = "thead,c920", "riscv"; 752 + reg = <21>; 753 + i-cache-block-size = <64>; 754 + i-cache-size = <65536>; 755 + i-cache-sets = <512>; 756 + d-cache-block-size = <64>; 757 + d-cache-size = <65536>; 758 + d-cache-sets = <512>; 759 + device_type = "cpu"; 760 + mmu-type = "riscv,sv48"; 761 + next-level-cache = <&l2_cache5>; 762 + riscv,isa = "rv64imafdcv"; 763 + riscv,isa-base = "rv64i"; 764 + riscv,isa-extensions = "i", "m", "a", "f", "d", "c", 765 + "v", "sscofpmf", "sstc", 766 + "svinval", "svnapot", "svpbmt", 767 + "zawrs", "zba", "zbb", "zbc", 768 + "zbs", "zca", "zcb", "zcd", 769 + "zfa", "zfbfmin", "zfh", "zfhmin", 770 + "zicbom", "zicbop", "zicboz", 771 + "zicntr", "zicond","zicsr", "zifencei", 772 + "zihintntl", "zihintpause", "zihpm", 773 + "zvfbfmin", "zvfbfwma", "zvfh", 774 + "zvfhmin"; 775 + riscv,cbom-block-size = <64>; 776 + riscv,cboz-block-size = <64>; 777 + 778 + cpu21_intc: interrupt-controller { 779 + compatible = "riscv,cpu-intc"; 780 + interrupt-controller; 781 + #interrupt-cells = <1>; 782 + }; 783 + }; 784 + 785 + cpu22: cpu@22 { 786 + compatible = "thead,c920", "riscv"; 787 + reg = <22>; 788 + i-cache-block-size = <64>; 789 + i-cache-size = <65536>; 790 + i-cache-sets = <512>; 791 + d-cache-block-size = <64>; 792 + d-cache-size = <65536>; 793 + d-cache-sets = <512>; 794 + device_type = "cpu"; 795 + mmu-type = "riscv,sv48"; 796 + next-level-cache = <&l2_cache5>; 797 + riscv,isa = "rv64imafdcv"; 798 + riscv,isa-base = "rv64i"; 799 + riscv,isa-extensions = "i", "m", "a", "f", "d", "c", 800 + "v", "sscofpmf", "sstc", 801 + "svinval", "svnapot", "svpbmt", 802 + "zawrs", "zba", "zbb", "zbc", 803 + "zbs", "zca", "zcb", "zcd", 804 + "zfa", "zfbfmin", "zfh", "zfhmin", 805 + "zicbom", "zicbop", "zicboz", 806 + "zicntr", "zicond","zicsr", "zifencei", 807 + "zihintntl", "zihintpause", "zihpm", 808 + "zvfbfmin", "zvfbfwma", "zvfh", 809 + "zvfhmin"; 810 + riscv,cbom-block-size = <64>; 811 + riscv,cboz-block-size = <64>; 812 + 813 + cpu22_intc: interrupt-controller { 814 + compatible = "riscv,cpu-intc"; 815 + interrupt-controller; 816 + #interrupt-cells = <1>; 817 + }; 818 + }; 819 + 820 + cpu23: cpu@23 { 821 + compatible = "thead,c920", "riscv"; 822 + reg = <23>; 823 + i-cache-block-size = <64>; 824 + i-cache-size = <65536>; 825 + i-cache-sets = <512>; 826 + d-cache-block-size = <64>; 827 + d-cache-size = <65536>; 828 + d-cache-sets = <512>; 829 + device_type = "cpu"; 830 + mmu-type = "riscv,sv48"; 831 + next-level-cache = <&l2_cache5>; 832 + riscv,isa = "rv64imafdcv"; 833 + riscv,isa-base = "rv64i"; 834 + riscv,isa-extensions = "i", "m", "a", "f", "d", "c", 835 + "v", "sscofpmf", "sstc", 836 + "svinval", "svnapot", "svpbmt", 837 + "zawrs", "zba", "zbb", "zbc", 838 + "zbs", "zca", "zcb", "zcd", 839 + "zfa", "zfbfmin", "zfh", "zfhmin", 840 + "zicbom", "zicbop", "zicboz", 841 + "zicntr", "zicond","zicsr", "zifencei", 842 + "zihintntl", "zihintpause", "zihpm", 843 + "zvfbfmin", "zvfbfwma", "zvfh", 844 + "zvfhmin"; 845 + riscv,cbom-block-size = <64>; 846 + riscv,cboz-block-size = <64>; 847 + 848 + cpu23_intc: interrupt-controller { 849 + compatible = "riscv,cpu-intc"; 850 + interrupt-controller; 851 + #interrupt-cells = <1>; 852 + }; 853 + }; 854 + 855 + cpu24: cpu@24 { 856 + compatible = "thead,c920", "riscv"; 857 + reg = <24>; 858 + i-cache-block-size = <64>; 859 + i-cache-size = <65536>; 860 + i-cache-sets = <512>; 861 + d-cache-block-size = <64>; 862 + d-cache-size = <65536>; 863 + d-cache-sets = <512>; 864 + device_type = "cpu"; 865 + mmu-type = "riscv,sv48"; 866 + next-level-cache = <&l2_cache6>; 867 + riscv,isa = "rv64imafdcv"; 868 + riscv,isa-base = "rv64i"; 869 + riscv,isa-extensions = "i", "m", "a", "f", "d", "c", 870 + "v", "sscofpmf", "sstc", 871 + "svinval", "svnapot", "svpbmt", 872 + "zawrs", "zba", "zbb", "zbc", 873 + "zbs", "zca", "zcb", "zcd", 874 + "zfa", "zfbfmin", "zfh", "zfhmin", 875 + "zicbom", "zicbop", "zicboz", 876 + "zicntr", "zicond","zicsr", "zifencei", 877 + "zihintntl", "zihintpause", "zihpm", 878 + "zvfbfmin", "zvfbfwma", "zvfh", 879 + "zvfhmin"; 880 + riscv,cbom-block-size = <64>; 881 + riscv,cboz-block-size = <64>; 882 + 883 + cpu24_intc: interrupt-controller { 884 + compatible = "riscv,cpu-intc"; 885 + interrupt-controller; 886 + #interrupt-cells = <1>; 887 + }; 888 + }; 889 + 890 + cpu25: cpu@25 { 891 + compatible = "thead,c920", "riscv"; 892 + reg = <25>; 893 + i-cache-block-size = <64>; 894 + i-cache-size = <65536>; 895 + i-cache-sets = <512>; 896 + d-cache-block-size = <64>; 897 + d-cache-size = <65536>; 898 + d-cache-sets = <512>; 899 + device_type = "cpu"; 900 + mmu-type = "riscv,sv48"; 901 + next-level-cache = <&l2_cache6>; 902 + riscv,isa = "rv64imafdcv"; 903 + riscv,isa-base = "rv64i"; 904 + riscv,isa-extensions = "i", "m", "a", "f", "d", "c", 905 + "v", "sscofpmf", "sstc", 906 + "svinval", "svnapot", "svpbmt", 907 + "zawrs", "zba", "zbb", "zbc", 908 + "zbs", "zca", "zcb", "zcd", 909 + "zfa", "zfbfmin", "zfh", "zfhmin", 910 + "zicbom", "zicbop", "zicboz", 911 + "zicntr", "zicond","zicsr", "zifencei", 912 + "zihintntl", "zihintpause", "zihpm", 913 + "zvfbfmin", "zvfbfwma", "zvfh", 914 + "zvfhmin"; 915 + riscv,cbom-block-size = <64>; 916 + riscv,cboz-block-size = <64>; 917 + 918 + cpu25_intc: interrupt-controller { 919 + compatible = "riscv,cpu-intc"; 920 + interrupt-controller; 921 + #interrupt-cells = <1>; 922 + }; 923 + }; 924 + 925 + cpu26: cpu@26 { 926 + compatible = "thead,c920", "riscv"; 927 + reg = <26>; 928 + i-cache-block-size = <64>; 929 + i-cache-size = <65536>; 930 + i-cache-sets = <512>; 931 + d-cache-block-size = <64>; 932 + d-cache-size = <65536>; 933 + d-cache-sets = <512>; 934 + device_type = "cpu"; 935 + mmu-type = "riscv,sv48"; 936 + next-level-cache = <&l2_cache6>; 937 + riscv,isa = "rv64imafdcv"; 938 + riscv,isa-base = "rv64i"; 939 + riscv,isa-extensions = "i", "m", "a", "f", "d", "c", 940 + "v", "sscofpmf", "sstc", 941 + "svinval", "svnapot", "svpbmt", 942 + "zawrs", "zba", "zbb", "zbc", 943 + "zbs", "zca", "zcb", "zcd", 944 + "zfa", "zfbfmin", "zfh", "zfhmin", 945 + "zicbom", "zicbop", "zicboz", 946 + "zicntr", "zicond","zicsr", "zifencei", 947 + "zihintntl", "zihintpause", "zihpm", 948 + "zvfbfmin", "zvfbfwma", "zvfh", 949 + "zvfhmin"; 950 + riscv,cbom-block-size = <64>; 951 + riscv,cboz-block-size = <64>; 952 + 953 + cpu26_intc: interrupt-controller { 954 + compatible = "riscv,cpu-intc"; 955 + interrupt-controller; 956 + #interrupt-cells = <1>; 957 + }; 958 + }; 959 + 960 + cpu27: cpu@27 { 961 + compatible = "thead,c920", "riscv"; 962 + reg = <27>; 963 + i-cache-block-size = <64>; 964 + i-cache-size = <65536>; 965 + i-cache-sets = <512>; 966 + d-cache-block-size = <64>; 967 + d-cache-size = <65536>; 968 + d-cache-sets = <512>; 969 + device_type = "cpu"; 970 + mmu-type = "riscv,sv48"; 971 + next-level-cache = <&l2_cache6>; 972 + riscv,isa = "rv64imafdcv"; 973 + riscv,isa-base = "rv64i"; 974 + riscv,isa-extensions = "i", "m", "a", "f", "d", "c", 975 + "v", "sscofpmf", "sstc", 976 + "svinval", "svnapot", "svpbmt", 977 + "zawrs", "zba", "zbb", "zbc", 978 + "zbs", "zca", "zcb", "zcd", 979 + "zfa", "zfbfmin", "zfh", "zfhmin", 980 + "zicbom", "zicbop", "zicboz", 981 + "zicntr", "zicond","zicsr", "zifencei", 982 + "zihintntl", "zihintpause", "zihpm", 983 + "zvfbfmin", "zvfbfwma", "zvfh", 984 + "zvfhmin"; 985 + riscv,cbom-block-size = <64>; 986 + riscv,cboz-block-size = <64>; 987 + 988 + cpu27_intc: interrupt-controller { 989 + compatible = "riscv,cpu-intc"; 990 + interrupt-controller; 991 + #interrupt-cells = <1>; 992 + }; 993 + }; 994 + 995 + cpu28: cpu@28 { 996 + compatible = "thead,c920", "riscv"; 997 + reg = <28>; 998 + i-cache-block-size = <64>; 999 + i-cache-size = <65536>; 1000 + i-cache-sets = <512>; 1001 + d-cache-block-size = <64>; 1002 + d-cache-size = <65536>; 1003 + d-cache-sets = <512>; 1004 + device_type = "cpu"; 1005 + mmu-type = "riscv,sv48"; 1006 + next-level-cache = <&l2_cache7>; 1007 + riscv,isa = "rv64imafdcv"; 1008 + riscv,isa-base = "rv64i"; 1009 + riscv,isa-extensions = "i", "m", "a", "f", "d", "c", 1010 + "v", "sscofpmf", "sstc", 1011 + "svinval", "svnapot", "svpbmt", 1012 + "zawrs", "zba", "zbb", "zbc", 1013 + "zbs", "zca", "zcb", "zcd", 1014 + "zfa", "zfbfmin", "zfh", "zfhmin", 1015 + "zicbom", "zicbop", "zicboz", 1016 + "zicntr", "zicond","zicsr", "zifencei", 1017 + "zihintntl", "zihintpause", "zihpm", 1018 + "zvfbfmin", "zvfbfwma", "zvfh", 1019 + "zvfhmin"; 1020 + riscv,cbom-block-size = <64>; 1021 + riscv,cboz-block-size = <64>; 1022 + 1023 + cpu28_intc: interrupt-controller { 1024 + compatible = "riscv,cpu-intc"; 1025 + interrupt-controller; 1026 + #interrupt-cells = <1>; 1027 + }; 1028 + }; 1029 + 1030 + cpu29: cpu@29 { 1031 + compatible = "thead,c920", "riscv"; 1032 + reg = <29>; 1033 + i-cache-block-size = <64>; 1034 + i-cache-size = <65536>; 1035 + i-cache-sets = <512>; 1036 + d-cache-block-size = <64>; 1037 + d-cache-size = <65536>; 1038 + d-cache-sets = <512>; 1039 + device_type = "cpu"; 1040 + mmu-type = "riscv,sv48"; 1041 + next-level-cache = <&l2_cache7>; 1042 + riscv,isa = "rv64imafdcv"; 1043 + riscv,isa-base = "rv64i"; 1044 + riscv,isa-extensions = "i", "m", "a", "f", "d", "c", 1045 + "v", "sscofpmf", "sstc", 1046 + "svinval", "svnapot", "svpbmt", 1047 + "zawrs", "zba", "zbb", "zbc", 1048 + "zbs", "zca", "zcb", "zcd", 1049 + "zfa", "zfbfmin", "zfh", "zfhmin", 1050 + "zicbom", "zicbop", "zicboz", 1051 + "zicntr", "zicond","zicsr", "zifencei", 1052 + "zihintntl", "zihintpause", "zihpm", 1053 + "zvfbfmin", "zvfbfwma", "zvfh", 1054 + "zvfhmin"; 1055 + riscv,cbom-block-size = <64>; 1056 + riscv,cboz-block-size = <64>; 1057 + 1058 + cpu29_intc: interrupt-controller { 1059 + compatible = "riscv,cpu-intc"; 1060 + interrupt-controller; 1061 + #interrupt-cells = <1>; 1062 + }; 1063 + }; 1064 + 1065 + cpu30: cpu@30 { 1066 + compatible = "thead,c920", "riscv"; 1067 + reg = <30>; 1068 + i-cache-block-size = <64>; 1069 + i-cache-size = <65536>; 1070 + i-cache-sets = <512>; 1071 + d-cache-block-size = <64>; 1072 + d-cache-size = <65536>; 1073 + d-cache-sets = <512>; 1074 + device_type = "cpu"; 1075 + mmu-type = "riscv,sv48"; 1076 + next-level-cache = <&l2_cache7>; 1077 + riscv,isa = "rv64imafdcv"; 1078 + riscv,isa-base = "rv64i"; 1079 + riscv,isa-extensions = "i", "m", "a", "f", "d", "c", 1080 + "v", "sscofpmf", "sstc", 1081 + "svinval", "svnapot", "svpbmt", 1082 + "zawrs", "zba", "zbb", "zbc", 1083 + "zbs", "zca", "zcb", "zcd", 1084 + "zfa", "zfbfmin", "zfh", "zfhmin", 1085 + "zicbom", "zicbop", "zicboz", 1086 + "zicntr", "zicond","zicsr", "zifencei", 1087 + "zihintntl", "zihintpause", "zihpm", 1088 + "zvfbfmin", "zvfbfwma", "zvfh", 1089 + "zvfhmin"; 1090 + riscv,cbom-block-size = <64>; 1091 + riscv,cboz-block-size = <64>; 1092 + 1093 + cpu30_intc: interrupt-controller { 1094 + compatible = "riscv,cpu-intc"; 1095 + interrupt-controller; 1096 + #interrupt-cells = <1>; 1097 + }; 1098 + }; 1099 + 1100 + cpu31: cpu@31 { 1101 + compatible = "thead,c920", "riscv"; 1102 + reg = <31>; 1103 + i-cache-block-size = <64>; 1104 + i-cache-size = <65536>; 1105 + i-cache-sets = <512>; 1106 + d-cache-block-size = <64>; 1107 + d-cache-size = <65536>; 1108 + d-cache-sets = <512>; 1109 + device_type = "cpu"; 1110 + mmu-type = "riscv,sv48"; 1111 + next-level-cache = <&l2_cache7>; 1112 + riscv,isa = "rv64imafdcv"; 1113 + riscv,isa-base = "rv64i"; 1114 + riscv,isa-extensions = "i", "m", "a", "f", "d", "c", 1115 + "v", "sscofpmf", "sstc", 1116 + "svinval", "svnapot", "svpbmt", 1117 + "zawrs", "zba", "zbb", "zbc", 1118 + "zbs", "zca", "zcb", "zcd", 1119 + "zfa", "zfbfmin", "zfh", "zfhmin", 1120 + "zicbom", "zicbop", "zicboz", 1121 + "zicntr", "zicond","zicsr", "zifencei", 1122 + "zihintntl", "zihintpause", "zihpm", 1123 + "zvfbfmin", "zvfbfwma", "zvfh", 1124 + "zvfhmin"; 1125 + riscv,cbom-block-size = <64>; 1126 + riscv,cboz-block-size = <64>; 1127 + 1128 + cpu31_intc: interrupt-controller { 1129 + compatible = "riscv,cpu-intc"; 1130 + interrupt-controller; 1131 + #interrupt-cells = <1>; 1132 + }; 1133 + }; 1134 + 1135 + cpu32: cpu@32 { 1136 + compatible = "thead,c920", "riscv"; 1137 + reg = <32>; 1138 + i-cache-block-size = <64>; 1139 + i-cache-size = <65536>; 1140 + i-cache-sets = <512>; 1141 + d-cache-block-size = <64>; 1142 + d-cache-size = <65536>; 1143 + d-cache-sets = <512>; 1144 + device_type = "cpu"; 1145 + mmu-type = "riscv,sv48"; 1146 + next-level-cache = <&l2_cache8>; 1147 + riscv,isa = "rv64imafdcv"; 1148 + riscv,isa-base = "rv64i"; 1149 + riscv,isa-extensions = "i", "m", "a", "f", "d", "c", 1150 + "v", "sscofpmf", "sstc", 1151 + "svinval", "svnapot", "svpbmt", 1152 + "zawrs", "zba", "zbb", "zbc", 1153 + "zbs", "zca", "zcb", "zcd", 1154 + "zfa", "zfbfmin", "zfh", "zfhmin", 1155 + "zicbom", "zicbop", "zicboz", 1156 + "zicntr", "zicond","zicsr", "zifencei", 1157 + "zihintntl", "zihintpause", "zihpm", 1158 + "zvfbfmin", "zvfbfwma", "zvfh", 1159 + "zvfhmin"; 1160 + riscv,cbom-block-size = <64>; 1161 + riscv,cboz-block-size = <64>; 1162 + 1163 + cpu32_intc: interrupt-controller { 1164 + compatible = "riscv,cpu-intc"; 1165 + interrupt-controller; 1166 + #interrupt-cells = <1>; 1167 + }; 1168 + }; 1169 + 1170 + cpu33: cpu@33 { 1171 + compatible = "thead,c920", "riscv"; 1172 + reg = <33>; 1173 + i-cache-block-size = <64>; 1174 + i-cache-size = <65536>; 1175 + i-cache-sets = <512>; 1176 + d-cache-block-size = <64>; 1177 + d-cache-size = <65536>; 1178 + d-cache-sets = <512>; 1179 + device_type = "cpu"; 1180 + mmu-type = "riscv,sv48"; 1181 + next-level-cache = <&l2_cache8>; 1182 + riscv,isa = "rv64imafdcv"; 1183 + riscv,isa-base = "rv64i"; 1184 + riscv,isa-extensions = "i", "m", "a", "f", "d", "c", 1185 + "v", "sscofpmf", "sstc", 1186 + "svinval", "svnapot", "svpbmt", 1187 + "zawrs", "zba", "zbb", "zbc", 1188 + "zbs", "zca", "zcb", "zcd", 1189 + "zfa", "zfbfmin", "zfh", "zfhmin", 1190 + "zicbom", "zicbop", "zicboz", 1191 + "zicntr", "zicond","zicsr", "zifencei", 1192 + "zihintntl", "zihintpause", "zihpm", 1193 + "zvfbfmin", "zvfbfwma", "zvfh", 1194 + "zvfhmin"; 1195 + riscv,cbom-block-size = <64>; 1196 + riscv,cboz-block-size = <64>; 1197 + 1198 + cpu33_intc: interrupt-controller { 1199 + compatible = "riscv,cpu-intc"; 1200 + interrupt-controller; 1201 + #interrupt-cells = <1>; 1202 + }; 1203 + }; 1204 + 1205 + cpu34: cpu@34 { 1206 + compatible = "thead,c920", "riscv"; 1207 + reg = <34>; 1208 + i-cache-block-size = <64>; 1209 + i-cache-size = <65536>; 1210 + i-cache-sets = <512>; 1211 + d-cache-block-size = <64>; 1212 + d-cache-size = <65536>; 1213 + d-cache-sets = <512>; 1214 + device_type = "cpu"; 1215 + mmu-type = "riscv,sv48"; 1216 + next-level-cache = <&l2_cache8>; 1217 + riscv,isa = "rv64imafdcv"; 1218 + riscv,isa-base = "rv64i"; 1219 + riscv,isa-extensions = "i", "m", "a", "f", "d", "c", 1220 + "v", "sscofpmf", "sstc", 1221 + "svinval", "svnapot", "svpbmt", 1222 + "zawrs", "zba", "zbb", "zbc", 1223 + "zbs", "zca", "zcb", "zcd", 1224 + "zfa", "zfbfmin", "zfh", "zfhmin", 1225 + "zicbom", "zicbop", "zicboz", 1226 + "zicntr", "zicond","zicsr", "zifencei", 1227 + "zihintntl", "zihintpause", "zihpm", 1228 + "zvfbfmin", "zvfbfwma", "zvfh", 1229 + "zvfhmin"; 1230 + riscv,cbom-block-size = <64>; 1231 + riscv,cboz-block-size = <64>; 1232 + 1233 + cpu34_intc: interrupt-controller { 1234 + compatible = "riscv,cpu-intc"; 1235 + interrupt-controller; 1236 + #interrupt-cells = <1>; 1237 + }; 1238 + }; 1239 + 1240 + cpu35: cpu@35 { 1241 + compatible = "thead,c920", "riscv"; 1242 + reg = <35>; 1243 + i-cache-block-size = <64>; 1244 + i-cache-size = <65536>; 1245 + i-cache-sets = <512>; 1246 + d-cache-block-size = <64>; 1247 + d-cache-size = <65536>; 1248 + d-cache-sets = <512>; 1249 + device_type = "cpu"; 1250 + mmu-type = "riscv,sv48"; 1251 + next-level-cache = <&l2_cache8>; 1252 + riscv,isa = "rv64imafdcv"; 1253 + riscv,isa-base = "rv64i"; 1254 + riscv,isa-extensions = "i", "m", "a", "f", "d", "c", 1255 + "v", "sscofpmf", "sstc", 1256 + "svinval", "svnapot", "svpbmt", 1257 + "zawrs", "zba", "zbb", "zbc", 1258 + "zbs", "zca", "zcb", "zcd", 1259 + "zfa", "zfbfmin", "zfh", "zfhmin", 1260 + "zicbom", "zicbop", "zicboz", 1261 + "zicntr", "zicond","zicsr", "zifencei", 1262 + "zihintntl", "zihintpause", "zihpm", 1263 + "zvfbfmin", "zvfbfwma", "zvfh", 1264 + "zvfhmin"; 1265 + riscv,cbom-block-size = <64>; 1266 + riscv,cboz-block-size = <64>; 1267 + 1268 + cpu35_intc: interrupt-controller { 1269 + compatible = "riscv,cpu-intc"; 1270 + interrupt-controller; 1271 + #interrupt-cells = <1>; 1272 + }; 1273 + }; 1274 + 1275 + cpu36: cpu@36 { 1276 + compatible = "thead,c920", "riscv"; 1277 + reg = <36>; 1278 + i-cache-block-size = <64>; 1279 + i-cache-size = <65536>; 1280 + i-cache-sets = <512>; 1281 + d-cache-block-size = <64>; 1282 + d-cache-size = <65536>; 1283 + d-cache-sets = <512>; 1284 + device_type = "cpu"; 1285 + mmu-type = "riscv,sv48"; 1286 + next-level-cache = <&l2_cache9>; 1287 + riscv,isa = "rv64imafdcv"; 1288 + riscv,isa-base = "rv64i"; 1289 + riscv,isa-extensions = "i", "m", "a", "f", "d", "c", 1290 + "v", "sscofpmf", "sstc", 1291 + "svinval", "svnapot", "svpbmt", 1292 + "zawrs", "zba", "zbb", "zbc", 1293 + "zbs", "zca", "zcb", "zcd", 1294 + "zfa", "zfbfmin", "zfh", "zfhmin", 1295 + "zicbom", "zicbop", "zicboz", 1296 + "zicntr", "zicond","zicsr", "zifencei", 1297 + "zihintntl", "zihintpause", "zihpm", 1298 + "zvfbfmin", "zvfbfwma", "zvfh", 1299 + "zvfhmin"; 1300 + riscv,cbom-block-size = <64>; 1301 + riscv,cboz-block-size = <64>; 1302 + 1303 + cpu36_intc: interrupt-controller { 1304 + compatible = "riscv,cpu-intc"; 1305 + interrupt-controller; 1306 + #interrupt-cells = <1>; 1307 + }; 1308 + }; 1309 + 1310 + cpu37: cpu@37 { 1311 + compatible = "thead,c920", "riscv"; 1312 + reg = <37>; 1313 + i-cache-block-size = <64>; 1314 + i-cache-size = <65536>; 1315 + i-cache-sets = <512>; 1316 + d-cache-block-size = <64>; 1317 + d-cache-size = <65536>; 1318 + d-cache-sets = <512>; 1319 + device_type = "cpu"; 1320 + mmu-type = "riscv,sv48"; 1321 + next-level-cache = <&l2_cache9>; 1322 + riscv,isa = "rv64imafdcv"; 1323 + riscv,isa-base = "rv64i"; 1324 + riscv,isa-extensions = "i", "m", "a", "f", "d", "c", 1325 + "v", "sscofpmf", "sstc", 1326 + "svinval", "svnapot", "svpbmt", 1327 + "zawrs", "zba", "zbb", "zbc", 1328 + "zbs", "zca", "zcb", "zcd", 1329 + "zfa", "zfbfmin", "zfh", "zfhmin", 1330 + "zicbom", "zicbop", "zicboz", 1331 + "zicntr", "zicond","zicsr", "zifencei", 1332 + "zihintntl", "zihintpause", "zihpm", 1333 + "zvfbfmin", "zvfbfwma", "zvfh", 1334 + "zvfhmin"; 1335 + riscv,cbom-block-size = <64>; 1336 + riscv,cboz-block-size = <64>; 1337 + 1338 + cpu37_intc: interrupt-controller { 1339 + compatible = "riscv,cpu-intc"; 1340 + interrupt-controller; 1341 + #interrupt-cells = <1>; 1342 + }; 1343 + }; 1344 + 1345 + cpu38: cpu@38 { 1346 + compatible = "thead,c920", "riscv"; 1347 + reg = <38>; 1348 + i-cache-block-size = <64>; 1349 + i-cache-size = <65536>; 1350 + i-cache-sets = <512>; 1351 + d-cache-block-size = <64>; 1352 + d-cache-size = <65536>; 1353 + d-cache-sets = <512>; 1354 + device_type = "cpu"; 1355 + mmu-type = "riscv,sv48"; 1356 + next-level-cache = <&l2_cache9>; 1357 + riscv,isa = "rv64imafdcv"; 1358 + riscv,isa-base = "rv64i"; 1359 + riscv,isa-extensions = "i", "m", "a", "f", "d", "c", 1360 + "v", "sscofpmf", "sstc", 1361 + "svinval", "svnapot", "svpbmt", 1362 + "zawrs", "zba", "zbb", "zbc", 1363 + "zbs", "zca", "zcb", "zcd", 1364 + "zfa", "zfbfmin", "zfh", "zfhmin", 1365 + "zicbom", "zicbop", "zicboz", 1366 + "zicntr", "zicond","zicsr", "zifencei", 1367 + "zihintntl", "zihintpause", "zihpm", 1368 + "zvfbfmin", "zvfbfwma", "zvfh", 1369 + "zvfhmin"; 1370 + riscv,cbom-block-size = <64>; 1371 + riscv,cboz-block-size = <64>; 1372 + 1373 + cpu38_intc: interrupt-controller { 1374 + compatible = "riscv,cpu-intc"; 1375 + interrupt-controller; 1376 + #interrupt-cells = <1>; 1377 + }; 1378 + }; 1379 + 1380 + cpu39: cpu@39 { 1381 + compatible = "thead,c920", "riscv"; 1382 + reg = <39>; 1383 + i-cache-block-size = <64>; 1384 + i-cache-size = <65536>; 1385 + i-cache-sets = <512>; 1386 + d-cache-block-size = <64>; 1387 + d-cache-size = <65536>; 1388 + d-cache-sets = <512>; 1389 + device_type = "cpu"; 1390 + mmu-type = "riscv,sv48"; 1391 + next-level-cache = <&l2_cache9>; 1392 + riscv,isa = "rv64imafdcv"; 1393 + riscv,isa-base = "rv64i"; 1394 + riscv,isa-extensions = "i", "m", "a", "f", "d", "c", 1395 + "v", "sscofpmf", "sstc", 1396 + "svinval", "svnapot", "svpbmt", 1397 + "zawrs", "zba", "zbb", "zbc", 1398 + "zbs", "zca", "zcb", "zcd", 1399 + "zfa", "zfbfmin", "zfh", "zfhmin", 1400 + "zicbom", "zicbop", "zicboz", 1401 + "zicntr", "zicond","zicsr", "zifencei", 1402 + "zihintntl", "zihintpause", "zihpm", 1403 + "zvfbfmin", "zvfbfwma", "zvfh", 1404 + "zvfhmin"; 1405 + riscv,cbom-block-size = <64>; 1406 + riscv,cboz-block-size = <64>; 1407 + 1408 + cpu39_intc: interrupt-controller { 1409 + compatible = "riscv,cpu-intc"; 1410 + interrupt-controller; 1411 + #interrupt-cells = <1>; 1412 + }; 1413 + }; 1414 + 1415 + cpu40: cpu@40 { 1416 + compatible = "thead,c920", "riscv"; 1417 + reg = <40>; 1418 + i-cache-block-size = <64>; 1419 + i-cache-size = <65536>; 1420 + i-cache-sets = <512>; 1421 + d-cache-block-size = <64>; 1422 + d-cache-size = <65536>; 1423 + d-cache-sets = <512>; 1424 + device_type = "cpu"; 1425 + mmu-type = "riscv,sv48"; 1426 + next-level-cache = <&l2_cache10>; 1427 + riscv,isa = "rv64imafdcv"; 1428 + riscv,isa-base = "rv64i"; 1429 + riscv,isa-extensions = "i", "m", "a", "f", "d", "c", 1430 + "v", "sscofpmf", "sstc", 1431 + "svinval", "svnapot", "svpbmt", 1432 + "zawrs", "zba", "zbb", "zbc", 1433 + "zbs", "zca", "zcb", "zcd", 1434 + "zfa", "zfbfmin", "zfh", "zfhmin", 1435 + "zicbom", "zicbop", "zicboz", 1436 + "zicntr", "zicond","zicsr", "zifencei", 1437 + "zihintntl", "zihintpause", "zihpm", 1438 + "zvfbfmin", "zvfbfwma", "zvfh", 1439 + "zvfhmin"; 1440 + riscv,cbom-block-size = <64>; 1441 + riscv,cboz-block-size = <64>; 1442 + 1443 + cpu40_intc: interrupt-controller { 1444 + compatible = "riscv,cpu-intc"; 1445 + interrupt-controller; 1446 + #interrupt-cells = <1>; 1447 + }; 1448 + }; 1449 + 1450 + cpu41: cpu@41 { 1451 + compatible = "thead,c920", "riscv"; 1452 + reg = <41>; 1453 + i-cache-block-size = <64>; 1454 + i-cache-size = <65536>; 1455 + i-cache-sets = <512>; 1456 + d-cache-block-size = <64>; 1457 + d-cache-size = <65536>; 1458 + d-cache-sets = <512>; 1459 + device_type = "cpu"; 1460 + mmu-type = "riscv,sv48"; 1461 + next-level-cache = <&l2_cache10>; 1462 + riscv,isa = "rv64imafdcv"; 1463 + riscv,isa-base = "rv64i"; 1464 + riscv,isa-extensions = "i", "m", "a", "f", "d", "c", 1465 + "v", "sscofpmf", "sstc", 1466 + "svinval", "svnapot", "svpbmt", 1467 + "zawrs", "zba", "zbb", "zbc", 1468 + "zbs", "zca", "zcb", "zcd", 1469 + "zfa", "zfbfmin", "zfh", "zfhmin", 1470 + "zicbom", "zicbop", "zicboz", 1471 + "zicntr", "zicond","zicsr", "zifencei", 1472 + "zihintntl", "zihintpause", "zihpm", 1473 + "zvfbfmin", "zvfbfwma", "zvfh", 1474 + "zvfhmin"; 1475 + riscv,cbom-block-size = <64>; 1476 + riscv,cboz-block-size = <64>; 1477 + 1478 + cpu41_intc: interrupt-controller { 1479 + compatible = "riscv,cpu-intc"; 1480 + interrupt-controller; 1481 + #interrupt-cells = <1>; 1482 + }; 1483 + }; 1484 + 1485 + cpu42: cpu@42 { 1486 + compatible = "thead,c920", "riscv"; 1487 + reg = <42>; 1488 + i-cache-block-size = <64>; 1489 + i-cache-size = <65536>; 1490 + i-cache-sets = <512>; 1491 + d-cache-block-size = <64>; 1492 + d-cache-size = <65536>; 1493 + d-cache-sets = <512>; 1494 + device_type = "cpu"; 1495 + mmu-type = "riscv,sv48"; 1496 + next-level-cache = <&l2_cache10>; 1497 + riscv,isa = "rv64imafdcv"; 1498 + riscv,isa-base = "rv64i"; 1499 + riscv,isa-extensions = "i", "m", "a", "f", "d", "c", 1500 + "v", "sscofpmf", "sstc", 1501 + "svinval", "svnapot", "svpbmt", 1502 + "zawrs", "zba", "zbb", "zbc", 1503 + "zbs", "zca", "zcb", "zcd", 1504 + "zfa", "zfbfmin", "zfh", "zfhmin", 1505 + "zicbom", "zicbop", "zicboz", 1506 + "zicntr", "zicond","zicsr", "zifencei", 1507 + "zihintntl", "zihintpause", "zihpm", 1508 + "zvfbfmin", "zvfbfwma", "zvfh", 1509 + "zvfhmin"; 1510 + riscv,cbom-block-size = <64>; 1511 + riscv,cboz-block-size = <64>; 1512 + 1513 + cpu42_intc: interrupt-controller { 1514 + compatible = "riscv,cpu-intc"; 1515 + interrupt-controller; 1516 + #interrupt-cells = <1>; 1517 + }; 1518 + }; 1519 + 1520 + cpu43: cpu@43 { 1521 + compatible = "thead,c920", "riscv"; 1522 + reg = <43>; 1523 + i-cache-block-size = <64>; 1524 + i-cache-size = <65536>; 1525 + i-cache-sets = <512>; 1526 + d-cache-block-size = <64>; 1527 + d-cache-size = <65536>; 1528 + d-cache-sets = <512>; 1529 + device_type = "cpu"; 1530 + mmu-type = "riscv,sv48"; 1531 + next-level-cache = <&l2_cache10>; 1532 + riscv,isa = "rv64imafdcv"; 1533 + riscv,isa-base = "rv64i"; 1534 + riscv,isa-extensions = "i", "m", "a", "f", "d", "c", 1535 + "v", "sscofpmf", "sstc", 1536 + "svinval", "svnapot", "svpbmt", 1537 + "zawrs", "zba", "zbb", "zbc", 1538 + "zbs", "zca", "zcb", "zcd", 1539 + "zfa", "zfbfmin", "zfh", "zfhmin", 1540 + "zicbom", "zicbop", "zicboz", 1541 + "zicntr", "zicond","zicsr", "zifencei", 1542 + "zihintntl", "zihintpause", "zihpm", 1543 + "zvfbfmin", "zvfbfwma", "zvfh", 1544 + "zvfhmin"; 1545 + riscv,cbom-block-size = <64>; 1546 + riscv,cboz-block-size = <64>; 1547 + 1548 + cpu43_intc: interrupt-controller { 1549 + compatible = "riscv,cpu-intc"; 1550 + interrupt-controller; 1551 + #interrupt-cells = <1>; 1552 + }; 1553 + }; 1554 + 1555 + cpu44: cpu@44 { 1556 + compatible = "thead,c920", "riscv"; 1557 + reg = <44>; 1558 + i-cache-block-size = <64>; 1559 + i-cache-size = <65536>; 1560 + i-cache-sets = <512>; 1561 + d-cache-block-size = <64>; 1562 + d-cache-size = <65536>; 1563 + d-cache-sets = <512>; 1564 + device_type = "cpu"; 1565 + mmu-type = "riscv,sv48"; 1566 + next-level-cache = <&l2_cache11>; 1567 + riscv,isa = "rv64imafdcv"; 1568 + riscv,isa-base = "rv64i"; 1569 + riscv,isa-extensions = "i", "m", "a", "f", "d", "c", 1570 + "v", "sscofpmf", "sstc", 1571 + "svinval", "svnapot", "svpbmt", 1572 + "zawrs", "zba", "zbb", "zbc", 1573 + "zbs", "zca", "zcb", "zcd", 1574 + "zfa", "zfbfmin", "zfh", "zfhmin", 1575 + "zicbom", "zicbop", "zicboz", 1576 + "zicntr", "zicond","zicsr", "zifencei", 1577 + "zihintntl", "zihintpause", "zihpm", 1578 + "zvfbfmin", "zvfbfwma", "zvfh", 1579 + "zvfhmin"; 1580 + riscv,cbom-block-size = <64>; 1581 + riscv,cboz-block-size = <64>; 1582 + 1583 + cpu44_intc: interrupt-controller { 1584 + compatible = "riscv,cpu-intc"; 1585 + interrupt-controller; 1586 + #interrupt-cells = <1>; 1587 + }; 1588 + }; 1589 + 1590 + cpu45: cpu@45 { 1591 + compatible = "thead,c920", "riscv"; 1592 + reg = <45>; 1593 + i-cache-block-size = <64>; 1594 + i-cache-size = <65536>; 1595 + i-cache-sets = <512>; 1596 + d-cache-block-size = <64>; 1597 + d-cache-size = <65536>; 1598 + d-cache-sets = <512>; 1599 + device_type = "cpu"; 1600 + mmu-type = "riscv,sv48"; 1601 + next-level-cache = <&l2_cache11>; 1602 + riscv,isa = "rv64imafdcv"; 1603 + riscv,isa-base = "rv64i"; 1604 + riscv,isa-extensions = "i", "m", "a", "f", "d", "c", 1605 + "v", "sscofpmf", "sstc", 1606 + "svinval", "svnapot", "svpbmt", 1607 + "zawrs", "zba", "zbb", "zbc", 1608 + "zbs", "zca", "zcb", "zcd", 1609 + "zfa", "zfbfmin", "zfh", "zfhmin", 1610 + "zicbom", "zicbop", "zicboz", 1611 + "zicntr", "zicond","zicsr", "zifencei", 1612 + "zihintntl", "zihintpause", "zihpm", 1613 + "zvfbfmin", "zvfbfwma", "zvfh", 1614 + "zvfhmin"; 1615 + riscv,cbom-block-size = <64>; 1616 + riscv,cboz-block-size = <64>; 1617 + 1618 + cpu45_intc: interrupt-controller { 1619 + compatible = "riscv,cpu-intc"; 1620 + interrupt-controller; 1621 + #interrupt-cells = <1>; 1622 + }; 1623 + }; 1624 + 1625 + cpu46: cpu@46 { 1626 + compatible = "thead,c920", "riscv"; 1627 + reg = <46>; 1628 + i-cache-block-size = <64>; 1629 + i-cache-size = <65536>; 1630 + i-cache-sets = <512>; 1631 + d-cache-block-size = <64>; 1632 + d-cache-size = <65536>; 1633 + d-cache-sets = <512>; 1634 + device_type = "cpu"; 1635 + mmu-type = "riscv,sv48"; 1636 + next-level-cache = <&l2_cache11>; 1637 + riscv,isa = "rv64imafdcv"; 1638 + riscv,isa-base = "rv64i"; 1639 + riscv,isa-extensions = "i", "m", "a", "f", "d", "c", 1640 + "v", "sscofpmf", "sstc", 1641 + "svinval", "svnapot", "svpbmt", 1642 + "zawrs", "zba", "zbb", "zbc", 1643 + "zbs", "zca", "zcb", "zcd", 1644 + "zfa", "zfbfmin", "zfh", "zfhmin", 1645 + "zicbom", "zicbop", "zicboz", 1646 + "zicntr", "zicond","zicsr", "zifencei", 1647 + "zihintntl", "zihintpause", "zihpm", 1648 + "zvfbfmin", "zvfbfwma", "zvfh", 1649 + "zvfhmin"; 1650 + riscv,cbom-block-size = <64>; 1651 + riscv,cboz-block-size = <64>; 1652 + 1653 + cpu46_intc: interrupt-controller { 1654 + compatible = "riscv,cpu-intc"; 1655 + interrupt-controller; 1656 + #interrupt-cells = <1>; 1657 + }; 1658 + }; 1659 + 1660 + cpu47: cpu@47 { 1661 + compatible = "thead,c920", "riscv"; 1662 + reg = <47>; 1663 + i-cache-block-size = <64>; 1664 + i-cache-size = <65536>; 1665 + i-cache-sets = <512>; 1666 + d-cache-block-size = <64>; 1667 + d-cache-size = <65536>; 1668 + d-cache-sets = <512>; 1669 + device_type = "cpu"; 1670 + mmu-type = "riscv,sv48"; 1671 + next-level-cache = <&l2_cache11>; 1672 + riscv,isa = "rv64imafdcv"; 1673 + riscv,isa-base = "rv64i"; 1674 + riscv,isa-extensions = "i", "m", "a", "f", "d", "c", 1675 + "v", "sscofpmf", "sstc", 1676 + "svinval", "svnapot", "svpbmt", 1677 + "zawrs", "zba", "zbb", "zbc", 1678 + "zbs", "zca", "zcb", "zcd", 1679 + "zfa", "zfbfmin", "zfh", "zfhmin", 1680 + "zicbom", "zicbop", "zicboz", 1681 + "zicntr", "zicond","zicsr", "zifencei", 1682 + "zihintntl", "zihintpause", "zihpm", 1683 + "zvfbfmin", "zvfbfwma", "zvfh", 1684 + "zvfhmin"; 1685 + riscv,cbom-block-size = <64>; 1686 + riscv,cboz-block-size = <64>; 1687 + 1688 + cpu47_intc: interrupt-controller { 1689 + compatible = "riscv,cpu-intc"; 1690 + interrupt-controller; 1691 + #interrupt-cells = <1>; 1692 + }; 1693 + }; 1694 + 1695 + cpu48: cpu@48 { 1696 + compatible = "thead,c920", "riscv"; 1697 + reg = <48>; 1698 + i-cache-block-size = <64>; 1699 + i-cache-size = <65536>; 1700 + i-cache-sets = <512>; 1701 + d-cache-block-size = <64>; 1702 + d-cache-size = <65536>; 1703 + d-cache-sets = <512>; 1704 + device_type = "cpu"; 1705 + mmu-type = "riscv,sv48"; 1706 + next-level-cache = <&l2_cache12>; 1707 + riscv,isa = "rv64imafdcv"; 1708 + riscv,isa-base = "rv64i"; 1709 + riscv,isa-extensions = "i", "m", "a", "f", "d", "c", 1710 + "v", "sscofpmf", "sstc", 1711 + "svinval", "svnapot", "svpbmt", 1712 + "zawrs", "zba", "zbb", "zbc", 1713 + "zbs", "zca", "zcb", "zcd", 1714 + "zfa", "zfbfmin", "zfh", "zfhmin", 1715 + "zicbom", "zicbop", "zicboz", 1716 + "zicntr", "zicond","zicsr", "zifencei", 1717 + "zihintntl", "zihintpause", "zihpm", 1718 + "zvfbfmin", "zvfbfwma", "zvfh", 1719 + "zvfhmin"; 1720 + riscv,cbom-block-size = <64>; 1721 + riscv,cboz-block-size = <64>; 1722 + 1723 + cpu48_intc: interrupt-controller { 1724 + compatible = "riscv,cpu-intc"; 1725 + interrupt-controller; 1726 + #interrupt-cells = <1>; 1727 + }; 1728 + }; 1729 + 1730 + cpu49: cpu@49 { 1731 + compatible = "thead,c920", "riscv"; 1732 + reg = <49>; 1733 + i-cache-block-size = <64>; 1734 + i-cache-size = <65536>; 1735 + i-cache-sets = <512>; 1736 + d-cache-block-size = <64>; 1737 + d-cache-size = <65536>; 1738 + d-cache-sets = <512>; 1739 + device_type = "cpu"; 1740 + mmu-type = "riscv,sv48"; 1741 + next-level-cache = <&l2_cache12>; 1742 + riscv,isa = "rv64imafdcv"; 1743 + riscv,isa-base = "rv64i"; 1744 + riscv,isa-extensions = "i", "m", "a", "f", "d", "c", 1745 + "v", "sscofpmf", "sstc", 1746 + "svinval", "svnapot", "svpbmt", 1747 + "zawrs", "zba", "zbb", "zbc", 1748 + "zbs", "zca", "zcb", "zcd", 1749 + "zfa", "zfbfmin", "zfh", "zfhmin", 1750 + "zicbom", "zicbop", "zicboz", 1751 + "zicntr", "zicond","zicsr", "zifencei", 1752 + "zihintntl", "zihintpause", "zihpm", 1753 + "zvfbfmin", "zvfbfwma", "zvfh", 1754 + "zvfhmin"; 1755 + riscv,cbom-block-size = <64>; 1756 + riscv,cboz-block-size = <64>; 1757 + 1758 + cpu49_intc: interrupt-controller { 1759 + compatible = "riscv,cpu-intc"; 1760 + interrupt-controller; 1761 + #interrupt-cells = <1>; 1762 + }; 1763 + }; 1764 + 1765 + cpu50: cpu@50 { 1766 + compatible = "thead,c920", "riscv"; 1767 + reg = <50>; 1768 + i-cache-block-size = <64>; 1769 + i-cache-size = <65536>; 1770 + i-cache-sets = <512>; 1771 + d-cache-block-size = <64>; 1772 + d-cache-size = <65536>; 1773 + d-cache-sets = <512>; 1774 + device_type = "cpu"; 1775 + mmu-type = "riscv,sv48"; 1776 + next-level-cache = <&l2_cache12>; 1777 + riscv,isa = "rv64imafdcv"; 1778 + riscv,isa-base = "rv64i"; 1779 + riscv,isa-extensions = "i", "m", "a", "f", "d", "c", 1780 + "v", "sscofpmf", "sstc", 1781 + "svinval", "svnapot", "svpbmt", 1782 + "zawrs", "zba", "zbb", "zbc", 1783 + "zbs", "zca", "zcb", "zcd", 1784 + "zfa", "zfbfmin", "zfh", "zfhmin", 1785 + "zicbom", "zicbop", "zicboz", 1786 + "zicntr", "zicond","zicsr", "zifencei", 1787 + "zihintntl", "zihintpause", "zihpm", 1788 + "zvfbfmin", "zvfbfwma", "zvfh", 1789 + "zvfhmin"; 1790 + riscv,cbom-block-size = <64>; 1791 + riscv,cboz-block-size = <64>; 1792 + 1793 + cpu50_intc: interrupt-controller { 1794 + compatible = "riscv,cpu-intc"; 1795 + interrupt-controller; 1796 + #interrupt-cells = <1>; 1797 + }; 1798 + }; 1799 + 1800 + cpu51: cpu@51 { 1801 + compatible = "thead,c920", "riscv"; 1802 + reg = <51>; 1803 + i-cache-block-size = <64>; 1804 + i-cache-size = <65536>; 1805 + i-cache-sets = <512>; 1806 + d-cache-block-size = <64>; 1807 + d-cache-size = <65536>; 1808 + d-cache-sets = <512>; 1809 + device_type = "cpu"; 1810 + mmu-type = "riscv,sv48"; 1811 + next-level-cache = <&l2_cache12>; 1812 + riscv,isa = "rv64imafdcv"; 1813 + riscv,isa-base = "rv64i"; 1814 + riscv,isa-extensions = "i", "m", "a", "f", "d", "c", 1815 + "v", "sscofpmf", "sstc", 1816 + "svinval", "svnapot", "svpbmt", 1817 + "zawrs", "zba", "zbb", "zbc", 1818 + "zbs", "zca", "zcb", "zcd", 1819 + "zfa", "zfbfmin", "zfh", "zfhmin", 1820 + "zicbom", "zicbop", "zicboz", 1821 + "zicntr", "zicond","zicsr", "zifencei", 1822 + "zihintntl", "zihintpause", "zihpm", 1823 + "zvfbfmin", "zvfbfwma", "zvfh", 1824 + "zvfhmin"; 1825 + riscv,cbom-block-size = <64>; 1826 + riscv,cboz-block-size = <64>; 1827 + 1828 + cpu51_intc: interrupt-controller { 1829 + compatible = "riscv,cpu-intc"; 1830 + interrupt-controller; 1831 + #interrupt-cells = <1>; 1832 + }; 1833 + }; 1834 + 1835 + cpu52: cpu@52 { 1836 + compatible = "thead,c920", "riscv"; 1837 + reg = <52>; 1838 + i-cache-block-size = <64>; 1839 + i-cache-size = <65536>; 1840 + i-cache-sets = <512>; 1841 + d-cache-block-size = <64>; 1842 + d-cache-size = <65536>; 1843 + d-cache-sets = <512>; 1844 + device_type = "cpu"; 1845 + mmu-type = "riscv,sv48"; 1846 + next-level-cache = <&l2_cache13>; 1847 + riscv,isa = "rv64imafdcv"; 1848 + riscv,isa-base = "rv64i"; 1849 + riscv,isa-extensions = "i", "m", "a", "f", "d", "c", 1850 + "v", "sscofpmf", "sstc", 1851 + "svinval", "svnapot", "svpbmt", 1852 + "zawrs", "zba", "zbb", "zbc", 1853 + "zbs", "zca", "zcb", "zcd", 1854 + "zfa", "zfbfmin", "zfh", "zfhmin", 1855 + "zicbom", "zicbop", "zicboz", 1856 + "zicntr", "zicond","zicsr", "zifencei", 1857 + "zihintntl", "zihintpause", "zihpm", 1858 + "zvfbfmin", "zvfbfwma", "zvfh", 1859 + "zvfhmin"; 1860 + riscv,cbom-block-size = <64>; 1861 + riscv,cboz-block-size = <64>; 1862 + 1863 + cpu52_intc: interrupt-controller { 1864 + compatible = "riscv,cpu-intc"; 1865 + interrupt-controller; 1866 + #interrupt-cells = <1>; 1867 + }; 1868 + }; 1869 + 1870 + cpu53: cpu@53 { 1871 + compatible = "thead,c920", "riscv"; 1872 + reg = <53>; 1873 + i-cache-block-size = <64>; 1874 + i-cache-size = <65536>; 1875 + i-cache-sets = <512>; 1876 + d-cache-block-size = <64>; 1877 + d-cache-size = <65536>; 1878 + d-cache-sets = <512>; 1879 + device_type = "cpu"; 1880 + mmu-type = "riscv,sv48"; 1881 + next-level-cache = <&l2_cache13>; 1882 + riscv,isa = "rv64imafdcv"; 1883 + riscv,isa-base = "rv64i"; 1884 + riscv,isa-extensions = "i", "m", "a", "f", "d", "c", 1885 + "v", "sscofpmf", "sstc", 1886 + "svinval", "svnapot", "svpbmt", 1887 + "zawrs", "zba", "zbb", "zbc", 1888 + "zbs", "zca", "zcb", "zcd", 1889 + "zfa", "zfbfmin", "zfh", "zfhmin", 1890 + "zicbom", "zicbop", "zicboz", 1891 + "zicntr", "zicond","zicsr", "zifencei", 1892 + "zihintntl", "zihintpause", "zihpm", 1893 + "zvfbfmin", "zvfbfwma", "zvfh", 1894 + "zvfhmin"; 1895 + riscv,cbom-block-size = <64>; 1896 + riscv,cboz-block-size = <64>; 1897 + 1898 + cpu53_intc: interrupt-controller { 1899 + compatible = "riscv,cpu-intc"; 1900 + interrupt-controller; 1901 + #interrupt-cells = <1>; 1902 + }; 1903 + }; 1904 + 1905 + cpu54: cpu@54 { 1906 + compatible = "thead,c920", "riscv"; 1907 + reg = <54>; 1908 + i-cache-block-size = <64>; 1909 + i-cache-size = <65536>; 1910 + i-cache-sets = <512>; 1911 + d-cache-block-size = <64>; 1912 + d-cache-size = <65536>; 1913 + d-cache-sets = <512>; 1914 + device_type = "cpu"; 1915 + mmu-type = "riscv,sv48"; 1916 + next-level-cache = <&l2_cache13>; 1917 + riscv,isa = "rv64imafdcv"; 1918 + riscv,isa-base = "rv64i"; 1919 + riscv,isa-extensions = "i", "m", "a", "f", "d", "c", 1920 + "v", "sscofpmf", "sstc", 1921 + "svinval", "svnapot", "svpbmt", 1922 + "zawrs", "zba", "zbb", "zbc", 1923 + "zbs", "zca", "zcb", "zcd", 1924 + "zfa", "zfbfmin", "zfh", "zfhmin", 1925 + "zicbom", "zicbop", "zicboz", 1926 + "zicntr", "zicond","zicsr", "zifencei", 1927 + "zihintntl", "zihintpause", "zihpm", 1928 + "zvfbfmin", "zvfbfwma", "zvfh", 1929 + "zvfhmin"; 1930 + riscv,cbom-block-size = <64>; 1931 + riscv,cboz-block-size = <64>; 1932 + 1933 + cpu54_intc: interrupt-controller { 1934 + compatible = "riscv,cpu-intc"; 1935 + interrupt-controller; 1936 + #interrupt-cells = <1>; 1937 + }; 1938 + }; 1939 + 1940 + cpu55: cpu@55 { 1941 + compatible = "thead,c920", "riscv"; 1942 + reg = <55>; 1943 + i-cache-block-size = <64>; 1944 + i-cache-size = <65536>; 1945 + i-cache-sets = <512>; 1946 + d-cache-block-size = <64>; 1947 + d-cache-size = <65536>; 1948 + d-cache-sets = <512>; 1949 + device_type = "cpu"; 1950 + mmu-type = "riscv,sv48"; 1951 + next-level-cache = <&l2_cache13>; 1952 + riscv,isa = "rv64imafdcv"; 1953 + riscv,isa-base = "rv64i"; 1954 + riscv,isa-extensions = "i", "m", "a", "f", "d", "c", 1955 + "v", "sscofpmf", "sstc", 1956 + "svinval", "svnapot", "svpbmt", 1957 + "zawrs", "zba", "zbb", "zbc", 1958 + "zbs", "zca", "zcb", "zcd", 1959 + "zfa", "zfbfmin", "zfh", "zfhmin", 1960 + "zicbom", "zicbop", "zicboz", 1961 + "zicntr", "zicond","zicsr", "zifencei", 1962 + "zihintntl", "zihintpause", "zihpm", 1963 + "zvfbfmin", "zvfbfwma", "zvfh", 1964 + "zvfhmin"; 1965 + riscv,cbom-block-size = <64>; 1966 + riscv,cboz-block-size = <64>; 1967 + 1968 + cpu55_intc: interrupt-controller { 1969 + compatible = "riscv,cpu-intc"; 1970 + interrupt-controller; 1971 + #interrupt-cells = <1>; 1972 + }; 1973 + }; 1974 + 1975 + cpu56: cpu@56 { 1976 + compatible = "thead,c920", "riscv"; 1977 + reg = <56>; 1978 + i-cache-block-size = <64>; 1979 + i-cache-size = <65536>; 1980 + i-cache-sets = <512>; 1981 + d-cache-block-size = <64>; 1982 + d-cache-size = <65536>; 1983 + d-cache-sets = <512>; 1984 + device_type = "cpu"; 1985 + mmu-type = "riscv,sv48"; 1986 + next-level-cache = <&l2_cache14>; 1987 + riscv,isa = "rv64imafdcv"; 1988 + riscv,isa-base = "rv64i"; 1989 + riscv,isa-extensions = "i", "m", "a", "f", "d", "c", 1990 + "v", "sscofpmf", "sstc", 1991 + "svinval", "svnapot", "svpbmt", 1992 + "zawrs", "zba", "zbb", "zbc", 1993 + "zbs", "zca", "zcb", "zcd", 1994 + "zfa", "zfbfmin", "zfh", "zfhmin", 1995 + "zicbom", "zicbop", "zicboz", 1996 + "zicntr", "zicond","zicsr", "zifencei", 1997 + "zihintntl", "zihintpause", "zihpm", 1998 + "zvfbfmin", "zvfbfwma", "zvfh", 1999 + "zvfhmin"; 2000 + riscv,cbom-block-size = <64>; 2001 + riscv,cboz-block-size = <64>; 2002 + 2003 + cpu56_intc: interrupt-controller { 2004 + compatible = "riscv,cpu-intc"; 2005 + interrupt-controller; 2006 + #interrupt-cells = <1>; 2007 + }; 2008 + }; 2009 + 2010 + cpu57: cpu@57 { 2011 + compatible = "thead,c920", "riscv"; 2012 + reg = <57>; 2013 + i-cache-block-size = <64>; 2014 + i-cache-size = <65536>; 2015 + i-cache-sets = <512>; 2016 + d-cache-block-size = <64>; 2017 + d-cache-size = <65536>; 2018 + d-cache-sets = <512>; 2019 + device_type = "cpu"; 2020 + mmu-type = "riscv,sv48"; 2021 + next-level-cache = <&l2_cache14>; 2022 + riscv,isa = "rv64imafdcv"; 2023 + riscv,isa-base = "rv64i"; 2024 + riscv,isa-extensions = "i", "m", "a", "f", "d", "c", 2025 + "v", "sscofpmf", "sstc", 2026 + "svinval", "svnapot", "svpbmt", 2027 + "zawrs", "zba", "zbb", "zbc", 2028 + "zbs", "zca", "zcb", "zcd", 2029 + "zfa", "zfbfmin", "zfh", "zfhmin", 2030 + "zicbom", "zicbop", "zicboz", 2031 + "zicntr", "zicond","zicsr", "zifencei", 2032 + "zihintntl", "zihintpause", "zihpm", 2033 + "zvfbfmin", "zvfbfwma", "zvfh", 2034 + "zvfhmin"; 2035 + riscv,cbom-block-size = <64>; 2036 + riscv,cboz-block-size = <64>; 2037 + 2038 + cpu57_intc: interrupt-controller { 2039 + compatible = "riscv,cpu-intc"; 2040 + interrupt-controller; 2041 + #interrupt-cells = <1>; 2042 + }; 2043 + }; 2044 + 2045 + cpu58: cpu@58 { 2046 + compatible = "thead,c920", "riscv"; 2047 + reg = <58>; 2048 + i-cache-block-size = <64>; 2049 + i-cache-size = <65536>; 2050 + i-cache-sets = <512>; 2051 + d-cache-block-size = <64>; 2052 + d-cache-size = <65536>; 2053 + d-cache-sets = <512>; 2054 + device_type = "cpu"; 2055 + mmu-type = "riscv,sv48"; 2056 + next-level-cache = <&l2_cache14>; 2057 + riscv,isa = "rv64imafdcv"; 2058 + riscv,isa-base = "rv64i"; 2059 + riscv,isa-extensions = "i", "m", "a", "f", "d", "c", 2060 + "v", "sscofpmf", "sstc", 2061 + "svinval", "svnapot", "svpbmt", 2062 + "zawrs", "zba", "zbb", "zbc", 2063 + "zbs", "zca", "zcb", "zcd", 2064 + "zfa", "zfbfmin", "zfh", "zfhmin", 2065 + "zicbom", "zicbop", "zicboz", 2066 + "zicntr", "zicond","zicsr", "zifencei", 2067 + "zihintntl", "zihintpause", "zihpm", 2068 + "zvfbfmin", "zvfbfwma", "zvfh", 2069 + "zvfhmin"; 2070 + riscv,cbom-block-size = <64>; 2071 + riscv,cboz-block-size = <64>; 2072 + 2073 + cpu58_intc: interrupt-controller { 2074 + compatible = "riscv,cpu-intc"; 2075 + interrupt-controller; 2076 + #interrupt-cells = <1>; 2077 + }; 2078 + }; 2079 + 2080 + cpu59: cpu@59 { 2081 + compatible = "thead,c920", "riscv"; 2082 + reg = <59>; 2083 + i-cache-block-size = <64>; 2084 + i-cache-size = <65536>; 2085 + i-cache-sets = <512>; 2086 + d-cache-block-size = <64>; 2087 + d-cache-size = <65536>; 2088 + d-cache-sets = <512>; 2089 + device_type = "cpu"; 2090 + mmu-type = "riscv,sv48"; 2091 + next-level-cache = <&l2_cache14>; 2092 + riscv,isa = "rv64imafdcv"; 2093 + riscv,isa-base = "rv64i"; 2094 + riscv,isa-extensions = "i", "m", "a", "f", "d", "c", 2095 + "v", "sscofpmf", "sstc", 2096 + "svinval", "svnapot", "svpbmt", 2097 + "zawrs", "zba", "zbb", "zbc", 2098 + "zbs", "zca", "zcb", "zcd", 2099 + "zfa", "zfbfmin", "zfh", "zfhmin", 2100 + "zicbom", "zicbop", "zicboz", 2101 + "zicntr", "zicond","zicsr", "zifencei", 2102 + "zihintntl", "zihintpause", "zihpm", 2103 + "zvfbfmin", "zvfbfwma", "zvfh", 2104 + "zvfhmin"; 2105 + riscv,cbom-block-size = <64>; 2106 + riscv,cboz-block-size = <64>; 2107 + 2108 + cpu59_intc: interrupt-controller { 2109 + compatible = "riscv,cpu-intc"; 2110 + interrupt-controller; 2111 + #interrupt-cells = <1>; 2112 + }; 2113 + }; 2114 + 2115 + cpu60: cpu@60 { 2116 + compatible = "thead,c920", "riscv"; 2117 + reg = <60>; 2118 + i-cache-block-size = <64>; 2119 + i-cache-size = <65536>; 2120 + i-cache-sets = <512>; 2121 + d-cache-block-size = <64>; 2122 + d-cache-size = <65536>; 2123 + d-cache-sets = <512>; 2124 + device_type = "cpu"; 2125 + mmu-type = "riscv,sv48"; 2126 + next-level-cache = <&l2_cache15>; 2127 + riscv,isa = "rv64imafdcv"; 2128 + riscv,isa-base = "rv64i"; 2129 + riscv,isa-extensions = "i", "m", "a", "f", "d", "c", 2130 + "v", "sscofpmf", "sstc", 2131 + "svinval", "svnapot", "svpbmt", 2132 + "zawrs", "zba", "zbb", "zbc", 2133 + "zbs", "zca", "zcb", "zcd", 2134 + "zfa", "zfbfmin", "zfh", "zfhmin", 2135 + "zicbom", "zicbop", "zicboz", 2136 + "zicntr", "zicond","zicsr", "zifencei", 2137 + "zihintntl", "zihintpause", "zihpm", 2138 + "zvfbfmin", "zvfbfwma", "zvfh", 2139 + "zvfhmin"; 2140 + riscv,cbom-block-size = <64>; 2141 + riscv,cboz-block-size = <64>; 2142 + 2143 + cpu60_intc: interrupt-controller { 2144 + compatible = "riscv,cpu-intc"; 2145 + interrupt-controller; 2146 + #interrupt-cells = <1>; 2147 + }; 2148 + }; 2149 + 2150 + cpu61: cpu@61 { 2151 + compatible = "thead,c920", "riscv"; 2152 + reg = <61>; 2153 + i-cache-block-size = <64>; 2154 + i-cache-size = <65536>; 2155 + i-cache-sets = <512>; 2156 + d-cache-block-size = <64>; 2157 + d-cache-size = <65536>; 2158 + d-cache-sets = <512>; 2159 + device_type = "cpu"; 2160 + mmu-type = "riscv,sv48"; 2161 + next-level-cache = <&l2_cache15>; 2162 + riscv,isa = "rv64imafdcv"; 2163 + riscv,isa-base = "rv64i"; 2164 + riscv,isa-extensions = "i", "m", "a", "f", "d", "c", 2165 + "v", "sscofpmf", "sstc", 2166 + "svinval", "svnapot", "svpbmt", 2167 + "zawrs", "zba", "zbb", "zbc", 2168 + "zbs", "zca", "zcb", "zcd", 2169 + "zfa", "zfbfmin", "zfh", "zfhmin", 2170 + "zicbom", "zicbop", "zicboz", 2171 + "zicntr", "zicond","zicsr", "zifencei", 2172 + "zihintntl", "zihintpause", "zihpm", 2173 + "zvfbfmin", "zvfbfwma", "zvfh", 2174 + "zvfhmin"; 2175 + riscv,cbom-block-size = <64>; 2176 + riscv,cboz-block-size = <64>; 2177 + 2178 + cpu61_intc: interrupt-controller { 2179 + compatible = "riscv,cpu-intc"; 2180 + interrupt-controller; 2181 + #interrupt-cells = <1>; 2182 + }; 2183 + }; 2184 + 2185 + cpu62: cpu@62 { 2186 + compatible = "thead,c920", "riscv"; 2187 + reg = <62>; 2188 + i-cache-block-size = <64>; 2189 + i-cache-size = <65536>; 2190 + i-cache-sets = <512>; 2191 + d-cache-block-size = <64>; 2192 + d-cache-size = <65536>; 2193 + d-cache-sets = <512>; 2194 + device_type = "cpu"; 2195 + mmu-type = "riscv,sv48"; 2196 + next-level-cache = <&l2_cache15>; 2197 + riscv,isa = "rv64imafdcv"; 2198 + riscv,isa-base = "rv64i"; 2199 + riscv,isa-extensions = "i", "m", "a", "f", "d", "c", 2200 + "v", "sscofpmf", "sstc", 2201 + "svinval", "svnapot", "svpbmt", 2202 + "zawrs", "zba", "zbb", "zbc", 2203 + "zbs", "zca", "zcb", "zcd", 2204 + "zfa", "zfbfmin", "zfh", "zfhmin", 2205 + "zicbom", "zicbop", "zicboz", 2206 + "zicntr", "zicond","zicsr", "zifencei", 2207 + "zihintntl", "zihintpause", "zihpm", 2208 + "zvfbfmin", "zvfbfwma", "zvfh", 2209 + "zvfhmin"; 2210 + riscv,cbom-block-size = <64>; 2211 + riscv,cboz-block-size = <64>; 2212 + 2213 + cpu62_intc: interrupt-controller { 2214 + compatible = "riscv,cpu-intc"; 2215 + interrupt-controller; 2216 + #interrupt-cells = <1>; 2217 + }; 2218 + }; 2219 + 2220 + cpu63: cpu@63 { 2221 + compatible = "thead,c920", "riscv"; 2222 + reg = <63>; 2223 + i-cache-block-size = <64>; 2224 + i-cache-size = <65536>; 2225 + i-cache-sets = <512>; 2226 + d-cache-block-size = <64>; 2227 + d-cache-size = <65536>; 2228 + d-cache-sets = <512>; 2229 + device_type = "cpu"; 2230 + mmu-type = "riscv,sv48"; 2231 + next-level-cache = <&l2_cache15>; 2232 + riscv,isa = "rv64imafdcv"; 2233 + riscv,isa-base = "rv64i"; 2234 + riscv,isa-extensions = "i", "m", "a", "f", "d", "c", 2235 + "v", "sscofpmf", "sstc", 2236 + "svinval", "svnapot", "svpbmt", 2237 + "zawrs", "zba", "zbb", "zbc", 2238 + "zbs", "zca", "zcb", "zcd", 2239 + "zfa", "zfbfmin", "zfh", "zfhmin", 2240 + "zicbom", "zicbop", "zicboz", 2241 + "zicntr", "zicond","zicsr", "zifencei", 2242 + "zihintntl", "zihintpause", "zihpm", 2243 + "zvfbfmin", "zvfbfwma", "zvfh", 2244 + "zvfhmin"; 2245 + riscv,cbom-block-size = <64>; 2246 + riscv,cboz-block-size = <64>; 2247 + 2248 + cpu63_intc: interrupt-controller { 2249 + compatible = "riscv,cpu-intc"; 2250 + interrupt-controller; 2251 + #interrupt-cells = <1>; 2252 + }; 2253 + }; 2254 + 2255 + cpu-map { 2256 + socket0 { 2257 + cluster0 { 2258 + core0 { 2259 + cpu = <&cpu0>; 2260 + }; 2261 + 2262 + core1 { 2263 + cpu = <&cpu1>; 2264 + }; 2265 + 2266 + core2 { 2267 + cpu = <&cpu2>; 2268 + }; 2269 + 2270 + core3 { 2271 + cpu = <&cpu3>; 2272 + }; 2273 + }; 2274 + 2275 + cluster1 { 2276 + core0 { 2277 + cpu = <&cpu4>; 2278 + }; 2279 + 2280 + core1 { 2281 + cpu = <&cpu5>; 2282 + }; 2283 + 2284 + core2 { 2285 + cpu = <&cpu6>; 2286 + }; 2287 + 2288 + core3 { 2289 + cpu = <&cpu7>; 2290 + }; 2291 + }; 2292 + 2293 + cluster2 { 2294 + core0 { 2295 + cpu = <&cpu8>; 2296 + }; 2297 + 2298 + core1 { 2299 + cpu = <&cpu9>; 2300 + }; 2301 + 2302 + core2 { 2303 + cpu = <&cpu10>; 2304 + }; 2305 + 2306 + core3 { 2307 + cpu = <&cpu11>; 2308 + }; 2309 + }; 2310 + 2311 + cluster3 { 2312 + core0 { 2313 + cpu = <&cpu12>; 2314 + }; 2315 + 2316 + core1 { 2317 + cpu = <&cpu13>; 2318 + }; 2319 + 2320 + core2 { 2321 + cpu = <&cpu14>; 2322 + }; 2323 + 2324 + core3 { 2325 + cpu = <&cpu15>; 2326 + }; 2327 + }; 2328 + 2329 + cluster4 { 2330 + core0 { 2331 + cpu = <&cpu16>; 2332 + }; 2333 + 2334 + core1 { 2335 + cpu = <&cpu17>; 2336 + }; 2337 + 2338 + core2 { 2339 + cpu = <&cpu18>; 2340 + }; 2341 + 2342 + core3 { 2343 + cpu = <&cpu19>; 2344 + }; 2345 + }; 2346 + 2347 + cluster5 { 2348 + core0 { 2349 + cpu = <&cpu20>; 2350 + }; 2351 + 2352 + core1 { 2353 + cpu = <&cpu21>; 2354 + }; 2355 + 2356 + core2 { 2357 + cpu = <&cpu22>; 2358 + }; 2359 + 2360 + core3 { 2361 + cpu = <&cpu23>; 2362 + }; 2363 + }; 2364 + 2365 + cluster6 { 2366 + core0 { 2367 + cpu = <&cpu24>; 2368 + }; 2369 + 2370 + core1 { 2371 + cpu = <&cpu25>; 2372 + }; 2373 + 2374 + core2 { 2375 + cpu = <&cpu26>; 2376 + }; 2377 + 2378 + core3 { 2379 + cpu = <&cpu27>; 2380 + }; 2381 + }; 2382 + 2383 + cluster7 { 2384 + core0 { 2385 + cpu = <&cpu28>; 2386 + }; 2387 + 2388 + core1 { 2389 + cpu = <&cpu29>; 2390 + }; 2391 + 2392 + core2 { 2393 + cpu = <&cpu30>; 2394 + }; 2395 + 2396 + core3 { 2397 + cpu = <&cpu31>; 2398 + }; 2399 + }; 2400 + 2401 + cluster8 { 2402 + core0 { 2403 + cpu = <&cpu32>; 2404 + }; 2405 + 2406 + core1 { 2407 + cpu = <&cpu33>; 2408 + }; 2409 + 2410 + core2 { 2411 + cpu = <&cpu34>; 2412 + }; 2413 + 2414 + core3 { 2415 + cpu = <&cpu35>; 2416 + }; 2417 + }; 2418 + 2419 + cluster9 { 2420 + core0 { 2421 + cpu = <&cpu36>; 2422 + }; 2423 + 2424 + core1 { 2425 + cpu = <&cpu37>; 2426 + }; 2427 + 2428 + core2 { 2429 + cpu = <&cpu38>; 2430 + }; 2431 + 2432 + core3 { 2433 + cpu = <&cpu39>; 2434 + }; 2435 + }; 2436 + 2437 + cluster10 { 2438 + core0 { 2439 + cpu = <&cpu40>; 2440 + }; 2441 + 2442 + core1 { 2443 + cpu = <&cpu41>; 2444 + }; 2445 + 2446 + core2 { 2447 + cpu = <&cpu42>; 2448 + }; 2449 + 2450 + core3 { 2451 + cpu = <&cpu43>; 2452 + }; 2453 + }; 2454 + 2455 + cluster11 { 2456 + core0 { 2457 + cpu = <&cpu44>; 2458 + }; 2459 + 2460 + core1 { 2461 + cpu = <&cpu45>; 2462 + }; 2463 + 2464 + core2 { 2465 + cpu = <&cpu46>; 2466 + }; 2467 + 2468 + core3 { 2469 + cpu = <&cpu47>; 2470 + }; 2471 + }; 2472 + 2473 + cluster12 { 2474 + core0 { 2475 + cpu = <&cpu48>; 2476 + }; 2477 + 2478 + core1 { 2479 + cpu = <&cpu49>; 2480 + }; 2481 + 2482 + core2 { 2483 + cpu = <&cpu50>; 2484 + }; 2485 + 2486 + core3 { 2487 + cpu = <&cpu51>; 2488 + }; 2489 + }; 2490 + 2491 + cluster13 { 2492 + core0 { 2493 + cpu = <&cpu52>; 2494 + }; 2495 + 2496 + core1 { 2497 + cpu = <&cpu53>; 2498 + }; 2499 + 2500 + core2 { 2501 + cpu = <&cpu54>; 2502 + }; 2503 + 2504 + core3 { 2505 + cpu = <&cpu55>; 2506 + }; 2507 + }; 2508 + 2509 + cluster14 { 2510 + core0 { 2511 + cpu = <&cpu56>; 2512 + }; 2513 + 2514 + core1 { 2515 + cpu = <&cpu57>; 2516 + }; 2517 + 2518 + core2 { 2519 + cpu = <&cpu58>; 2520 + }; 2521 + 2522 + core3 { 2523 + cpu = <&cpu59>; 2524 + }; 2525 + }; 2526 + 2527 + cluster15 { 2528 + core0 { 2529 + cpu = <&cpu60>; 2530 + }; 2531 + 2532 + core1 { 2533 + cpu = <&cpu61>; 2534 + }; 2535 + 2536 + core2 { 2537 + cpu = <&cpu62>; 2538 + }; 2539 + 2540 + core3 { 2541 + cpu = <&cpu63>; 2542 + }; 2543 + }; 2544 + }; 2545 + }; 2546 + 2547 + l2_cache0: cache-controller-0 { 2548 + compatible = "cache"; 2549 + cache-block-size = <64>; 2550 + cache-level = <2>; 2551 + cache-size = <2097152>; 2552 + cache-sets = <2048>; 2553 + cache-unified; 2554 + next-level-cache = <&l3_cache>; 2555 + }; 2556 + 2557 + l2_cache1: cache-controller-1 { 2558 + compatible = "cache"; 2559 + cache-block-size = <64>; 2560 + cache-level = <2>; 2561 + cache-size = <2097152>; 2562 + cache-sets = <2048>; 2563 + cache-unified; 2564 + next-level-cache = <&l3_cache>; 2565 + }; 2566 + 2567 + l2_cache2: cache-controller-2 { 2568 + compatible = "cache"; 2569 + cache-block-size = <64>; 2570 + cache-level = <2>; 2571 + cache-size = <2097152>; 2572 + cache-sets = <2048>; 2573 + cache-unified; 2574 + next-level-cache = <&l3_cache>; 2575 + }; 2576 + 2577 + l2_cache3: cache-controller-3 { 2578 + compatible = "cache"; 2579 + cache-block-size = <64>; 2580 + cache-level = <2>; 2581 + cache-size = <2097152>; 2582 + cache-sets = <2048>; 2583 + cache-unified; 2584 + next-level-cache = <&l3_cache>; 2585 + }; 2586 + 2587 + l2_cache4: cache-controller-4 { 2588 + compatible = "cache"; 2589 + cache-block-size = <64>; 2590 + cache-level = <2>; 2591 + cache-size = <2097152>; 2592 + cache-sets = <2048>; 2593 + cache-unified; 2594 + next-level-cache = <&l3_cache>; 2595 + }; 2596 + 2597 + l2_cache5: cache-controller-5 { 2598 + compatible = "cache"; 2599 + cache-block-size = <64>; 2600 + cache-level = <2>; 2601 + cache-size = <2097152>; 2602 + cache-sets = <2048>; 2603 + cache-unified; 2604 + next-level-cache = <&l3_cache>; 2605 + }; 2606 + 2607 + l2_cache6: cache-controller-6 { 2608 + compatible = "cache"; 2609 + cache-block-size = <64>; 2610 + cache-level = <2>; 2611 + cache-size = <2097152>; 2612 + cache-sets = <2048>; 2613 + cache-unified; 2614 + next-level-cache = <&l3_cache>; 2615 + }; 2616 + 2617 + l2_cache7: cache-controller-7 { 2618 + compatible = "cache"; 2619 + cache-block-size = <64>; 2620 + cache-level = <2>; 2621 + cache-size = <2097152>; 2622 + cache-sets = <2048>; 2623 + cache-unified; 2624 + next-level-cache = <&l3_cache>; 2625 + }; 2626 + 2627 + l2_cache8: cache-controller-8 { 2628 + compatible = "cache"; 2629 + cache-block-size = <64>; 2630 + cache-level = <2>; 2631 + cache-size = <2097152>; 2632 + cache-sets = <2048>; 2633 + cache-unified; 2634 + next-level-cache = <&l3_cache>; 2635 + }; 2636 + 2637 + l2_cache9: cache-controller-9 { 2638 + compatible = "cache"; 2639 + cache-block-size = <64>; 2640 + cache-level = <2>; 2641 + cache-size = <2097152>; 2642 + cache-sets = <2048>; 2643 + cache-unified; 2644 + next-level-cache = <&l3_cache>; 2645 + }; 2646 + 2647 + l2_cache10: cache-controller-10 { 2648 + compatible = "cache"; 2649 + cache-block-size = <64>; 2650 + cache-level = <2>; 2651 + cache-size = <2097152>; 2652 + cache-sets = <2048>; 2653 + cache-unified; 2654 + next-level-cache = <&l3_cache>; 2655 + }; 2656 + 2657 + l2_cache11: cache-controller-11 { 2658 + compatible = "cache"; 2659 + cache-block-size = <64>; 2660 + cache-level = <2>; 2661 + cache-size = <2097152>; 2662 + cache-sets = <2048>; 2663 + cache-unified; 2664 + next-level-cache = <&l3_cache>; 2665 + }; 2666 + 2667 + l2_cache12: cache-controller-12 { 2668 + compatible = "cache"; 2669 + cache-block-size = <64>; 2670 + cache-level = <2>; 2671 + cache-size = <2097152>; 2672 + cache-sets = <2048>; 2673 + cache-unified; 2674 + next-level-cache = <&l3_cache>; 2675 + }; 2676 + 2677 + l2_cache13: cache-controller-13 { 2678 + compatible = "cache"; 2679 + cache-block-size = <64>; 2680 + cache-level = <2>; 2681 + cache-size = <2097152>; 2682 + cache-sets = <2048>; 2683 + cache-unified; 2684 + next-level-cache = <&l3_cache>; 2685 + }; 2686 + 2687 + l2_cache14: cache-controller-14 { 2688 + compatible = "cache"; 2689 + cache-block-size = <64>; 2690 + cache-level = <2>; 2691 + cache-size = <2097152>; 2692 + cache-sets = <2048>; 2693 + cache-unified; 2694 + next-level-cache = <&l3_cache>; 2695 + }; 2696 + 2697 + l2_cache15: cache-controller-15 { 2698 + compatible = "cache"; 2699 + cache-block-size = <64>; 2700 + cache-level = <2>; 2701 + cache-size = <2097152>; 2702 + cache-sets = <2048>; 2703 + cache-unified; 2704 + next-level-cache = <&l3_cache>; 2705 + }; 2706 + 2707 + l3_cache: cache-controller-16 { 2708 + compatible = "cache"; 2709 + cache-block-size = <64>; 2710 + cache-level = <3>; 2711 + cache-size = <67108864>; 2712 + cache-sets = <4096>; 2713 + cache-unified; 2714 + }; 2715 + }; 2716 + 2717 + soc { 2718 + intc: interrupt-controller@6d40000000 { 2719 + compatible = "sophgo,sg2044-plic", "thead,c900-plic"; 2720 + #address-cells = <0>; 2721 + #interrupt-cells = <2>; 2722 + reg = <0x6d 0x40000000 0x0 0x4000000>; 2723 + interrupt-controller; 2724 + interrupts-extended = 2725 + <&cpu0_intc 11>, <&cpu0_intc 9>, 2726 + <&cpu1_intc 11>, <&cpu1_intc 9>, 2727 + <&cpu2_intc 11>, <&cpu2_intc 9>, 2728 + <&cpu3_intc 11>, <&cpu3_intc 9>, 2729 + <&cpu4_intc 11>, <&cpu4_intc 9>, 2730 + <&cpu5_intc 11>, <&cpu5_intc 9>, 2731 + <&cpu6_intc 11>, <&cpu6_intc 9>, 2732 + <&cpu7_intc 11>, <&cpu7_intc 9>, 2733 + <&cpu8_intc 11>, <&cpu8_intc 9>, 2734 + <&cpu9_intc 11>, <&cpu9_intc 9>, 2735 + <&cpu10_intc 11>, <&cpu10_intc 9>, 2736 + <&cpu11_intc 11>, <&cpu11_intc 9>, 2737 + <&cpu12_intc 11>, <&cpu12_intc 9>, 2738 + <&cpu13_intc 11>, <&cpu13_intc 9>, 2739 + <&cpu14_intc 11>, <&cpu14_intc 9>, 2740 + <&cpu15_intc 11>, <&cpu15_intc 9>, 2741 + <&cpu16_intc 11>, <&cpu16_intc 9>, 2742 + <&cpu17_intc 11>, <&cpu17_intc 9>, 2743 + <&cpu18_intc 11>, <&cpu18_intc 9>, 2744 + <&cpu19_intc 11>, <&cpu19_intc 9>, 2745 + <&cpu20_intc 11>, <&cpu20_intc 9>, 2746 + <&cpu21_intc 11>, <&cpu21_intc 9>, 2747 + <&cpu22_intc 11>, <&cpu22_intc 9>, 2748 + <&cpu23_intc 11>, <&cpu23_intc 9>, 2749 + <&cpu24_intc 11>, <&cpu24_intc 9>, 2750 + <&cpu25_intc 11>, <&cpu25_intc 9>, 2751 + <&cpu26_intc 11>, <&cpu26_intc 9>, 2752 + <&cpu27_intc 11>, <&cpu27_intc 9>, 2753 + <&cpu28_intc 11>, <&cpu28_intc 9>, 2754 + <&cpu29_intc 11>, <&cpu29_intc 9>, 2755 + <&cpu30_intc 11>, <&cpu30_intc 9>, 2756 + <&cpu31_intc 11>, <&cpu31_intc 9>, 2757 + <&cpu32_intc 11>, <&cpu32_intc 9>, 2758 + <&cpu33_intc 11>, <&cpu33_intc 9>, 2759 + <&cpu34_intc 11>, <&cpu34_intc 9>, 2760 + <&cpu35_intc 11>, <&cpu35_intc 9>, 2761 + <&cpu36_intc 11>, <&cpu36_intc 9>, 2762 + <&cpu37_intc 11>, <&cpu37_intc 9>, 2763 + <&cpu38_intc 11>, <&cpu38_intc 9>, 2764 + <&cpu39_intc 11>, <&cpu39_intc 9>, 2765 + <&cpu40_intc 11>, <&cpu40_intc 9>, 2766 + <&cpu41_intc 11>, <&cpu41_intc 9>, 2767 + <&cpu42_intc 11>, <&cpu42_intc 9>, 2768 + <&cpu43_intc 11>, <&cpu43_intc 9>, 2769 + <&cpu44_intc 11>, <&cpu44_intc 9>, 2770 + <&cpu45_intc 11>, <&cpu45_intc 9>, 2771 + <&cpu46_intc 11>, <&cpu46_intc 9>, 2772 + <&cpu47_intc 11>, <&cpu47_intc 9>, 2773 + <&cpu48_intc 11>, <&cpu48_intc 9>, 2774 + <&cpu49_intc 11>, <&cpu49_intc 9>, 2775 + <&cpu50_intc 11>, <&cpu50_intc 9>, 2776 + <&cpu51_intc 11>, <&cpu51_intc 9>, 2777 + <&cpu52_intc 11>, <&cpu52_intc 9>, 2778 + <&cpu53_intc 11>, <&cpu53_intc 9>, 2779 + <&cpu54_intc 11>, <&cpu54_intc 9>, 2780 + <&cpu55_intc 11>, <&cpu55_intc 9>, 2781 + <&cpu56_intc 11>, <&cpu56_intc 9>, 2782 + <&cpu57_intc 11>, <&cpu57_intc 9>, 2783 + <&cpu58_intc 11>, <&cpu58_intc 9>, 2784 + <&cpu59_intc 11>, <&cpu59_intc 9>, 2785 + <&cpu60_intc 11>, <&cpu60_intc 9>, 2786 + <&cpu61_intc 11>, <&cpu61_intc 9>, 2787 + <&cpu62_intc 11>, <&cpu62_intc 9>, 2788 + <&cpu63_intc 11>, <&cpu63_intc 9>; 2789 + riscv,ndev = <863>; 2790 + }; 2791 + 2792 + aclint_mswi: interrupt-controller@6d44000000 { 2793 + compatible = "sophgo,sg2044-aclint-mswi", "thead,c900-aclint-mswi"; 2794 + reg = <0x6d 0x44000000 0x0 0x4000>; 2795 + interrupts-extended = <&cpu0_intc 3>, 2796 + <&cpu1_intc 3>, 2797 + <&cpu2_intc 3>, 2798 + <&cpu3_intc 3>, 2799 + <&cpu4_intc 3>, 2800 + <&cpu5_intc 3>, 2801 + <&cpu6_intc 3>, 2802 + <&cpu7_intc 3>, 2803 + <&cpu8_intc 3>, 2804 + <&cpu9_intc 3>, 2805 + <&cpu10_intc 3>, 2806 + <&cpu11_intc 3>, 2807 + <&cpu12_intc 3>, 2808 + <&cpu13_intc 3>, 2809 + <&cpu14_intc 3>, 2810 + <&cpu15_intc 3>, 2811 + <&cpu16_intc 3>, 2812 + <&cpu17_intc 3>, 2813 + <&cpu18_intc 3>, 2814 + <&cpu19_intc 3>, 2815 + <&cpu20_intc 3>, 2816 + <&cpu21_intc 3>, 2817 + <&cpu22_intc 3>, 2818 + <&cpu23_intc 3>, 2819 + <&cpu24_intc 3>, 2820 + <&cpu25_intc 3>, 2821 + <&cpu26_intc 3>, 2822 + <&cpu27_intc 3>, 2823 + <&cpu28_intc 3>, 2824 + <&cpu29_intc 3>, 2825 + <&cpu30_intc 3>, 2826 + <&cpu31_intc 3>, 2827 + <&cpu32_intc 3>, 2828 + <&cpu33_intc 3>, 2829 + <&cpu34_intc 3>, 2830 + <&cpu35_intc 3>, 2831 + <&cpu36_intc 3>, 2832 + <&cpu37_intc 3>, 2833 + <&cpu38_intc 3>, 2834 + <&cpu39_intc 3>, 2835 + <&cpu40_intc 3>, 2836 + <&cpu41_intc 3>, 2837 + <&cpu42_intc 3>, 2838 + <&cpu43_intc 3>, 2839 + <&cpu44_intc 3>, 2840 + <&cpu45_intc 3>, 2841 + <&cpu46_intc 3>, 2842 + <&cpu47_intc 3>, 2843 + <&cpu48_intc 3>, 2844 + <&cpu49_intc 3>, 2845 + <&cpu50_intc 3>, 2846 + <&cpu51_intc 3>, 2847 + <&cpu52_intc 3>, 2848 + <&cpu53_intc 3>, 2849 + <&cpu54_intc 3>, 2850 + <&cpu55_intc 3>, 2851 + <&cpu56_intc 3>, 2852 + <&cpu57_intc 3>, 2853 + <&cpu58_intc 3>, 2854 + <&cpu59_intc 3>, 2855 + <&cpu60_intc 3>, 2856 + <&cpu61_intc 3>, 2857 + <&cpu62_intc 3>, 2858 + <&cpu63_intc 3>; 2859 + }; 2860 + 2861 + aclint_mtimer: timer@6d44004000 { 2862 + compatible = "sophgo,sg2044-aclint-mtimer", "thead,c900-aclint-mtimer"; 2863 + reg = <0x6d 0x44004000 0x0 0x8000>; 2864 + reg-names = "mtimecmp"; 2865 + interrupts-extended = <&cpu0_intc 7>, 2866 + <&cpu1_intc 7>, 2867 + <&cpu2_intc 7>, 2868 + <&cpu3_intc 7>, 2869 + <&cpu4_intc 7>, 2870 + <&cpu5_intc 7>, 2871 + <&cpu6_intc 7>, 2872 + <&cpu7_intc 7>, 2873 + <&cpu8_intc 7>, 2874 + <&cpu9_intc 7>, 2875 + <&cpu10_intc 7>, 2876 + <&cpu11_intc 7>, 2877 + <&cpu12_intc 7>, 2878 + <&cpu13_intc 7>, 2879 + <&cpu14_intc 7>, 2880 + <&cpu15_intc 7>, 2881 + <&cpu16_intc 7>, 2882 + <&cpu17_intc 7>, 2883 + <&cpu18_intc 7>, 2884 + <&cpu19_intc 7>, 2885 + <&cpu20_intc 7>, 2886 + <&cpu21_intc 7>, 2887 + <&cpu22_intc 7>, 2888 + <&cpu23_intc 7>, 2889 + <&cpu24_intc 7>, 2890 + <&cpu25_intc 7>, 2891 + <&cpu26_intc 7>, 2892 + <&cpu27_intc 7>, 2893 + <&cpu28_intc 7>, 2894 + <&cpu29_intc 7>, 2895 + <&cpu30_intc 7>, 2896 + <&cpu31_intc 7>, 2897 + <&cpu32_intc 7>, 2898 + <&cpu33_intc 7>, 2899 + <&cpu34_intc 7>, 2900 + <&cpu35_intc 7>, 2901 + <&cpu36_intc 7>, 2902 + <&cpu37_intc 7>, 2903 + <&cpu38_intc 7>, 2904 + <&cpu39_intc 7>, 2905 + <&cpu40_intc 7>, 2906 + <&cpu41_intc 7>, 2907 + <&cpu42_intc 7>, 2908 + <&cpu43_intc 7>, 2909 + <&cpu44_intc 7>, 2910 + <&cpu45_intc 7>, 2911 + <&cpu46_intc 7>, 2912 + <&cpu47_intc 7>, 2913 + <&cpu48_intc 7>, 2914 + <&cpu49_intc 7>, 2915 + <&cpu50_intc 7>, 2916 + <&cpu51_intc 7>, 2917 + <&cpu52_intc 7>, 2918 + <&cpu53_intc 7>, 2919 + <&cpu54_intc 7>, 2920 + <&cpu55_intc 7>, 2921 + <&cpu56_intc 7>, 2922 + <&cpu57_intc 7>, 2923 + <&cpu58_intc 7>, 2924 + <&cpu59_intc 7>, 2925 + <&cpu60_intc 7>, 2926 + <&cpu61_intc 7>, 2927 + <&cpu62_intc 7>, 2928 + <&cpu63_intc 7>; 2929 + }; 2930 + 2931 + aclint_sswi: interrupt-controller@6d4400c000 { 2932 + compatible = "sophgo,sg2044-aclint-sswi", "thead,c900-aclint-sswi"; 2933 + reg = <0x6d 0x4400c000 0x0 0x1000>; 2934 + #interrupt-cells = <0>; 2935 + interrupt-controller; 2936 + interrupts-extended = <&cpu0_intc 1>, 2937 + <&cpu1_intc 1>, 2938 + <&cpu2_intc 1>, 2939 + <&cpu3_intc 1>, 2940 + <&cpu4_intc 1>, 2941 + <&cpu5_intc 1>, 2942 + <&cpu6_intc 1>, 2943 + <&cpu7_intc 1>, 2944 + <&cpu8_intc 1>, 2945 + <&cpu9_intc 1>, 2946 + <&cpu10_intc 1>, 2947 + <&cpu11_intc 1>, 2948 + <&cpu12_intc 1>, 2949 + <&cpu13_intc 1>, 2950 + <&cpu14_intc 1>, 2951 + <&cpu15_intc 1>, 2952 + <&cpu16_intc 1>, 2953 + <&cpu17_intc 1>, 2954 + <&cpu18_intc 1>, 2955 + <&cpu19_intc 1>, 2956 + <&cpu20_intc 1>, 2957 + <&cpu21_intc 1>, 2958 + <&cpu22_intc 1>, 2959 + <&cpu23_intc 1>, 2960 + <&cpu24_intc 1>, 2961 + <&cpu25_intc 1>, 2962 + <&cpu26_intc 1>, 2963 + <&cpu27_intc 1>, 2964 + <&cpu28_intc 1>, 2965 + <&cpu29_intc 1>, 2966 + <&cpu30_intc 1>, 2967 + <&cpu31_intc 1>, 2968 + <&cpu32_intc 1>, 2969 + <&cpu33_intc 1>, 2970 + <&cpu34_intc 1>, 2971 + <&cpu35_intc 1>, 2972 + <&cpu36_intc 1>, 2973 + <&cpu37_intc 1>, 2974 + <&cpu38_intc 1>, 2975 + <&cpu39_intc 1>, 2976 + <&cpu40_intc 1>, 2977 + <&cpu41_intc 1>, 2978 + <&cpu42_intc 1>, 2979 + <&cpu43_intc 1>, 2980 + <&cpu44_intc 1>, 2981 + <&cpu45_intc 1>, 2982 + <&cpu46_intc 1>, 2983 + <&cpu47_intc 1>, 2984 + <&cpu48_intc 1>, 2985 + <&cpu49_intc 1>, 2986 + <&cpu50_intc 1>, 2987 + <&cpu51_intc 1>, 2988 + <&cpu52_intc 1>, 2989 + <&cpu53_intc 1>, 2990 + <&cpu54_intc 1>, 2991 + <&cpu55_intc 1>, 2992 + <&cpu56_intc 1>, 2993 + <&cpu57_intc 1>, 2994 + <&cpu58_intc 1>, 2995 + <&cpu59_intc 1>, 2996 + <&cpu60_intc 1>, 2997 + <&cpu61_intc 1>, 2998 + <&cpu62_intc 1>, 2999 + <&cpu63_intc 1>; 3000 + }; 3001 + }; 3002 + };
+128
arch/riscv/boot/dts/sophgo/sg2044-reset.h
··· 1 + /* SPDX-License-Identifier: GPL-2.0-only OR BSD-2-Clause */ 2 + /* 3 + * Copyright (C) 2025 Inochi Amaoto <inochiama@gmail.com> 4 + */ 5 + 6 + #ifndef _SG2044_RESET_H 7 + #define _SG2044_RESET_H 8 + 9 + #define RST_AP_SYS 0 10 + #define RST_AP_SYS_CORE0 1 11 + #define RST_AP_SYS_CORE1 2 12 + #define RST_AP_SYS_CORE2 3 13 + #define RST_AP_SYS_CORE3 4 14 + #define RST_AP_PIC 5 15 + #define RST_AP_TDT 6 16 + #define RST_RP_PIC_TDT 7 17 + #define RST_HSDMA 8 18 + #define RST_SYSDMA 9 19 + #define RST_EFUSE0 10 20 + #define RST_EFUSE1 11 21 + #define RST_RTC 12 22 + #define RST_TIMER 13 23 + #define RST_WDT 14 24 + #define RST_AHB_ROM0 15 25 + #define RST_AHB_ROM1 16 26 + #define RST_I2C0 17 27 + #define RST_I2C1 18 28 + #define RST_I2C2 19 29 + #define RST_I2C3 20 30 + #define RST_GPIO0 21 31 + #define RST_GPIO1 22 32 + #define RST_GPIO2 23 33 + #define RST_PWM 24 34 + #define RST_AXI_SRAM0 25 35 + #define RST_AXI_SRAM1 26 36 + #define RST_SPIFMC0 27 37 + #define RST_SPIFMC1 28 38 + #define RST_MAILBOX 29 39 + #define RST_ETH0 30 40 + #define RST_EMMC 31 41 + #define RST_SD 32 42 + #define RST_UART0 33 43 + #define RST_UART1 34 44 + #define RST_UART2 35 45 + #define RST_UART3 36 46 + #define RST_SPI0 37 47 + #define RST_SPI1 38 48 + #define RST_MTLI 39 49 + #define RST_DBG_I2C 40 50 + #define RST_C2C0 41 51 + #define RST_C2C1 42 52 + #define RST_C2C2 43 53 + #define RST_C2C3 44 54 + #define RST_CXP 45 55 + #define RST_DDR0 46 56 + #define RST_DDR1 47 57 + #define RST_DDR2 48 58 + #define RST_DDR3 49 59 + #define RST_DDR4 50 60 + #define RST_DDR5 51 61 + #define RST_DDR6 52 62 + #define RST_DDR7 53 63 + #define RST_DDR8 54 64 + #define RST_DDR9 55 65 + #define RST_DDR10 56 66 + #define RST_DDR11 57 67 + #define RST_DDR12 58 68 + #define RST_DDR13 59 69 + #define RST_DDR14 60 70 + #define RST_DDR15 61 71 + #define RST_BAR 62 72 + #define RST_K2K 63 73 + #define RST_CC_SYS_X1Y1 64 74 + #define RST_CC_SYS_X1Y2 65 75 + #define RST_CC_SYS_X1Y3 66 76 + #define RST_CC_SYS_X1Y4 67 77 + #define RST_CC_SYS_X0Y1 68 78 + #define RST_CC_SYS_X0Y2 69 79 + #define RST_CC_SYS_X0Y3 70 80 + #define RST_CC_SYS_X0Y4 71 81 + #define RST_SC_X1Y1 80 82 + #define RST_SC_X1Y2 81 83 + #define RST_SC_X1Y3 82 84 + #define RST_SC_X1Y4 83 85 + #define RST_SC_X0Y1 84 86 + #define RST_SC_X0Y2 85 87 + #define RST_SC_X0Y3 86 88 + #define RST_SC_X0Y4 87 89 + #define RST_RP_CLUSTER_X1Y1_S0 160 90 + #define RST_RP_CLUSTER_X1Y1_S1 161 91 + #define RST_RP_CLUSTER_X1Y2_S0 162 92 + #define RST_RP_CLUSTER_X1Y2_S1 163 93 + #define RST_RP_CLUSTER_X1Y3_S0 164 94 + #define RST_RP_CLUSTER_X1Y3_S1 165 95 + #define RST_RP_CLUSTER_X1Y4_S0 166 96 + #define RST_RP_CLUSTER_X1Y4_S1 167 97 + #define RST_RP_CLUSTER_X0Y1_W0 168 98 + #define RST_RP_CLUSTER_X0Y1_W1 169 99 + #define RST_RP_CLUSTER_X0Y2_W0 170 100 + #define RST_RP_CLUSTER_X0Y2_W1 171 101 + #define RST_RP_CLUSTER_X0Y3_W0 172 102 + #define RST_RP_CLUSTER_X0Y3_W1 173 103 + #define RST_RP_CLUSTER_X0Y4_W0 174 104 + #define RST_RP_CLUSTER_X0Y4_W1 175 105 + #define RST_TPSYS_X1Y1 180 106 + #define RST_TPSYS_X1Y2 181 107 + #define RST_TPSYS_X1Y3 182 108 + #define RST_TPSYS_X1Y4 183 109 + #define RST_TPSYS_X0Y1 184 110 + #define RST_TPSYS_X0Y2 185 111 + #define RST_TPSYS_X0Y3 186 112 + #define RST_TPSYS_X0Y4 187 113 + #define RST_SPACC 188 114 + #define RST_PKA 189 115 + #define RST_SE_TRNG 190 116 + #define RST_SE_DBG 191 117 + #define RST_SE_FAB_FW 192 118 + #define RST_SE_CTRL 193 119 + #define RST_MAILBOX0 194 120 + #define RST_MAILBOX1 195 121 + #define RST_MAILBOX2 196 122 + #define RST_MAILBOX3 197 123 + #define RST_INTC0 198 124 + #define RST_INTC1 199 125 + #define RST_INTC2 200 126 + #define RST_INTC3 201 127 + 128 + #endif /* _DT_BINDINGS_SG2044_RESET_H */
+32
arch/riscv/boot/dts/sophgo/sg2044-sophgo-srd3-10.dts
··· 1 + // SPDX-License-Identifier: (GPL-2.0 OR MIT) 2 + /* 3 + * Copyright (C) 2025 Inochi Amaoto <inochiama@gmail.com> 4 + */ 5 + 6 + /dts-v1/; 7 + 8 + #include "sg2044.dtsi" 9 + 10 + / { 11 + model = "Sophgo SG2044 SRD3-10"; 12 + compatible = "sophgo,srd3-10", "sophgo,sg2044"; 13 + 14 + aliases { 15 + serial0 = &uart0; 16 + serial1 = &uart1; 17 + serial2 = &uart2; 18 + serial3 = &uart3; 19 + }; 20 + 21 + chosen { 22 + stdout-path = "serial1:115200n8"; 23 + }; 24 + }; 25 + 26 + &osc { 27 + clock-frequency = <25000000>; 28 + }; 29 + 30 + &uart1 { 31 + status = "okay"; 32 + };
+86
arch/riscv/boot/dts/sophgo/sg2044.dtsi
··· 1 + // SPDX-License-Identifier: (GPL-2.0 OR MIT) 2 + /* 3 + * Copyright (C) 2025 Inochi Amaoto <inochiama@gmail.com> 4 + */ 5 + 6 + #include <dt-bindings/interrupt-controller/irq.h> 7 + 8 + #include "sg2044-cpus.dtsi" 9 + #include "sg2044-reset.h" 10 + 11 + / { 12 + compatible = "sophgo,sg2044"; 13 + 14 + memory@80000000 { 15 + device_type = "memory"; 16 + reg = <0x00000000 0x80000000 0x00000010 0x00000000>; 17 + }; 18 + 19 + osc: oscillator { 20 + compatible = "fixed-clock"; 21 + clock-output-names = "osc"; 22 + #clock-cells = <0>; 23 + }; 24 + 25 + soc { 26 + compatible = "simple-bus"; 27 + #address-cells = <2>; 28 + #size-cells = <2>; 29 + ranges; 30 + 31 + uart0: serial@7030000000 { 32 + compatible = "sophgo,sg2044-uart", "snps,dw-apb-uart"; 33 + reg = <0x70 0x30000000 0x0 0x1000>; 34 + clock-frequency = <500000000>; 35 + interrupt-parent = <&intc>; 36 + interrupts = <41 IRQ_TYPE_LEVEL_HIGH>; 37 + reg-shift = <2>; 38 + reg-io-width = <4>; 39 + resets = <&rst RST_UART0>; 40 + status = "disabled"; 41 + }; 42 + 43 + uart1: serial@7030001000 { 44 + compatible = "sophgo,sg2044-uart", "snps,dw-apb-uart"; 45 + reg = <0x70 0x30001000 0x0 0x1000>; 46 + clock-frequency = <500000000>; 47 + interrupt-parent = <&intc>; 48 + interrupts = <42 IRQ_TYPE_LEVEL_HIGH>; 49 + reg-shift = <2>; 50 + reg-io-width = <4>; 51 + resets = <&rst RST_UART1>; 52 + status = "disabled"; 53 + }; 54 + 55 + uart2: serial@7030002000 { 56 + compatible = "sophgo,sg2044-uart", "snps,dw-apb-uart"; 57 + reg = <0x70 0x30002000 0x0 0x1000>; 58 + clock-frequency = <500000000>; 59 + interrupt-parent = <&intc>; 60 + interrupts = <43 IRQ_TYPE_LEVEL_HIGH>; 61 + reg-shift = <2>; 62 + reg-io-width = <4>; 63 + resets = <&rst RST_UART2>; 64 + status = "disabled"; 65 + }; 66 + 67 + uart3: serial@7030003000 { 68 + compatible = "sophgo,sg2044-uart", "snps,dw-apb-uart"; 69 + reg = <0x70 0x30003000 0x0 0x1000>; 70 + clock-frequency = <500000000>; 71 + interrupt-parent = <&intc>; 72 + interrupts = <44 IRQ_TYPE_LEVEL_HIGH>; 73 + reg-shift = <2>; 74 + reg-io-width = <4>; 75 + resets = <&rst RST_UART3>; 76 + status = "disabled"; 77 + }; 78 + 79 + rst: reset-controller@7050003000 { 80 + compatible = "sophgo,sg2044-reset", 81 + "sophgo,sg2042-reset"; 82 + reg = <0x70 0x50003000 0x0 0x1000>; 83 + #reset-cells = <1>; 84 + }; 85 + }; 86 + };