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