1*6428fcf2SKeguang Zhang// SPDX-License-Identifier: GPL-2.0 2*6428fcf2SKeguang Zhang/* 3*6428fcf2SKeguang Zhang * Copyright (c) 2023-2025 Keguang Zhang <keguang.zhang@gmail.com> 4*6428fcf2SKeguang Zhang */ 5*6428fcf2SKeguang Zhang 6*6428fcf2SKeguang Zhang/dts-v1/; 7*6428fcf2SKeguang Zhang#include "loongson1.dtsi" 8*6428fcf2SKeguang Zhang 9*6428fcf2SKeguang Zhang/ { 10*6428fcf2SKeguang Zhang cpu_opp_table: opp-table { 11*6428fcf2SKeguang Zhang compatible = "operating-points-v2"; 12*6428fcf2SKeguang Zhang opp-shared; 13*6428fcf2SKeguang Zhang 14*6428fcf2SKeguang Zhang opp-44000000 { 15*6428fcf2SKeguang Zhang opp-hz = /bits/ 64 <44000000>; 16*6428fcf2SKeguang Zhang }; 17*6428fcf2SKeguang Zhang opp-47142000 { 18*6428fcf2SKeguang Zhang opp-hz = /bits/ 64 <47142000>; 19*6428fcf2SKeguang Zhang }; 20*6428fcf2SKeguang Zhang opp-50769000 { 21*6428fcf2SKeguang Zhang opp-hz = /bits/ 64 <50769000>; 22*6428fcf2SKeguang Zhang }; 23*6428fcf2SKeguang Zhang opp-55000000 { 24*6428fcf2SKeguang Zhang opp-hz = /bits/ 64 <55000000>; 25*6428fcf2SKeguang Zhang }; 26*6428fcf2SKeguang Zhang opp-60000000 { 27*6428fcf2SKeguang Zhang opp-hz = /bits/ 64 <60000000>; 28*6428fcf2SKeguang Zhang }; 29*6428fcf2SKeguang Zhang opp-66000000 { 30*6428fcf2SKeguang Zhang opp-hz = /bits/ 64 <66000000>; 31*6428fcf2SKeguang Zhang }; 32*6428fcf2SKeguang Zhang opp-73333000 { 33*6428fcf2SKeguang Zhang opp-hz = /bits/ 64 <73333000>; 34*6428fcf2SKeguang Zhang }; 35*6428fcf2SKeguang Zhang opp-82500000 { 36*6428fcf2SKeguang Zhang opp-hz = /bits/ 64 <82500000>; 37*6428fcf2SKeguang Zhang }; 38*6428fcf2SKeguang Zhang opp-94285000 { 39*6428fcf2SKeguang Zhang opp-hz = /bits/ 64 <94285000>; 40*6428fcf2SKeguang Zhang }; 41*6428fcf2SKeguang Zhang opp-110000000 { 42*6428fcf2SKeguang Zhang opp-hz = /bits/ 64 <110000000>; 43*6428fcf2SKeguang Zhang }; 44*6428fcf2SKeguang Zhang opp-132000000 { 45*6428fcf2SKeguang Zhang opp-hz = /bits/ 64 <132000000>; 46*6428fcf2SKeguang Zhang }; 47*6428fcf2SKeguang Zhang opp-165000000 { 48*6428fcf2SKeguang Zhang opp-hz = /bits/ 64 <165000000>; 49*6428fcf2SKeguang Zhang }; 50*6428fcf2SKeguang Zhang opp-220000000 { 51*6428fcf2SKeguang Zhang opp-hz = /bits/ 64 <220000000>; 52*6428fcf2SKeguang Zhang }; 53*6428fcf2SKeguang Zhang }; 54*6428fcf2SKeguang Zhang 55*6428fcf2SKeguang Zhang clkc: clock-controller@1fe78030 { 56*6428fcf2SKeguang Zhang compatible = "loongson,ls1b-clk"; 57*6428fcf2SKeguang Zhang reg = <0x1fe78030 0x8>; 58*6428fcf2SKeguang Zhang clocks = <&xtal>; 59*6428fcf2SKeguang Zhang #clock-cells = <1>; 60*6428fcf2SKeguang Zhang }; 61*6428fcf2SKeguang Zhang}; 62*6428fcf2SKeguang Zhang 63*6428fcf2SKeguang Zhang&soc { 64*6428fcf2SKeguang Zhang syscon: syscon@420 { 65*6428fcf2SKeguang Zhang compatible = "loongson,ls1b-syscon", "syscon"; 66*6428fcf2SKeguang Zhang reg = <0x420 0x8>; 67*6428fcf2SKeguang Zhang }; 68*6428fcf2SKeguang Zhang 69*6428fcf2SKeguang Zhang dma: dma-controller@1160 { 70*6428fcf2SKeguang Zhang compatible = "loongson,ls1b-apbdma"; 71*6428fcf2SKeguang Zhang reg = <0x1160 0x4>; 72*6428fcf2SKeguang Zhang interrupt-parent = <&intc0>; 73*6428fcf2SKeguang Zhang interrupts = <13 IRQ_TYPE_EDGE_RISING>, 74*6428fcf2SKeguang Zhang <14 IRQ_TYPE_EDGE_RISING>, 75*6428fcf2SKeguang Zhang <15 IRQ_TYPE_EDGE_RISING>; 76*6428fcf2SKeguang Zhang interrupt-names = "ch0", "ch1", "ch2"; 77*6428fcf2SKeguang Zhang #dma-cells = <1>; 78*6428fcf2SKeguang Zhang }; 79*6428fcf2SKeguang Zhang 80*6428fcf2SKeguang Zhang ehci: usb@100000 { 81*6428fcf2SKeguang Zhang compatible = "generic-ehci"; 82*6428fcf2SKeguang Zhang reg = <0x100000 0x100>; 83*6428fcf2SKeguang Zhang interrupt-parent = <&intc1>; 84*6428fcf2SKeguang Zhang interrupts = <0 IRQ_TYPE_LEVEL_HIGH>; 85*6428fcf2SKeguang Zhang status = "disabled"; 86*6428fcf2SKeguang Zhang }; 87*6428fcf2SKeguang Zhang 88*6428fcf2SKeguang Zhang ohci: usb@108000 { 89*6428fcf2SKeguang Zhang compatible = "generic-ohci"; 90*6428fcf2SKeguang Zhang reg = <0x108000 0x100>; 91*6428fcf2SKeguang Zhang interrupt-parent = <&intc1>; 92*6428fcf2SKeguang Zhang interrupts = <1 IRQ_TYPE_LEVEL_HIGH>; 93*6428fcf2SKeguang Zhang status = "disabled"; 94*6428fcf2SKeguang Zhang }; 95*6428fcf2SKeguang Zhang 96*6428fcf2SKeguang Zhang gmac0: ethernet@110000 { 97*6428fcf2SKeguang Zhang compatible = "loongson,ls1b-gmac", "snps,dwmac-3.50a"; 98*6428fcf2SKeguang Zhang reg = <0x110000 0x10000>; 99*6428fcf2SKeguang Zhang clocks = <&clkc LS1X_CLKID_AHB>; 100*6428fcf2SKeguang Zhang clock-names = "stmmaceth"; 101*6428fcf2SKeguang Zhang interrupt-parent = <&intc1>; 102*6428fcf2SKeguang Zhang interrupts = <2 IRQ_TYPE_LEVEL_HIGH>; 103*6428fcf2SKeguang Zhang interrupt-names = "macirq"; 104*6428fcf2SKeguang Zhang loongson,ls1-syscon = <&syscon>; 105*6428fcf2SKeguang Zhang snps,pbl = <1>; 106*6428fcf2SKeguang Zhang status = "disabled"; 107*6428fcf2SKeguang Zhang }; 108*6428fcf2SKeguang Zhang 109*6428fcf2SKeguang Zhang gmac1: ethernet@120000 { 110*6428fcf2SKeguang Zhang compatible = "loongson,ls1b-gmac", "snps,dwmac-3.50a"; 111*6428fcf2SKeguang Zhang reg = <0x120000 0x10000>; 112*6428fcf2SKeguang Zhang clocks = <&clkc LS1X_CLKID_AHB>; 113*6428fcf2SKeguang Zhang clock-names = "stmmaceth"; 114*6428fcf2SKeguang Zhang interrupt-parent = <&intc1>; 115*6428fcf2SKeguang Zhang interrupts = <3 IRQ_TYPE_LEVEL_HIGH>; 116*6428fcf2SKeguang Zhang interrupt-names = "macirq"; 117*6428fcf2SKeguang Zhang loongson,ls1-syscon = <&syscon>; 118*6428fcf2SKeguang Zhang snps,pbl = <1>; 119*6428fcf2SKeguang Zhang status = "disabled"; 120*6428fcf2SKeguang Zhang }; 121*6428fcf2SKeguang Zhang}; 122*6428fcf2SKeguang Zhang 123*6428fcf2SKeguang Zhang&apb { 124*6428fcf2SKeguang Zhang clocksource: timer@1c030 { 125*6428fcf2SKeguang Zhang compatible = "loongson,ls1b-pwmtimer"; 126*6428fcf2SKeguang Zhang reg = <0x1c030 0x10>; 127*6428fcf2SKeguang Zhang clocks = <&clkc LS1X_CLKID_APB>; 128*6428fcf2SKeguang Zhang interrupt-parent = <&intc0>; 129*6428fcf2SKeguang Zhang interrupts = <20 IRQ_TYPE_LEVEL_HIGH>; 130*6428fcf2SKeguang Zhang }; 131*6428fcf2SKeguang Zhang 132*6428fcf2SKeguang Zhang watchdog: watchdog@1c060 { 133*6428fcf2SKeguang Zhang compatible = "loongson,ls1b-wdt"; 134*6428fcf2SKeguang Zhang reg = <0x1c060 0xc>; 135*6428fcf2SKeguang Zhang clocks = <&clkc LS1X_CLKID_APB>; 136*6428fcf2SKeguang Zhang status = "disabled"; 137*6428fcf2SKeguang Zhang }; 138*6428fcf2SKeguang Zhang 139*6428fcf2SKeguang Zhang rtc: rtc@24000 { 140*6428fcf2SKeguang Zhang compatible = "loongson,ls1b-rtc"; 141*6428fcf2SKeguang Zhang reg = <0x24000 0x78>; 142*6428fcf2SKeguang Zhang interrupt-parent = <&intc0>; 143*6428fcf2SKeguang Zhang interrupts = <24 IRQ_TYPE_LEVEL_HIGH>; 144*6428fcf2SKeguang Zhang status = "disabled"; 145*6428fcf2SKeguang Zhang }; 146*6428fcf2SKeguang Zhang 147*6428fcf2SKeguang Zhang ac97: audio-controller@34000 { 148*6428fcf2SKeguang Zhang compatible = "loongson,ls1b-ac97"; 149*6428fcf2SKeguang Zhang reg = <0x34000 0x60>, <0x32420 0x4>, <0x34c4c 0x4>; 150*6428fcf2SKeguang Zhang reg-names = "ac97", "audio-tx", "audio-rx"; 151*6428fcf2SKeguang Zhang dmas = <&dma 1>, <&dma 2>; 152*6428fcf2SKeguang Zhang dma-names = "tx", "rx"; 153*6428fcf2SKeguang Zhang #sound-dai-cells = <0>; 154*6428fcf2SKeguang Zhang status = "disabled"; 155*6428fcf2SKeguang Zhang }; 156*6428fcf2SKeguang Zhang 157*6428fcf2SKeguang Zhang nand: nand-controller@38000 { 158*6428fcf2SKeguang Zhang compatible = "loongson,ls1b-nand-controller"; 159*6428fcf2SKeguang Zhang reg = <0x38000 0x24>, <0x38040 0x4>; 160*6428fcf2SKeguang Zhang reg-names = "nand", "nand-dma"; 161*6428fcf2SKeguang Zhang dmas = <&dma 0>; 162*6428fcf2SKeguang Zhang dma-names = "rxtx"; 163*6428fcf2SKeguang Zhang #address-cells = <1>; 164*6428fcf2SKeguang Zhang #size-cells = <0>; 165*6428fcf2SKeguang Zhang status = "disabled"; 166*6428fcf2SKeguang Zhang 167*6428fcf2SKeguang Zhang nand@0 { 168*6428fcf2SKeguang Zhang reg = <0>; 169*6428fcf2SKeguang Zhang label = "ls1x-nand"; 170*6428fcf2SKeguang Zhang nand-use-soft-ecc-engine; 171*6428fcf2SKeguang Zhang nand-ecc-algo = "hamming"; 172*6428fcf2SKeguang Zhang }; 173*6428fcf2SKeguang Zhang }; 174*6428fcf2SKeguang Zhang}; 175*6428fcf2SKeguang Zhang 176*6428fcf2SKeguang Zhang&cpu0 { 177*6428fcf2SKeguang Zhang operating-points-v2 = <&cpu_opp_table>; 178*6428fcf2SKeguang Zhang}; 179*6428fcf2SKeguang Zhang 180*6428fcf2SKeguang Zhang&gpio0 { 181*6428fcf2SKeguang Zhang ngpios = <31>; 182*6428fcf2SKeguang Zhang}; 183*6428fcf2SKeguang Zhang 184*6428fcf2SKeguang Zhang&gpio1 { 185*6428fcf2SKeguang Zhang ngpios = <30>; 186*6428fcf2SKeguang Zhang}; 187*6428fcf2SKeguang Zhang 188*6428fcf2SKeguang Zhang&uart1 { 189*6428fcf2SKeguang Zhang interrupts = <3 IRQ_TYPE_LEVEL_HIGH>; 190*6428fcf2SKeguang Zhang}; 191*6428fcf2SKeguang Zhang 192*6428fcf2SKeguang Zhang&uart2 { 193*6428fcf2SKeguang Zhang interrupts = <4 IRQ_TYPE_LEVEL_HIGH>; 194*6428fcf2SKeguang Zhang}; 195*6428fcf2SKeguang Zhang 196*6428fcf2SKeguang Zhang&uart3 { 197*6428fcf2SKeguang Zhang interrupts = <5 IRQ_TYPE_LEVEL_HIGH>; 198*6428fcf2SKeguang Zhang}; 199