1*56f37e39SGuodong Xu// SPDX-License-Identifier: (GPL-2.0 OR MIT) 2*56f37e39SGuodong Xu/* 3*56f37e39SGuodong Xu * Copyright (c) 2026 SpacemiT (Hangzhou) Technology Co. Ltd 4*56f37e39SGuodong Xu * Copyright (c) 2026 Guodong Xu <guodong@riscstar.com> 5*56f37e39SGuodong Xu */ 6*56f37e39SGuodong Xu 7*56f37e39SGuodong Xu#include <dt-bindings/interrupt-controller/irq.h> 8*56f37e39SGuodong Xu 9*56f37e39SGuodong Xu/dts-v1/; 10*56f37e39SGuodong Xu 11*56f37e39SGuodong Xu/ { 12*56f37e39SGuodong Xu #address-cells = <2>; 13*56f37e39SGuodong Xu #size-cells = <2>; 14*56f37e39SGuodong Xu model = "SpacemiT K3"; 15*56f37e39SGuodong Xu compatible = "spacemit,k3"; 16*56f37e39SGuodong Xu 17*56f37e39SGuodong Xu cpus: cpus { 18*56f37e39SGuodong Xu #address-cells = <1>; 19*56f37e39SGuodong Xu #size-cells = <0>; 20*56f37e39SGuodong Xu timebase-frequency = <24000000>; 21*56f37e39SGuodong Xu 22*56f37e39SGuodong Xu cpu_0: cpu@0 { 23*56f37e39SGuodong Xu compatible = "spacemit,x100", "riscv"; 24*56f37e39SGuodong Xu device_type = "cpu"; 25*56f37e39SGuodong Xu reg = <0>; 26*56f37e39SGuodong Xu riscv,isa-base = "rv64i"; 27*56f37e39SGuodong Xu riscv,isa-extensions = "i", "m", "a", "f", "d", "c", "b", "v", "h", 28*56f37e39SGuodong Xu "sha", "shcounterenw", "shgatpa", "shtvala", 29*56f37e39SGuodong Xu "shvsatpa", "shvstvala", "shvstvecd", "smaia", 30*56f37e39SGuodong Xu "smstateen", "ssaia", "ssccptr", "sscofpmf", 31*56f37e39SGuodong Xu "sscounterenw", "ssnpm", "ssstateen", "sstc", 32*56f37e39SGuodong Xu "sstvala", "sstvecd", "ssu64xl", "svade", 33*56f37e39SGuodong Xu "svinval", "svnapot", "svpbmt", "za64rs", 34*56f37e39SGuodong Xu "zawrs", "zba", "zbb", "zbc", "zbs", "zca", 35*56f37e39SGuodong Xu "zcb", "zcd", "zcmop", "zfa", "zfbfmin", 36*56f37e39SGuodong Xu "zfh", "zfhmin", "zicbom", "zicbop", "zicboz", 37*56f37e39SGuodong Xu "ziccamoa", "ziccif", "zicclsm", "zicntr", 38*56f37e39SGuodong Xu "zicond", "zicsr", "zifencei", "zihintntl", 39*56f37e39SGuodong Xu "zihintpause", "zihpm", "zimop", "zkt", "zvbb", 40*56f37e39SGuodong Xu "zvbc", "zvfbfmin", "zvfbfwma", "zvfh", 41*56f37e39SGuodong Xu "zvfhmin", "zvkb", "zvkg", "zvkn", "zvknc", 42*56f37e39SGuodong Xu "zvkned", "zvkng", "zvknha", "zvknhb", "zvks", 43*56f37e39SGuodong Xu "zvksc", "zvksed", "zvksg", "zvksh", "zvkt"; 44*56f37e39SGuodong Xu riscv,cbom-block-size = <64>; 45*56f37e39SGuodong Xu riscv,cbop-block-size = <64>; 46*56f37e39SGuodong Xu riscv,cboz-block-size = <64>; 47*56f37e39SGuodong Xu i-cache-block-size = <64>; 48*56f37e39SGuodong Xu i-cache-size = <65536>; 49*56f37e39SGuodong Xu i-cache-sets = <256>; 50*56f37e39SGuodong Xu d-cache-block-size = <64>; 51*56f37e39SGuodong Xu d-cache-size = <65536>; 52*56f37e39SGuodong Xu d-cache-sets = <256>; 53*56f37e39SGuodong Xu next-level-cache = <&l2_cache0>; 54*56f37e39SGuodong Xu mmu-type = "riscv,sv39"; 55*56f37e39SGuodong Xu 56*56f37e39SGuodong Xu cpu0_intc: interrupt-controller { 57*56f37e39SGuodong Xu compatible = "riscv,cpu-intc"; 58*56f37e39SGuodong Xu #interrupt-cells = <1>; 59*56f37e39SGuodong Xu interrupt-controller; 60*56f37e39SGuodong Xu }; 61*56f37e39SGuodong Xu }; 62*56f37e39SGuodong Xu 63*56f37e39SGuodong Xu cpu_1: cpu@1 { 64*56f37e39SGuodong Xu compatible = "spacemit,x100", "riscv"; 65*56f37e39SGuodong Xu device_type = "cpu"; 66*56f37e39SGuodong Xu reg = <1>; 67*56f37e39SGuodong Xu riscv,isa-base = "rv64i"; 68*56f37e39SGuodong Xu riscv,isa-extensions = "i", "m", "a", "f", "d", "c", "b", "v", "h", 69*56f37e39SGuodong Xu "sha", "shcounterenw", "shgatpa", "shtvala", 70*56f37e39SGuodong Xu "shvsatpa", "shvstvala", "shvstvecd", "smaia", 71*56f37e39SGuodong Xu "smstateen", "ssaia", "ssccptr", "sscofpmf", 72*56f37e39SGuodong Xu "sscounterenw", "ssnpm", "ssstateen", "sstc", 73*56f37e39SGuodong Xu "sstvala", "sstvecd", "ssu64xl", "svade", 74*56f37e39SGuodong Xu "svinval", "svnapot", "svpbmt", "za64rs", 75*56f37e39SGuodong Xu "zawrs", "zba", "zbb", "zbc", "zbs", "zca", 76*56f37e39SGuodong Xu "zcb", "zcd", "zcmop", "zfa", "zfbfmin", 77*56f37e39SGuodong Xu "zfh", "zfhmin", "zicbom", "zicbop", "zicboz", 78*56f37e39SGuodong Xu "ziccamoa", "ziccif", "zicclsm", "zicntr", 79*56f37e39SGuodong Xu "zicond", "zicsr", "zifencei", "zihintntl", 80*56f37e39SGuodong Xu "zihintpause", "zihpm", "zimop", "zkt", "zvbb", 81*56f37e39SGuodong Xu "zvbc", "zvfbfmin", "zvfbfwma", "zvfh", 82*56f37e39SGuodong Xu "zvfhmin", "zvkb", "zvkg", "zvkn", "zvknc", 83*56f37e39SGuodong Xu "zvkned", "zvkng", "zvknha", "zvknhb", "zvks", 84*56f37e39SGuodong Xu "zvksc", "zvksed", "zvksg", "zvksh", "zvkt"; 85*56f37e39SGuodong Xu riscv,cbom-block-size = <64>; 86*56f37e39SGuodong Xu riscv,cbop-block-size = <64>; 87*56f37e39SGuodong Xu riscv,cboz-block-size = <64>; 88*56f37e39SGuodong Xu i-cache-block-size = <64>; 89*56f37e39SGuodong Xu i-cache-size = <65536>; 90*56f37e39SGuodong Xu i-cache-sets = <256>; 91*56f37e39SGuodong Xu d-cache-block-size = <64>; 92*56f37e39SGuodong Xu d-cache-size = <65536>; 93*56f37e39SGuodong Xu d-cache-sets = <256>; 94*56f37e39SGuodong Xu next-level-cache = <&l2_cache0>; 95*56f37e39SGuodong Xu mmu-type = "riscv,sv39"; 96*56f37e39SGuodong Xu 97*56f37e39SGuodong Xu cpu1_intc: interrupt-controller { 98*56f37e39SGuodong Xu compatible = "riscv,cpu-intc"; 99*56f37e39SGuodong Xu #interrupt-cells = <1>; 100*56f37e39SGuodong Xu interrupt-controller; 101*56f37e39SGuodong Xu }; 102*56f37e39SGuodong Xu }; 103*56f37e39SGuodong Xu 104*56f37e39SGuodong Xu cpu_2: cpu@2 { 105*56f37e39SGuodong Xu compatible = "spacemit,x100", "riscv"; 106*56f37e39SGuodong Xu device_type = "cpu"; 107*56f37e39SGuodong Xu reg = <2>; 108*56f37e39SGuodong Xu riscv,isa-base = "rv64i"; 109*56f37e39SGuodong Xu riscv,isa-extensions = "i", "m", "a", "f", "d", "c", "b", "v", "h", 110*56f37e39SGuodong Xu "sha", "shcounterenw", "shgatpa", "shtvala", 111*56f37e39SGuodong Xu "shvsatpa", "shvstvala", "shvstvecd", "smaia", 112*56f37e39SGuodong Xu "smstateen", "ssaia", "ssccptr", "sscofpmf", 113*56f37e39SGuodong Xu "sscounterenw", "ssnpm", "ssstateen", "sstc", 114*56f37e39SGuodong Xu "sstvala", "sstvecd", "ssu64xl", "svade", 115*56f37e39SGuodong Xu "svinval", "svnapot", "svpbmt", "za64rs", 116*56f37e39SGuodong Xu "zawrs", "zba", "zbb", "zbc", "zbs", "zca", 117*56f37e39SGuodong Xu "zcb", "zcd", "zcmop", "zfa", "zfbfmin", 118*56f37e39SGuodong Xu "zfh", "zfhmin", "zicbom", "zicbop", "zicboz", 119*56f37e39SGuodong Xu "ziccamoa", "ziccif", "zicclsm", "zicntr", 120*56f37e39SGuodong Xu "zicond", "zicsr", "zifencei", "zihintntl", 121*56f37e39SGuodong Xu "zihintpause", "zihpm", "zimop", "zkt", "zvbb", 122*56f37e39SGuodong Xu "zvbc", "zvfbfmin", "zvfbfwma", "zvfh", 123*56f37e39SGuodong Xu "zvfhmin", "zvkb", "zvkg", "zvkn", "zvknc", 124*56f37e39SGuodong Xu "zvkned", "zvkng", "zvknha", "zvknhb", "zvks", 125*56f37e39SGuodong Xu "zvksc", "zvksed", "zvksg", "zvksh", "zvkt"; 126*56f37e39SGuodong Xu riscv,cbom-block-size = <64>; 127*56f37e39SGuodong Xu riscv,cbop-block-size = <64>; 128*56f37e39SGuodong Xu riscv,cboz-block-size = <64>; 129*56f37e39SGuodong Xu i-cache-block-size = <64>; 130*56f37e39SGuodong Xu i-cache-size = <65536>; 131*56f37e39SGuodong Xu i-cache-sets = <256>; 132*56f37e39SGuodong Xu d-cache-block-size = <64>; 133*56f37e39SGuodong Xu d-cache-size = <65536>; 134*56f37e39SGuodong Xu d-cache-sets = <256>; 135*56f37e39SGuodong Xu next-level-cache = <&l2_cache0>; 136*56f37e39SGuodong Xu mmu-type = "riscv,sv39"; 137*56f37e39SGuodong Xu 138*56f37e39SGuodong Xu cpu2_intc: interrupt-controller { 139*56f37e39SGuodong Xu compatible = "riscv,cpu-intc"; 140*56f37e39SGuodong Xu #interrupt-cells = <1>; 141*56f37e39SGuodong Xu interrupt-controller; 142*56f37e39SGuodong Xu }; 143*56f37e39SGuodong Xu }; 144*56f37e39SGuodong Xu 145*56f37e39SGuodong Xu cpu_3: cpu@3 { 146*56f37e39SGuodong Xu compatible = "spacemit,x100", "riscv"; 147*56f37e39SGuodong Xu device_type = "cpu"; 148*56f37e39SGuodong Xu reg = <3>; 149*56f37e39SGuodong Xu riscv,isa-base = "rv64i"; 150*56f37e39SGuodong Xu riscv,isa-extensions = "i", "m", "a", "f", "d", "c", "b", "v", "h", 151*56f37e39SGuodong Xu "sha", "shcounterenw", "shgatpa", "shtvala", 152*56f37e39SGuodong Xu "shvsatpa", "shvstvala", "shvstvecd", "smaia", 153*56f37e39SGuodong Xu "smstateen", "ssaia", "ssccptr", "sscofpmf", 154*56f37e39SGuodong Xu "sscounterenw", "ssnpm", "ssstateen", "sstc", 155*56f37e39SGuodong Xu "sstvala", "sstvecd", "ssu64xl", "svade", 156*56f37e39SGuodong Xu "svinval", "svnapot", "svpbmt", "za64rs", 157*56f37e39SGuodong Xu "zawrs", "zba", "zbb", "zbc", "zbs", "zca", 158*56f37e39SGuodong Xu "zcb", "zcd", "zcmop", "zfa", "zfbfmin", 159*56f37e39SGuodong Xu "zfh", "zfhmin", "zicbom", "zicbop", "zicboz", 160*56f37e39SGuodong Xu "ziccamoa", "ziccif", "zicclsm", "zicntr", 161*56f37e39SGuodong Xu "zicond", "zicsr", "zifencei", "zihintntl", 162*56f37e39SGuodong Xu "zihintpause", "zihpm", "zimop", "zkt", "zvbb", 163*56f37e39SGuodong Xu "zvbc", "zvfbfmin", "zvfbfwma", "zvfh", 164*56f37e39SGuodong Xu "zvfhmin", "zvkb", "zvkg", "zvkn", "zvknc", 165*56f37e39SGuodong Xu "zvkned", "zvkng", "zvknha", "zvknhb", "zvks", 166*56f37e39SGuodong Xu "zvksc", "zvksed", "zvksg", "zvksh", "zvkt"; 167*56f37e39SGuodong Xu riscv,cbom-block-size = <64>; 168*56f37e39SGuodong Xu riscv,cbop-block-size = <64>; 169*56f37e39SGuodong Xu riscv,cboz-block-size = <64>; 170*56f37e39SGuodong Xu i-cache-block-size = <64>; 171*56f37e39SGuodong Xu i-cache-size = <65536>; 172*56f37e39SGuodong Xu i-cache-sets = <256>; 173*56f37e39SGuodong Xu d-cache-block-size = <64>; 174*56f37e39SGuodong Xu d-cache-size = <65536>; 175*56f37e39SGuodong Xu d-cache-sets = <256>; 176*56f37e39SGuodong Xu next-level-cache = <&l2_cache0>; 177*56f37e39SGuodong Xu mmu-type = "riscv,sv39"; 178*56f37e39SGuodong Xu 179*56f37e39SGuodong Xu cpu3_intc: interrupt-controller { 180*56f37e39SGuodong Xu compatible = "riscv,cpu-intc"; 181*56f37e39SGuodong Xu #interrupt-cells = <1>; 182*56f37e39SGuodong Xu interrupt-controller; 183*56f37e39SGuodong Xu }; 184*56f37e39SGuodong Xu }; 185*56f37e39SGuodong Xu 186*56f37e39SGuodong Xu cpu_4: cpu@4 { 187*56f37e39SGuodong Xu compatible = "spacemit,x100", "riscv"; 188*56f37e39SGuodong Xu device_type = "cpu"; 189*56f37e39SGuodong Xu reg = <4>; 190*56f37e39SGuodong Xu riscv,isa-base = "rv64i"; 191*56f37e39SGuodong Xu riscv,isa-extensions = "i", "m", "a", "f", "d", "c", "b", "v", "h", 192*56f37e39SGuodong Xu "sha", "shcounterenw", "shgatpa", "shtvala", 193*56f37e39SGuodong Xu "shvsatpa", "shvstvala", "shvstvecd", "smaia", 194*56f37e39SGuodong Xu "smstateen", "ssaia", "ssccptr", "sscofpmf", 195*56f37e39SGuodong Xu "sscounterenw", "ssnpm", "ssstateen", "sstc", 196*56f37e39SGuodong Xu "sstvala", "sstvecd", "ssu64xl", "svade", 197*56f37e39SGuodong Xu "svinval", "svnapot", "svpbmt", "za64rs", 198*56f37e39SGuodong Xu "zawrs", "zba", "zbb", "zbc", "zbs", "zca", 199*56f37e39SGuodong Xu "zcb", "zcd", "zcmop", "zfa", "zfbfmin", 200*56f37e39SGuodong Xu "zfh", "zfhmin", "zicbom", "zicbop", "zicboz", 201*56f37e39SGuodong Xu "ziccamoa", "ziccif", "zicclsm", "zicntr", 202*56f37e39SGuodong Xu "zicond", "zicsr", "zifencei", "zihintntl", 203*56f37e39SGuodong Xu "zihintpause", "zihpm", "zimop", "zkt", "zvbb", 204*56f37e39SGuodong Xu "zvbc", "zvfbfmin", "zvfbfwma", "zvfh", 205*56f37e39SGuodong Xu "zvfhmin", "zvkb", "zvkg", "zvkn", "zvknc", 206*56f37e39SGuodong Xu "zvkned", "zvkng", "zvknha", "zvknhb", "zvks", 207*56f37e39SGuodong Xu "zvksc", "zvksed", "zvksg", "zvksh", "zvkt"; 208*56f37e39SGuodong Xu riscv,cbom-block-size = <64>; 209*56f37e39SGuodong Xu riscv,cbop-block-size = <64>; 210*56f37e39SGuodong Xu riscv,cboz-block-size = <64>; 211*56f37e39SGuodong Xu i-cache-block-size = <64>; 212*56f37e39SGuodong Xu i-cache-size = <65536>; 213*56f37e39SGuodong Xu i-cache-sets = <256>; 214*56f37e39SGuodong Xu d-cache-block-size = <64>; 215*56f37e39SGuodong Xu d-cache-size = <65536>; 216*56f37e39SGuodong Xu d-cache-sets = <256>; 217*56f37e39SGuodong Xu next-level-cache = <&l2_cache1>; 218*56f37e39SGuodong Xu mmu-type = "riscv,sv39"; 219*56f37e39SGuodong Xu 220*56f37e39SGuodong Xu cpu4_intc: interrupt-controller { 221*56f37e39SGuodong Xu compatible = "riscv,cpu-intc"; 222*56f37e39SGuodong Xu #interrupt-cells = <1>; 223*56f37e39SGuodong Xu interrupt-controller; 224*56f37e39SGuodong Xu }; 225*56f37e39SGuodong Xu }; 226*56f37e39SGuodong Xu 227*56f37e39SGuodong Xu cpu_5: cpu@5 { 228*56f37e39SGuodong Xu compatible = "spacemit,x100", "riscv"; 229*56f37e39SGuodong Xu device_type = "cpu"; 230*56f37e39SGuodong Xu reg = <5>; 231*56f37e39SGuodong Xu riscv,isa-base = "rv64i"; 232*56f37e39SGuodong Xu riscv,isa-extensions = "i", "m", "a", "f", "d", "c", "b", "v", "h", 233*56f37e39SGuodong Xu "sha", "shcounterenw", "shgatpa", "shtvala", 234*56f37e39SGuodong Xu "shvsatpa", "shvstvala", "shvstvecd", "smaia", 235*56f37e39SGuodong Xu "smstateen", "ssaia", "ssccptr", "sscofpmf", 236*56f37e39SGuodong Xu "sscounterenw", "ssnpm", "ssstateen", "sstc", 237*56f37e39SGuodong Xu "sstvala", "sstvecd", "ssu64xl", "svade", 238*56f37e39SGuodong Xu "svinval", "svnapot", "svpbmt", "za64rs", 239*56f37e39SGuodong Xu "zawrs", "zba", "zbb", "zbc", "zbs", "zca", 240*56f37e39SGuodong Xu "zcb", "zcd", "zcmop", "zfa", "zfbfmin", 241*56f37e39SGuodong Xu "zfh", "zfhmin", "zicbom", "zicbop", "zicboz", 242*56f37e39SGuodong Xu "ziccamoa", "ziccif", "zicclsm", "zicntr", 243*56f37e39SGuodong Xu "zicond", "zicsr", "zifencei", "zihintntl", 244*56f37e39SGuodong Xu "zihintpause", "zihpm", "zimop", "zkt", "zvbb", 245*56f37e39SGuodong Xu "zvbc", "zvfbfmin", "zvfbfwma", "zvfh", 246*56f37e39SGuodong Xu "zvfhmin", "zvkb", "zvkg", "zvkn", "zvknc", 247*56f37e39SGuodong Xu "zvkned", "zvkng", "zvknha", "zvknhb", "zvks", 248*56f37e39SGuodong Xu "zvksc", "zvksed", "zvksg", "zvksh", "zvkt"; 249*56f37e39SGuodong Xu riscv,cbom-block-size = <64>; 250*56f37e39SGuodong Xu riscv,cbop-block-size = <64>; 251*56f37e39SGuodong Xu riscv,cboz-block-size = <64>; 252*56f37e39SGuodong Xu i-cache-block-size = <64>; 253*56f37e39SGuodong Xu i-cache-size = <65536>; 254*56f37e39SGuodong Xu i-cache-sets = <256>; 255*56f37e39SGuodong Xu d-cache-block-size = <64>; 256*56f37e39SGuodong Xu d-cache-size = <65536>; 257*56f37e39SGuodong Xu d-cache-sets = <256>; 258*56f37e39SGuodong Xu next-level-cache = <&l2_cache1>; 259*56f37e39SGuodong Xu mmu-type = "riscv,sv39"; 260*56f37e39SGuodong Xu 261*56f37e39SGuodong Xu cpu5_intc: interrupt-controller { 262*56f37e39SGuodong Xu compatible = "riscv,cpu-intc"; 263*56f37e39SGuodong Xu #interrupt-cells = <1>; 264*56f37e39SGuodong Xu interrupt-controller; 265*56f37e39SGuodong Xu }; 266*56f37e39SGuodong Xu }; 267*56f37e39SGuodong Xu 268*56f37e39SGuodong Xu cpu_6: cpu@6 { 269*56f37e39SGuodong Xu compatible = "spacemit,x100", "riscv"; 270*56f37e39SGuodong Xu device_type = "cpu"; 271*56f37e39SGuodong Xu reg = <6>; 272*56f37e39SGuodong Xu riscv,isa-base = "rv64i"; 273*56f37e39SGuodong Xu riscv,isa-extensions = "i", "m", "a", "f", "d", "c", "b", "v", "h", 274*56f37e39SGuodong Xu "sha", "shcounterenw", "shgatpa", "shtvala", 275*56f37e39SGuodong Xu "shvsatpa", "shvstvala", "shvstvecd", "smaia", 276*56f37e39SGuodong Xu "smstateen", "ssaia", "ssccptr", "sscofpmf", 277*56f37e39SGuodong Xu "sscounterenw", "ssnpm", "ssstateen", "sstc", 278*56f37e39SGuodong Xu "sstvala", "sstvecd", "ssu64xl", "svade", 279*56f37e39SGuodong Xu "svinval", "svnapot", "svpbmt", "za64rs", 280*56f37e39SGuodong Xu "zawrs", "zba", "zbb", "zbc", "zbs", "zca", 281*56f37e39SGuodong Xu "zcb", "zcd", "zcmop", "zfa", "zfbfmin", 282*56f37e39SGuodong Xu "zfh", "zfhmin", "zicbom", "zicbop", "zicboz", 283*56f37e39SGuodong Xu "ziccamoa", "ziccif", "zicclsm", "zicntr", 284*56f37e39SGuodong Xu "zicond", "zicsr", "zifencei", "zihintntl", 285*56f37e39SGuodong Xu "zihintpause", "zihpm", "zimop", "zkt", "zvbb", 286*56f37e39SGuodong Xu "zvbc", "zvfbfmin", "zvfbfwma", "zvfh", 287*56f37e39SGuodong Xu "zvfhmin", "zvkb", "zvkg", "zvkn", "zvknc", 288*56f37e39SGuodong Xu "zvkned", "zvkng", "zvknha", "zvknhb", "zvks", 289*56f37e39SGuodong Xu "zvksc", "zvksed", "zvksg", "zvksh", "zvkt"; 290*56f37e39SGuodong Xu riscv,cbom-block-size = <64>; 291*56f37e39SGuodong Xu riscv,cbop-block-size = <64>; 292*56f37e39SGuodong Xu riscv,cboz-block-size = <64>; 293*56f37e39SGuodong Xu i-cache-block-size = <64>; 294*56f37e39SGuodong Xu i-cache-size = <65536>; 295*56f37e39SGuodong Xu i-cache-sets = <256>; 296*56f37e39SGuodong Xu d-cache-block-size = <64>; 297*56f37e39SGuodong Xu d-cache-size = <65536>; 298*56f37e39SGuodong Xu d-cache-sets = <256>; 299*56f37e39SGuodong Xu next-level-cache = <&l2_cache1>; 300*56f37e39SGuodong Xu mmu-type = "riscv,sv39"; 301*56f37e39SGuodong Xu 302*56f37e39SGuodong Xu cpu6_intc: interrupt-controller { 303*56f37e39SGuodong Xu compatible = "riscv,cpu-intc"; 304*56f37e39SGuodong Xu #interrupt-cells = <1>; 305*56f37e39SGuodong Xu interrupt-controller; 306*56f37e39SGuodong Xu }; 307*56f37e39SGuodong Xu }; 308*56f37e39SGuodong Xu 309*56f37e39SGuodong Xu cpu_7: cpu@7 { 310*56f37e39SGuodong Xu compatible = "spacemit,x100", "riscv"; 311*56f37e39SGuodong Xu device_type = "cpu"; 312*56f37e39SGuodong Xu reg = <7>; 313*56f37e39SGuodong Xu riscv,isa-base = "rv64i"; 314*56f37e39SGuodong Xu riscv,isa-extensions = "i", "m", "a", "f", "d", "c", "b", "v", "h", 315*56f37e39SGuodong Xu "sha", "shcounterenw", "shgatpa", "shtvala", 316*56f37e39SGuodong Xu "shvsatpa", "shvstvala", "shvstvecd", "smaia", 317*56f37e39SGuodong Xu "smstateen", "ssaia", "ssccptr", "sscofpmf", 318*56f37e39SGuodong Xu "sscounterenw", "ssnpm", "ssstateen", "sstc", 319*56f37e39SGuodong Xu "sstvala", "sstvecd", "ssu64xl", "svade", 320*56f37e39SGuodong Xu "svinval", "svnapot", "svpbmt", "za64rs", 321*56f37e39SGuodong Xu "zawrs", "zba", "zbb", "zbc", "zbs", "zca", 322*56f37e39SGuodong Xu "zcb", "zcd", "zcmop", "zfa", "zfbfmin", 323*56f37e39SGuodong Xu "zfh", "zfhmin", "zicbom", "zicbop", "zicboz", 324*56f37e39SGuodong Xu "ziccamoa", "ziccif", "zicclsm", "zicntr", 325*56f37e39SGuodong Xu "zicond", "zicsr", "zifencei", "zihintntl", 326*56f37e39SGuodong Xu "zihintpause", "zihpm", "zimop", "zkt", "zvbb", 327*56f37e39SGuodong Xu "zvbc", "zvfbfmin", "zvfbfwma", "zvfh", 328*56f37e39SGuodong Xu "zvfhmin", "zvkb", "zvkg", "zvkn", "zvknc", 329*56f37e39SGuodong Xu "zvkned", "zvkng", "zvknha", "zvknhb", "zvks", 330*56f37e39SGuodong Xu "zvksc", "zvksed", "zvksg", "zvksh", "zvkt"; 331*56f37e39SGuodong Xu riscv,cbom-block-size = <64>; 332*56f37e39SGuodong Xu riscv,cbop-block-size = <64>; 333*56f37e39SGuodong Xu riscv,cboz-block-size = <64>; 334*56f37e39SGuodong Xu i-cache-block-size = <64>; 335*56f37e39SGuodong Xu i-cache-size = <65536>; 336*56f37e39SGuodong Xu i-cache-sets = <256>; 337*56f37e39SGuodong Xu d-cache-block-size = <64>; 338*56f37e39SGuodong Xu d-cache-size = <65536>; 339*56f37e39SGuodong Xu d-cache-sets = <256>; 340*56f37e39SGuodong Xu next-level-cache = <&l2_cache1>; 341*56f37e39SGuodong Xu mmu-type = "riscv,sv39"; 342*56f37e39SGuodong Xu 343*56f37e39SGuodong Xu cpu7_intc: interrupt-controller { 344*56f37e39SGuodong Xu compatible = "riscv,cpu-intc"; 345*56f37e39SGuodong Xu #interrupt-cells = <1>; 346*56f37e39SGuodong Xu interrupt-controller; 347*56f37e39SGuodong Xu }; 348*56f37e39SGuodong Xu }; 349*56f37e39SGuodong Xu 350*56f37e39SGuodong Xu l2_cache0: cache-controller-0 { 351*56f37e39SGuodong Xu compatible = "cache"; 352*56f37e39SGuodong Xu cache-block-size = <64>; 353*56f37e39SGuodong Xu cache-level = <2>; 354*56f37e39SGuodong Xu cache-size = <4194304>; 355*56f37e39SGuodong Xu cache-sets = <4096>; 356*56f37e39SGuodong Xu cache-unified; 357*56f37e39SGuodong Xu }; 358*56f37e39SGuodong Xu 359*56f37e39SGuodong Xu l2_cache1: cache-controller-1 { 360*56f37e39SGuodong Xu compatible = "cache"; 361*56f37e39SGuodong Xu cache-block-size = <64>; 362*56f37e39SGuodong Xu cache-level = <2>; 363*56f37e39SGuodong Xu cache-size = <4194304>; 364*56f37e39SGuodong Xu cache-sets = <4096>; 365*56f37e39SGuodong Xu cache-unified; 366*56f37e39SGuodong Xu }; 367*56f37e39SGuodong Xu 368*56f37e39SGuodong Xu cpu-map { 369*56f37e39SGuodong Xu cluster0 { 370*56f37e39SGuodong Xu core0 { 371*56f37e39SGuodong Xu cpu = <&cpu_0>; 372*56f37e39SGuodong Xu }; 373*56f37e39SGuodong Xu core1 { 374*56f37e39SGuodong Xu cpu = <&cpu_1>; 375*56f37e39SGuodong Xu }; 376*56f37e39SGuodong Xu core2 { 377*56f37e39SGuodong Xu cpu = <&cpu_2>; 378*56f37e39SGuodong Xu }; 379*56f37e39SGuodong Xu core3 { 380*56f37e39SGuodong Xu cpu = <&cpu_3>; 381*56f37e39SGuodong Xu }; 382*56f37e39SGuodong Xu }; 383*56f37e39SGuodong Xu 384*56f37e39SGuodong Xu cluster1 { 385*56f37e39SGuodong Xu core0 { 386*56f37e39SGuodong Xu cpu = <&cpu_4>; 387*56f37e39SGuodong Xu }; 388*56f37e39SGuodong Xu core1 { 389*56f37e39SGuodong Xu cpu = <&cpu_5>; 390*56f37e39SGuodong Xu }; 391*56f37e39SGuodong Xu core2 { 392*56f37e39SGuodong Xu cpu = <&cpu_6>; 393*56f37e39SGuodong Xu }; 394*56f37e39SGuodong Xu core3 { 395*56f37e39SGuodong Xu cpu = <&cpu_7>; 396*56f37e39SGuodong Xu }; 397*56f37e39SGuodong Xu }; 398*56f37e39SGuodong Xu }; 399*56f37e39SGuodong Xu }; 400*56f37e39SGuodong Xu 401*56f37e39SGuodong Xu soc: soc { 402*56f37e39SGuodong Xu compatible = "simple-bus"; 403*56f37e39SGuodong Xu interrupt-parent = <&saplic>; 404*56f37e39SGuodong Xu #address-cells = <2>; 405*56f37e39SGuodong Xu #size-cells = <2>; 406*56f37e39SGuodong Xu dma-noncoherent; 407*56f37e39SGuodong Xu ranges; 408*56f37e39SGuodong Xu 409*56f37e39SGuodong Xu uart0: serial@d4017000 { 410*56f37e39SGuodong Xu compatible = "spacemit,k3-uart", "intel,xscale-uart"; 411*56f37e39SGuodong Xu reg = <0x0 0xd4017000 0x0 0x100>; 412*56f37e39SGuodong Xu reg-shift = <2>; 413*56f37e39SGuodong Xu reg-io-width = <4>; 414*56f37e39SGuodong Xu clock-frequency = <14700000>; 415*56f37e39SGuodong Xu interrupts = <42 IRQ_TYPE_LEVEL_HIGH>; 416*56f37e39SGuodong Xu status = "disabled"; 417*56f37e39SGuodong Xu }; 418*56f37e39SGuodong Xu 419*56f37e39SGuodong Xu uart2: serial@d4017100 { 420*56f37e39SGuodong Xu compatible = "spacemit,k3-uart", "intel,xscale-uart"; 421*56f37e39SGuodong Xu reg = <0x0 0xd4017100 0x0 0x100>; 422*56f37e39SGuodong Xu reg-shift = <2>; 423*56f37e39SGuodong Xu reg-io-width = <4>; 424*56f37e39SGuodong Xu clock-frequency = <14700000>; 425*56f37e39SGuodong Xu interrupts = <44 IRQ_TYPE_LEVEL_HIGH>; 426*56f37e39SGuodong Xu status = "disabled"; 427*56f37e39SGuodong Xu }; 428*56f37e39SGuodong Xu 429*56f37e39SGuodong Xu uart3: serial@d4017200 { 430*56f37e39SGuodong Xu compatible = "spacemit,k3-uart", "intel,xscale-uart"; 431*56f37e39SGuodong Xu reg = <0x0 0xd4017200 0x0 0x100>; 432*56f37e39SGuodong Xu reg-shift = <2>; 433*56f37e39SGuodong Xu reg-io-width = <4>; 434*56f37e39SGuodong Xu clock-frequency = <14700000>; 435*56f37e39SGuodong Xu interrupts = <45 IRQ_TYPE_LEVEL_HIGH>; 436*56f37e39SGuodong Xu status = "disabled"; 437*56f37e39SGuodong Xu }; 438*56f37e39SGuodong Xu 439*56f37e39SGuodong Xu uart4: serial@d4017300 { 440*56f37e39SGuodong Xu compatible = "spacemit,k3-uart", "intel,xscale-uart"; 441*56f37e39SGuodong Xu reg = <0x0 0xd4017300 0x0 0x100>; 442*56f37e39SGuodong Xu reg-shift = <2>; 443*56f37e39SGuodong Xu reg-io-width = <4>; 444*56f37e39SGuodong Xu clock-frequency = <14700000>; 445*56f37e39SGuodong Xu interrupts = <46 IRQ_TYPE_LEVEL_HIGH>; 446*56f37e39SGuodong Xu status = "disabled"; 447*56f37e39SGuodong Xu }; 448*56f37e39SGuodong Xu 449*56f37e39SGuodong Xu uart5: serial@d4017400 { 450*56f37e39SGuodong Xu compatible = "spacemit,k3-uart", "intel,xscale-uart"; 451*56f37e39SGuodong Xu reg = <0x0 0xd4017400 0x0 0x100>; 452*56f37e39SGuodong Xu reg-shift = <2>; 453*56f37e39SGuodong Xu reg-io-width = <4>; 454*56f37e39SGuodong Xu clock-frequency = <14700000>; 455*56f37e39SGuodong Xu interrupts = <47 IRQ_TYPE_LEVEL_HIGH>; 456*56f37e39SGuodong Xu status = "disabled"; 457*56f37e39SGuodong Xu }; 458*56f37e39SGuodong Xu 459*56f37e39SGuodong Xu uart6: serial@d4017500 { 460*56f37e39SGuodong Xu compatible = "spacemit,k3-uart", "intel,xscale-uart"; 461*56f37e39SGuodong Xu reg = <0x0 0xd4017500 0x0 0x100>; 462*56f37e39SGuodong Xu reg-shift = <2>; 463*56f37e39SGuodong Xu reg-io-width = <4>; 464*56f37e39SGuodong Xu clock-frequency = <14700000>; 465*56f37e39SGuodong Xu interrupts = <48 IRQ_TYPE_LEVEL_HIGH>; 466*56f37e39SGuodong Xu status = "disabled"; 467*56f37e39SGuodong Xu }; 468*56f37e39SGuodong Xu 469*56f37e39SGuodong Xu uart7: serial@d4017600 { 470*56f37e39SGuodong Xu compatible = "spacemit,k3-uart", "intel,xscale-uart"; 471*56f37e39SGuodong Xu reg = <0x0 0xd4017600 0x0 0x100>; 472*56f37e39SGuodong Xu reg-shift = <2>; 473*56f37e39SGuodong Xu reg-io-width = <4>; 474*56f37e39SGuodong Xu clock-frequency = <14700000>; 475*56f37e39SGuodong Xu interrupts = <49 IRQ_TYPE_LEVEL_HIGH>; 476*56f37e39SGuodong Xu status = "disabled"; 477*56f37e39SGuodong Xu }; 478*56f37e39SGuodong Xu 479*56f37e39SGuodong Xu uart8: serial@d4017700 { 480*56f37e39SGuodong Xu compatible = "spacemit,k3-uart", "intel,xscale-uart"; 481*56f37e39SGuodong Xu reg = <0x0 0xd4017700 0x0 0x100>; 482*56f37e39SGuodong Xu reg-shift = <2>; 483*56f37e39SGuodong Xu reg-io-width = <4>; 484*56f37e39SGuodong Xu clock-frequency = <14700000>; 485*56f37e39SGuodong Xu interrupts = <50 IRQ_TYPE_LEVEL_HIGH>; 486*56f37e39SGuodong Xu status = "disabled"; 487*56f37e39SGuodong Xu }; 488*56f37e39SGuodong Xu 489*56f37e39SGuodong Xu uart9: serial@d4017800 { 490*56f37e39SGuodong Xu compatible = "spacemit,k3-uart", "intel,xscale-uart"; 491*56f37e39SGuodong Xu reg = <0x0 0xd4017800 0x0 0x100>; 492*56f37e39SGuodong Xu reg-shift = <2>; 493*56f37e39SGuodong Xu reg-io-width = <4>; 494*56f37e39SGuodong Xu clock-frequency = <14700000>; 495*56f37e39SGuodong Xu interrupts = <51 IRQ_TYPE_LEVEL_HIGH>; 496*56f37e39SGuodong Xu status = "disabled"; 497*56f37e39SGuodong Xu }; 498*56f37e39SGuodong Xu 499*56f37e39SGuodong Xu uart10: serial@d401f000 { 500*56f37e39SGuodong Xu compatible = "spacemit,k3-uart", "intel,xscale-uart"; 501*56f37e39SGuodong Xu reg = <0x0 0xd401f000 0x0 0x100>; 502*56f37e39SGuodong Xu reg-shift = <2>; 503*56f37e39SGuodong Xu reg-io-width = <4>; 504*56f37e39SGuodong Xu clock-frequency = <14700000>; 505*56f37e39SGuodong Xu interrupts = <281 IRQ_TYPE_LEVEL_HIGH>; 506*56f37e39SGuodong Xu status = "disabled"; 507*56f37e39SGuodong Xu }; 508*56f37e39SGuodong Xu 509*56f37e39SGuodong Xu simsic: interrupt-controller@e0400000 { 510*56f37e39SGuodong Xu compatible = "spacemit,k3-imsics", "riscv,imsics"; 511*56f37e39SGuodong Xu reg = <0x0 0xe0400000 0x0 0x200000>; 512*56f37e39SGuodong Xu #interrupt-cells = <0>; 513*56f37e39SGuodong Xu #msi-cells = <0>; 514*56f37e39SGuodong Xu interrupt-controller; 515*56f37e39SGuodong Xu interrupts-extended = <&cpu0_intc 9>, <&cpu1_intc 9>, 516*56f37e39SGuodong Xu <&cpu2_intc 9>, <&cpu3_intc 9>, 517*56f37e39SGuodong Xu <&cpu4_intc 9>, <&cpu5_intc 9>, 518*56f37e39SGuodong Xu <&cpu6_intc 9>, <&cpu7_intc 9>; 519*56f37e39SGuodong Xu msi-controller; 520*56f37e39SGuodong Xu riscv,guest-index-bits = <6>; 521*56f37e39SGuodong Xu riscv,hart-index-bits = <4>; 522*56f37e39SGuodong Xu riscv,num-guest-ids = <511>; 523*56f37e39SGuodong Xu riscv,num-ids = <511>; 524*56f37e39SGuodong Xu }; 525*56f37e39SGuodong Xu 526*56f37e39SGuodong Xu saplic: interrupt-controller@e0804000 { 527*56f37e39SGuodong Xu compatible = "spacemit,k3-aplic", "riscv,aplic"; 528*56f37e39SGuodong Xu reg = <0x0 0xe0804000 0x0 0x4000>; 529*56f37e39SGuodong Xu #interrupt-cells = <2>; 530*56f37e39SGuodong Xu interrupt-controller; 531*56f37e39SGuodong Xu msi-parent = <&simsic>; 532*56f37e39SGuodong Xu riscv,num-sources = <512>; 533*56f37e39SGuodong Xu }; 534*56f37e39SGuodong Xu 535*56f37e39SGuodong Xu clint: timer@e081c000 { 536*56f37e39SGuodong Xu compatible = "spacemit,k3-clint", "sifive,clint0"; 537*56f37e39SGuodong Xu reg = <0x0 0xe081c000 0x0 0x4000>; 538*56f37e39SGuodong Xu interrupts-extended = <&cpu0_intc 3>, <&cpu0_intc 7>, 539*56f37e39SGuodong Xu <&cpu1_intc 3>, <&cpu1_intc 7>, 540*56f37e39SGuodong Xu <&cpu2_intc 3>, <&cpu2_intc 7>, 541*56f37e39SGuodong Xu <&cpu3_intc 3>, <&cpu3_intc 7>, 542*56f37e39SGuodong Xu <&cpu4_intc 3>, <&cpu4_intc 7>, 543*56f37e39SGuodong Xu <&cpu5_intc 3>, <&cpu5_intc 7>, 544*56f37e39SGuodong Xu <&cpu6_intc 3>, <&cpu6_intc 7>, 545*56f37e39SGuodong Xu <&cpu7_intc 3>, <&cpu7_intc 7>; 546*56f37e39SGuodong Xu }; 547*56f37e39SGuodong Xu 548*56f37e39SGuodong Xu mimsic: interrupt-controller@f1000000 { 549*56f37e39SGuodong Xu compatible = "spacemit,k3-imsics", "riscv,imsics"; 550*56f37e39SGuodong Xu reg = <0x0 0xf1000000 0x0 0x10000>; 551*56f37e39SGuodong Xu #interrupt-cells = <0>; 552*56f37e39SGuodong Xu #msi-cells = <0>; 553*56f37e39SGuodong Xu interrupt-controller; 554*56f37e39SGuodong Xu interrupts-extended = <&cpu0_intc 11>, <&cpu1_intc 11>, 555*56f37e39SGuodong Xu <&cpu2_intc 11>, <&cpu3_intc 11>, 556*56f37e39SGuodong Xu <&cpu4_intc 11>, <&cpu5_intc 11>, 557*56f37e39SGuodong Xu <&cpu6_intc 11>, <&cpu7_intc 11>; 558*56f37e39SGuodong Xu msi-controller; 559*56f37e39SGuodong Xu riscv,guest-index-bits = <6>; 560*56f37e39SGuodong Xu riscv,hart-index-bits = <4>; 561*56f37e39SGuodong Xu riscv,num-guest-ids = <511>; 562*56f37e39SGuodong Xu riscv,num-ids = <511>; 563*56f37e39SGuodong Xu status = "reserved"; 564*56f37e39SGuodong Xu }; 565*56f37e39SGuodong Xu 566*56f37e39SGuodong Xu maplic: interrupt-controller@f1800000 { 567*56f37e39SGuodong Xu compatible = "spacemit,k3-aplic", "riscv,aplic"; 568*56f37e39SGuodong Xu reg = <0x0 0xf1800000 0x0 0x4000>; 569*56f37e39SGuodong Xu #interrupt-cells = <2>; 570*56f37e39SGuodong Xu interrupt-controller; 571*56f37e39SGuodong Xu msi-parent = <&mimsic>; 572*56f37e39SGuodong Xu riscv,children = <&saplic>; 573*56f37e39SGuodong Xu riscv,delegation = <&saplic 1 512>; 574*56f37e39SGuodong Xu riscv,num-sources = <512>; 575*56f37e39SGuodong Xu status = "reserved"; 576*56f37e39SGuodong Xu }; 577*56f37e39SGuodong Xu }; 578*56f37e39SGuodong Xu}; 579