1*4882a593Smuzhiyun// SPDX-License-Identifier: GPL-2.0-only 2*4882a593Smuzhiyun/* 3*4882a593Smuzhiyun * Copyright (C) 2017 Synopsys, Inc. (www.synopsys.com) 4*4882a593Smuzhiyun */ 5*4882a593Smuzhiyun 6*4882a593Smuzhiyun/* 7*4882a593Smuzhiyun * Device Tree for ARC HS Development Kit 8*4882a593Smuzhiyun */ 9*4882a593Smuzhiyun/dts-v1/; 10*4882a593Smuzhiyun 11*4882a593Smuzhiyun#include <dt-bindings/gpio/gpio.h> 12*4882a593Smuzhiyun#include <dt-bindings/reset/snps,hsdk-reset.h> 13*4882a593Smuzhiyun 14*4882a593Smuzhiyun/ { 15*4882a593Smuzhiyun model = "snps,hsdk"; 16*4882a593Smuzhiyun compatible = "snps,hsdk"; 17*4882a593Smuzhiyun 18*4882a593Smuzhiyun #address-cells = <2>; 19*4882a593Smuzhiyun #size-cells = <2>; 20*4882a593Smuzhiyun 21*4882a593Smuzhiyun chosen { 22*4882a593Smuzhiyun bootargs = "earlycon=uart8250,mmio32,0xf0005000,115200n8 console=ttyS0,115200n8 debug print-fatal-signals=1"; 23*4882a593Smuzhiyun }; 24*4882a593Smuzhiyun 25*4882a593Smuzhiyun aliases { 26*4882a593Smuzhiyun ethernet = &gmac; 27*4882a593Smuzhiyun }; 28*4882a593Smuzhiyun 29*4882a593Smuzhiyun cpus { 30*4882a593Smuzhiyun #address-cells = <1>; 31*4882a593Smuzhiyun #size-cells = <0>; 32*4882a593Smuzhiyun 33*4882a593Smuzhiyun cpu@0 { 34*4882a593Smuzhiyun device_type = "cpu"; 35*4882a593Smuzhiyun compatible = "snps,archs38"; 36*4882a593Smuzhiyun reg = <0>; 37*4882a593Smuzhiyun clocks = <&core_clk>; 38*4882a593Smuzhiyun }; 39*4882a593Smuzhiyun 40*4882a593Smuzhiyun cpu@1 { 41*4882a593Smuzhiyun device_type = "cpu"; 42*4882a593Smuzhiyun compatible = "snps,archs38"; 43*4882a593Smuzhiyun reg = <1>; 44*4882a593Smuzhiyun clocks = <&core_clk>; 45*4882a593Smuzhiyun }; 46*4882a593Smuzhiyun 47*4882a593Smuzhiyun cpu@2 { 48*4882a593Smuzhiyun device_type = "cpu"; 49*4882a593Smuzhiyun compatible = "snps,archs38"; 50*4882a593Smuzhiyun reg = <2>; 51*4882a593Smuzhiyun clocks = <&core_clk>; 52*4882a593Smuzhiyun }; 53*4882a593Smuzhiyun 54*4882a593Smuzhiyun cpu@3 { 55*4882a593Smuzhiyun device_type = "cpu"; 56*4882a593Smuzhiyun compatible = "snps,archs38"; 57*4882a593Smuzhiyun reg = <3>; 58*4882a593Smuzhiyun clocks = <&core_clk>; 59*4882a593Smuzhiyun }; 60*4882a593Smuzhiyun }; 61*4882a593Smuzhiyun 62*4882a593Smuzhiyun input_clk: input-clk { 63*4882a593Smuzhiyun #clock-cells = <0>; 64*4882a593Smuzhiyun compatible = "fixed-clock"; 65*4882a593Smuzhiyun clock-frequency = <33333333>; 66*4882a593Smuzhiyun }; 67*4882a593Smuzhiyun 68*4882a593Smuzhiyun reg_5v0: regulator-5v0 { 69*4882a593Smuzhiyun compatible = "regulator-fixed"; 70*4882a593Smuzhiyun 71*4882a593Smuzhiyun regulator-name = "5v0-supply"; 72*4882a593Smuzhiyun regulator-min-microvolt = <5000000>; 73*4882a593Smuzhiyun regulator-max-microvolt = <5000000>; 74*4882a593Smuzhiyun }; 75*4882a593Smuzhiyun 76*4882a593Smuzhiyun cpu_intc: cpu-interrupt-controller { 77*4882a593Smuzhiyun compatible = "snps,archs-intc"; 78*4882a593Smuzhiyun interrupt-controller; 79*4882a593Smuzhiyun #interrupt-cells = <1>; 80*4882a593Smuzhiyun }; 81*4882a593Smuzhiyun 82*4882a593Smuzhiyun idu_intc: idu-interrupt-controller { 83*4882a593Smuzhiyun compatible = "snps,archs-idu-intc"; 84*4882a593Smuzhiyun interrupt-controller; 85*4882a593Smuzhiyun #interrupt-cells = <1>; 86*4882a593Smuzhiyun interrupt-parent = <&cpu_intc>; 87*4882a593Smuzhiyun }; 88*4882a593Smuzhiyun 89*4882a593Smuzhiyun arcpct: pct { 90*4882a593Smuzhiyun compatible = "snps,archs-pct"; 91*4882a593Smuzhiyun interrupt-parent = <&cpu_intc>; 92*4882a593Smuzhiyun interrupts = <20>; 93*4882a593Smuzhiyun }; 94*4882a593Smuzhiyun 95*4882a593Smuzhiyun /* TIMER0 with interrupt for clockevent */ 96*4882a593Smuzhiyun timer { 97*4882a593Smuzhiyun compatible = "snps,arc-timer"; 98*4882a593Smuzhiyun interrupts = <16>; 99*4882a593Smuzhiyun interrupt-parent = <&cpu_intc>; 100*4882a593Smuzhiyun clocks = <&core_clk>; 101*4882a593Smuzhiyun }; 102*4882a593Smuzhiyun 103*4882a593Smuzhiyun /* 64-bit Global Free Running Counter */ 104*4882a593Smuzhiyun gfrc { 105*4882a593Smuzhiyun compatible = "snps,archs-timer-gfrc"; 106*4882a593Smuzhiyun clocks = <&core_clk>; 107*4882a593Smuzhiyun }; 108*4882a593Smuzhiyun 109*4882a593Smuzhiyun soc { 110*4882a593Smuzhiyun compatible = "simple-bus"; 111*4882a593Smuzhiyun #address-cells = <1>; 112*4882a593Smuzhiyun #size-cells = <1>; 113*4882a593Smuzhiyun interrupt-parent = <&idu_intc>; 114*4882a593Smuzhiyun 115*4882a593Smuzhiyun ranges = <0x00000000 0x0 0xf0000000 0x10000000>; 116*4882a593Smuzhiyun 117*4882a593Smuzhiyun cgu_rst: reset-controller@8a0 { 118*4882a593Smuzhiyun compatible = "snps,hsdk-reset"; 119*4882a593Smuzhiyun #reset-cells = <1>; 120*4882a593Smuzhiyun reg = <0x8a0 0x4>, <0xff0 0x4>; 121*4882a593Smuzhiyun }; 122*4882a593Smuzhiyun 123*4882a593Smuzhiyun core_clk: core-clk@0 { 124*4882a593Smuzhiyun compatible = "snps,hsdk-core-pll-clock"; 125*4882a593Smuzhiyun reg = <0x00 0x10>, <0x14b8 0x4>; 126*4882a593Smuzhiyun #clock-cells = <0>; 127*4882a593Smuzhiyun clocks = <&input_clk>; 128*4882a593Smuzhiyun 129*4882a593Smuzhiyun /* 130*4882a593Smuzhiyun * Set initial core pll output frequency to 1GHz. 131*4882a593Smuzhiyun * It will be applied at the core pll driver probing 132*4882a593Smuzhiyun * on early boot. 133*4882a593Smuzhiyun */ 134*4882a593Smuzhiyun assigned-clocks = <&core_clk>; 135*4882a593Smuzhiyun assigned-clock-rates = <1000000000>; 136*4882a593Smuzhiyun }; 137*4882a593Smuzhiyun 138*4882a593Smuzhiyun serial: serial@5000 { 139*4882a593Smuzhiyun compatible = "snps,dw-apb-uart"; 140*4882a593Smuzhiyun reg = <0x5000 0x100>; 141*4882a593Smuzhiyun clock-frequency = <33330000>; 142*4882a593Smuzhiyun interrupts = <6>; 143*4882a593Smuzhiyun baud = <115200>; 144*4882a593Smuzhiyun reg-shift = <2>; 145*4882a593Smuzhiyun reg-io-width = <4>; 146*4882a593Smuzhiyun }; 147*4882a593Smuzhiyun 148*4882a593Smuzhiyun gmacclk: gmacclk { 149*4882a593Smuzhiyun compatible = "fixed-clock"; 150*4882a593Smuzhiyun clock-frequency = <400000000>; 151*4882a593Smuzhiyun #clock-cells = <0>; 152*4882a593Smuzhiyun }; 153*4882a593Smuzhiyun 154*4882a593Smuzhiyun mmcclk_ciu: mmcclk-ciu { 155*4882a593Smuzhiyun compatible = "fixed-clock"; 156*4882a593Smuzhiyun /* 157*4882a593Smuzhiyun * DW sdio controller has external ciu clock divider 158*4882a593Smuzhiyun * controlled via register in SDIO IP. Due to its 159*4882a593Smuzhiyun * unexpected default value (it should divide by 1 160*4882a593Smuzhiyun * but it divides by 8) SDIO IP uses wrong clock and 161*4882a593Smuzhiyun * works unstable (see STAR 9001204800) 162*4882a593Smuzhiyun * We switched to the minimum possible value of the 163*4882a593Smuzhiyun * divisor (div-by-2) in HSDK platform code. 164*4882a593Smuzhiyun * So add temporary fix and change clock frequency 165*4882a593Smuzhiyun * to 50000000 Hz until we fix dw sdio driver itself. 166*4882a593Smuzhiyun */ 167*4882a593Smuzhiyun clock-frequency = <50000000>; 168*4882a593Smuzhiyun #clock-cells = <0>; 169*4882a593Smuzhiyun }; 170*4882a593Smuzhiyun 171*4882a593Smuzhiyun mmcclk_biu: mmcclk-biu { 172*4882a593Smuzhiyun compatible = "fixed-clock"; 173*4882a593Smuzhiyun clock-frequency = <400000000>; 174*4882a593Smuzhiyun #clock-cells = <0>; 175*4882a593Smuzhiyun }; 176*4882a593Smuzhiyun 177*4882a593Smuzhiyun gpu_core_clk: gpu-core-clk { 178*4882a593Smuzhiyun compatible = "fixed-clock"; 179*4882a593Smuzhiyun clock-frequency = <400000000>; 180*4882a593Smuzhiyun #clock-cells = <0>; 181*4882a593Smuzhiyun }; 182*4882a593Smuzhiyun 183*4882a593Smuzhiyun gpu_dma_clk: gpu-dma-clk { 184*4882a593Smuzhiyun compatible = "fixed-clock"; 185*4882a593Smuzhiyun clock-frequency = <400000000>; 186*4882a593Smuzhiyun #clock-cells = <0>; 187*4882a593Smuzhiyun }; 188*4882a593Smuzhiyun 189*4882a593Smuzhiyun gpu_cfg_clk: gpu-cfg-clk { 190*4882a593Smuzhiyun compatible = "fixed-clock"; 191*4882a593Smuzhiyun clock-frequency = <200000000>; 192*4882a593Smuzhiyun #clock-cells = <0>; 193*4882a593Smuzhiyun }; 194*4882a593Smuzhiyun 195*4882a593Smuzhiyun dmac_core_clk: dmac-core-clk { 196*4882a593Smuzhiyun compatible = "fixed-clock"; 197*4882a593Smuzhiyun clock-frequency = <400000000>; 198*4882a593Smuzhiyun #clock-cells = <0>; 199*4882a593Smuzhiyun }; 200*4882a593Smuzhiyun 201*4882a593Smuzhiyun dmac_cfg_clk: dmac-gpu-cfg-clk { 202*4882a593Smuzhiyun compatible = "fixed-clock"; 203*4882a593Smuzhiyun clock-frequency = <200000000>; 204*4882a593Smuzhiyun #clock-cells = <0>; 205*4882a593Smuzhiyun }; 206*4882a593Smuzhiyun 207*4882a593Smuzhiyun gmac: ethernet@8000 { 208*4882a593Smuzhiyun #interrupt-cells = <1>; 209*4882a593Smuzhiyun compatible = "snps,dwmac"; 210*4882a593Smuzhiyun reg = <0x8000 0x2000>; 211*4882a593Smuzhiyun interrupts = <10>; 212*4882a593Smuzhiyun interrupt-names = "macirq"; 213*4882a593Smuzhiyun phy-mode = "rgmii-id"; 214*4882a593Smuzhiyun snps,pbl = <32>; 215*4882a593Smuzhiyun snps,multicast-filter-bins = <256>; 216*4882a593Smuzhiyun clocks = <&gmacclk>; 217*4882a593Smuzhiyun clock-names = "stmmaceth"; 218*4882a593Smuzhiyun phy-handle = <&phy0>; 219*4882a593Smuzhiyun resets = <&cgu_rst HSDK_ETH_RESET>; 220*4882a593Smuzhiyun reset-names = "stmmaceth"; 221*4882a593Smuzhiyun mac-address = [00 00 00 00 00 00]; /* Filled in by U-Boot */ 222*4882a593Smuzhiyun dma-coherent; 223*4882a593Smuzhiyun 224*4882a593Smuzhiyun tx-fifo-depth = <4096>; 225*4882a593Smuzhiyun rx-fifo-depth = <4096>; 226*4882a593Smuzhiyun 227*4882a593Smuzhiyun mdio { 228*4882a593Smuzhiyun #address-cells = <1>; 229*4882a593Smuzhiyun #size-cells = <0>; 230*4882a593Smuzhiyun compatible = "snps,dwmac-mdio"; 231*4882a593Smuzhiyun phy0: ethernet-phy@0 { /* Micrel KSZ9031 */ 232*4882a593Smuzhiyun reg = <0>; 233*4882a593Smuzhiyun }; 234*4882a593Smuzhiyun }; 235*4882a593Smuzhiyun }; 236*4882a593Smuzhiyun 237*4882a593Smuzhiyun ohci@60000 { 238*4882a593Smuzhiyun compatible = "snps,hsdk-v1.0-ohci", "generic-ohci"; 239*4882a593Smuzhiyun reg = <0x60000 0x100>; 240*4882a593Smuzhiyun interrupts = <15>; 241*4882a593Smuzhiyun resets = <&cgu_rst HSDK_USB_RESET>; 242*4882a593Smuzhiyun dma-coherent; 243*4882a593Smuzhiyun }; 244*4882a593Smuzhiyun 245*4882a593Smuzhiyun ehci@40000 { 246*4882a593Smuzhiyun compatible = "snps,hsdk-v1.0-ehci", "generic-ehci"; 247*4882a593Smuzhiyun reg = <0x40000 0x100>; 248*4882a593Smuzhiyun interrupts = <15>; 249*4882a593Smuzhiyun resets = <&cgu_rst HSDK_USB_RESET>; 250*4882a593Smuzhiyun dma-coherent; 251*4882a593Smuzhiyun }; 252*4882a593Smuzhiyun 253*4882a593Smuzhiyun mmc@a000 { 254*4882a593Smuzhiyun compatible = "altr,socfpga-dw-mshc"; 255*4882a593Smuzhiyun reg = <0xa000 0x400>; 256*4882a593Smuzhiyun num-slots = <1>; 257*4882a593Smuzhiyun fifo-depth = <16>; 258*4882a593Smuzhiyun card-detect-delay = <200>; 259*4882a593Smuzhiyun clocks = <&mmcclk_biu>, <&mmcclk_ciu>; 260*4882a593Smuzhiyun clock-names = "biu", "ciu"; 261*4882a593Smuzhiyun interrupts = <12>; 262*4882a593Smuzhiyun bus-width = <4>; 263*4882a593Smuzhiyun dma-coherent; 264*4882a593Smuzhiyun }; 265*4882a593Smuzhiyun 266*4882a593Smuzhiyun spi0: spi@20000 { 267*4882a593Smuzhiyun compatible = "snps,dw-apb-ssi"; 268*4882a593Smuzhiyun reg = <0x20000 0x100>; 269*4882a593Smuzhiyun #address-cells = <1>; 270*4882a593Smuzhiyun #size-cells = <0>; 271*4882a593Smuzhiyun interrupts = <16>; 272*4882a593Smuzhiyun num-cs = <2>; 273*4882a593Smuzhiyun reg-io-width = <4>; 274*4882a593Smuzhiyun clocks = <&input_clk>; 275*4882a593Smuzhiyun cs-gpios = <&creg_gpio 0 GPIO_ACTIVE_LOW>, 276*4882a593Smuzhiyun <&creg_gpio 1 GPIO_ACTIVE_LOW>; 277*4882a593Smuzhiyun 278*4882a593Smuzhiyun spi-flash@0 { 279*4882a593Smuzhiyun compatible = "sst26wf016b", "jedec,spi-nor"; 280*4882a593Smuzhiyun reg = <0>; 281*4882a593Smuzhiyun #address-cells = <1>; 282*4882a593Smuzhiyun #size-cells = <1>; 283*4882a593Smuzhiyun spi-max-frequency = <4000000>; 284*4882a593Smuzhiyun }; 285*4882a593Smuzhiyun 286*4882a593Smuzhiyun adc@1 { 287*4882a593Smuzhiyun compatible = "ti,adc108s102"; 288*4882a593Smuzhiyun reg = <1>; 289*4882a593Smuzhiyun vref-supply = <®_5v0>; 290*4882a593Smuzhiyun spi-max-frequency = <1000000>; 291*4882a593Smuzhiyun }; 292*4882a593Smuzhiyun }; 293*4882a593Smuzhiyun 294*4882a593Smuzhiyun creg_gpio: gpio@14b0 { 295*4882a593Smuzhiyun compatible = "snps,creg-gpio-hsdk"; 296*4882a593Smuzhiyun reg = <0x14b0 0x4>; 297*4882a593Smuzhiyun gpio-controller; 298*4882a593Smuzhiyun #gpio-cells = <2>; 299*4882a593Smuzhiyun ngpios = <2>; 300*4882a593Smuzhiyun }; 301*4882a593Smuzhiyun 302*4882a593Smuzhiyun gpio: gpio@3000 { 303*4882a593Smuzhiyun compatible = "snps,dw-apb-gpio"; 304*4882a593Smuzhiyun reg = <0x3000 0x20>; 305*4882a593Smuzhiyun #address-cells = <1>; 306*4882a593Smuzhiyun #size-cells = <0>; 307*4882a593Smuzhiyun 308*4882a593Smuzhiyun gpio_port_a: gpio-controller@0 { 309*4882a593Smuzhiyun compatible = "snps,dw-apb-gpio-port"; 310*4882a593Smuzhiyun gpio-controller; 311*4882a593Smuzhiyun #gpio-cells = <2>; 312*4882a593Smuzhiyun snps,nr-gpios = <24>; 313*4882a593Smuzhiyun reg = <0>; 314*4882a593Smuzhiyun }; 315*4882a593Smuzhiyun }; 316*4882a593Smuzhiyun 317*4882a593Smuzhiyun gpu_3d: gpu@90000 { 318*4882a593Smuzhiyun compatible = "vivante,gc"; 319*4882a593Smuzhiyun reg = <0x90000 0x4000>; 320*4882a593Smuzhiyun clocks = <&gpu_dma_clk>, 321*4882a593Smuzhiyun <&gpu_cfg_clk>, 322*4882a593Smuzhiyun <&gpu_core_clk>, 323*4882a593Smuzhiyun <&gpu_core_clk>; 324*4882a593Smuzhiyun clock-names = "bus", "reg", "core", "shader"; 325*4882a593Smuzhiyun interrupts = <28>; 326*4882a593Smuzhiyun }; 327*4882a593Smuzhiyun 328*4882a593Smuzhiyun dmac: dmac@80000 { 329*4882a593Smuzhiyun compatible = "snps,axi-dma-1.01a"; 330*4882a593Smuzhiyun reg = <0x80000 0x400>; 331*4882a593Smuzhiyun interrupts = <27>; 332*4882a593Smuzhiyun clocks = <&dmac_core_clk>, <&dmac_cfg_clk>; 333*4882a593Smuzhiyun clock-names = "core-clk", "cfgr-clk"; 334*4882a593Smuzhiyun 335*4882a593Smuzhiyun dma-channels = <4>; 336*4882a593Smuzhiyun snps,dma-masters = <2>; 337*4882a593Smuzhiyun snps,data-width = <3>; 338*4882a593Smuzhiyun snps,block-size = <4096 4096 4096 4096>; 339*4882a593Smuzhiyun snps,priority = <0 1 2 3>; 340*4882a593Smuzhiyun snps,axi-max-burst-len = <16>; 341*4882a593Smuzhiyun }; 342*4882a593Smuzhiyun }; 343*4882a593Smuzhiyun 344*4882a593Smuzhiyun memory@80000000 { 345*4882a593Smuzhiyun #address-cells = <2>; 346*4882a593Smuzhiyun #size-cells = <2>; 347*4882a593Smuzhiyun device_type = "memory"; 348*4882a593Smuzhiyun reg = <0x0 0x80000000 0x0 0x40000000>; /* 1 GB lowmem */ 349*4882a593Smuzhiyun /* 0x1 0x00000000 0x0 0x40000000>; 1 GB highmem */ 350*4882a593Smuzhiyun }; 351*4882a593Smuzhiyun}; 352