18c2ecf20Sopenharmony_ci// SPDX-License-Identifier: GPL-2.0-only 28c2ecf20Sopenharmony_ci/* 38c2ecf20Sopenharmony_ci * Copyright (C) 2017 Synopsys, Inc. (www.synopsys.com) 48c2ecf20Sopenharmony_ci */ 58c2ecf20Sopenharmony_ci 68c2ecf20Sopenharmony_ci/* 78c2ecf20Sopenharmony_ci * Device Tree for ARC HS Development Kit 88c2ecf20Sopenharmony_ci */ 98c2ecf20Sopenharmony_ci/dts-v1/; 108c2ecf20Sopenharmony_ci 118c2ecf20Sopenharmony_ci#include <dt-bindings/gpio/gpio.h> 128c2ecf20Sopenharmony_ci#include <dt-bindings/reset/snps,hsdk-reset.h> 138c2ecf20Sopenharmony_ci 148c2ecf20Sopenharmony_ci/ { 158c2ecf20Sopenharmony_ci model = "snps,hsdk"; 168c2ecf20Sopenharmony_ci compatible = "snps,hsdk"; 178c2ecf20Sopenharmony_ci 188c2ecf20Sopenharmony_ci #address-cells = <2>; 198c2ecf20Sopenharmony_ci #size-cells = <2>; 208c2ecf20Sopenharmony_ci 218c2ecf20Sopenharmony_ci chosen { 228c2ecf20Sopenharmony_ci bootargs = "earlycon=uart8250,mmio32,0xf0005000,115200n8 console=ttyS0,115200n8 debug print-fatal-signals=1"; 238c2ecf20Sopenharmony_ci }; 248c2ecf20Sopenharmony_ci 258c2ecf20Sopenharmony_ci aliases { 268c2ecf20Sopenharmony_ci ethernet = &gmac; 278c2ecf20Sopenharmony_ci }; 288c2ecf20Sopenharmony_ci 298c2ecf20Sopenharmony_ci cpus { 308c2ecf20Sopenharmony_ci #address-cells = <1>; 318c2ecf20Sopenharmony_ci #size-cells = <0>; 328c2ecf20Sopenharmony_ci 338c2ecf20Sopenharmony_ci cpu@0 { 348c2ecf20Sopenharmony_ci device_type = "cpu"; 358c2ecf20Sopenharmony_ci compatible = "snps,archs38"; 368c2ecf20Sopenharmony_ci reg = <0>; 378c2ecf20Sopenharmony_ci clocks = <&core_clk>; 388c2ecf20Sopenharmony_ci }; 398c2ecf20Sopenharmony_ci 408c2ecf20Sopenharmony_ci cpu@1 { 418c2ecf20Sopenharmony_ci device_type = "cpu"; 428c2ecf20Sopenharmony_ci compatible = "snps,archs38"; 438c2ecf20Sopenharmony_ci reg = <1>; 448c2ecf20Sopenharmony_ci clocks = <&core_clk>; 458c2ecf20Sopenharmony_ci }; 468c2ecf20Sopenharmony_ci 478c2ecf20Sopenharmony_ci cpu@2 { 488c2ecf20Sopenharmony_ci device_type = "cpu"; 498c2ecf20Sopenharmony_ci compatible = "snps,archs38"; 508c2ecf20Sopenharmony_ci reg = <2>; 518c2ecf20Sopenharmony_ci clocks = <&core_clk>; 528c2ecf20Sopenharmony_ci }; 538c2ecf20Sopenharmony_ci 548c2ecf20Sopenharmony_ci cpu@3 { 558c2ecf20Sopenharmony_ci device_type = "cpu"; 568c2ecf20Sopenharmony_ci compatible = "snps,archs38"; 578c2ecf20Sopenharmony_ci reg = <3>; 588c2ecf20Sopenharmony_ci clocks = <&core_clk>; 598c2ecf20Sopenharmony_ci }; 608c2ecf20Sopenharmony_ci }; 618c2ecf20Sopenharmony_ci 628c2ecf20Sopenharmony_ci input_clk: input-clk { 638c2ecf20Sopenharmony_ci #clock-cells = <0>; 648c2ecf20Sopenharmony_ci compatible = "fixed-clock"; 658c2ecf20Sopenharmony_ci clock-frequency = <33333333>; 668c2ecf20Sopenharmony_ci }; 678c2ecf20Sopenharmony_ci 688c2ecf20Sopenharmony_ci reg_5v0: regulator-5v0 { 698c2ecf20Sopenharmony_ci compatible = "regulator-fixed"; 708c2ecf20Sopenharmony_ci 718c2ecf20Sopenharmony_ci regulator-name = "5v0-supply"; 728c2ecf20Sopenharmony_ci regulator-min-microvolt = <5000000>; 738c2ecf20Sopenharmony_ci regulator-max-microvolt = <5000000>; 748c2ecf20Sopenharmony_ci }; 758c2ecf20Sopenharmony_ci 768c2ecf20Sopenharmony_ci cpu_intc: cpu-interrupt-controller { 778c2ecf20Sopenharmony_ci compatible = "snps,archs-intc"; 788c2ecf20Sopenharmony_ci interrupt-controller; 798c2ecf20Sopenharmony_ci #interrupt-cells = <1>; 808c2ecf20Sopenharmony_ci }; 818c2ecf20Sopenharmony_ci 828c2ecf20Sopenharmony_ci idu_intc: idu-interrupt-controller { 838c2ecf20Sopenharmony_ci compatible = "snps,archs-idu-intc"; 848c2ecf20Sopenharmony_ci interrupt-controller; 858c2ecf20Sopenharmony_ci #interrupt-cells = <1>; 868c2ecf20Sopenharmony_ci interrupt-parent = <&cpu_intc>; 878c2ecf20Sopenharmony_ci }; 888c2ecf20Sopenharmony_ci 898c2ecf20Sopenharmony_ci arcpct: pct { 908c2ecf20Sopenharmony_ci compatible = "snps,archs-pct"; 918c2ecf20Sopenharmony_ci interrupt-parent = <&cpu_intc>; 928c2ecf20Sopenharmony_ci interrupts = <20>; 938c2ecf20Sopenharmony_ci }; 948c2ecf20Sopenharmony_ci 958c2ecf20Sopenharmony_ci /* TIMER0 with interrupt for clockevent */ 968c2ecf20Sopenharmony_ci timer { 978c2ecf20Sopenharmony_ci compatible = "snps,arc-timer"; 988c2ecf20Sopenharmony_ci interrupts = <16>; 998c2ecf20Sopenharmony_ci interrupt-parent = <&cpu_intc>; 1008c2ecf20Sopenharmony_ci clocks = <&core_clk>; 1018c2ecf20Sopenharmony_ci }; 1028c2ecf20Sopenharmony_ci 1038c2ecf20Sopenharmony_ci /* 64-bit Global Free Running Counter */ 1048c2ecf20Sopenharmony_ci gfrc { 1058c2ecf20Sopenharmony_ci compatible = "snps,archs-timer-gfrc"; 1068c2ecf20Sopenharmony_ci clocks = <&core_clk>; 1078c2ecf20Sopenharmony_ci }; 1088c2ecf20Sopenharmony_ci 1098c2ecf20Sopenharmony_ci soc { 1108c2ecf20Sopenharmony_ci compatible = "simple-bus"; 1118c2ecf20Sopenharmony_ci #address-cells = <1>; 1128c2ecf20Sopenharmony_ci #size-cells = <1>; 1138c2ecf20Sopenharmony_ci interrupt-parent = <&idu_intc>; 1148c2ecf20Sopenharmony_ci 1158c2ecf20Sopenharmony_ci ranges = <0x00000000 0x0 0xf0000000 0x10000000>; 1168c2ecf20Sopenharmony_ci 1178c2ecf20Sopenharmony_ci cgu_rst: reset-controller@8a0 { 1188c2ecf20Sopenharmony_ci compatible = "snps,hsdk-reset"; 1198c2ecf20Sopenharmony_ci #reset-cells = <1>; 1208c2ecf20Sopenharmony_ci reg = <0x8a0 0x4>, <0xff0 0x4>; 1218c2ecf20Sopenharmony_ci }; 1228c2ecf20Sopenharmony_ci 1238c2ecf20Sopenharmony_ci core_clk: core-clk@0 { 1248c2ecf20Sopenharmony_ci compatible = "snps,hsdk-core-pll-clock"; 1258c2ecf20Sopenharmony_ci reg = <0x00 0x10>, <0x14b8 0x4>; 1268c2ecf20Sopenharmony_ci #clock-cells = <0>; 1278c2ecf20Sopenharmony_ci clocks = <&input_clk>; 1288c2ecf20Sopenharmony_ci 1298c2ecf20Sopenharmony_ci /* 1308c2ecf20Sopenharmony_ci * Set initial core pll output frequency to 1GHz. 1318c2ecf20Sopenharmony_ci * It will be applied at the core pll driver probing 1328c2ecf20Sopenharmony_ci * on early boot. 1338c2ecf20Sopenharmony_ci */ 1348c2ecf20Sopenharmony_ci assigned-clocks = <&core_clk>; 1358c2ecf20Sopenharmony_ci assigned-clock-rates = <1000000000>; 1368c2ecf20Sopenharmony_ci }; 1378c2ecf20Sopenharmony_ci 1388c2ecf20Sopenharmony_ci serial: serial@5000 { 1398c2ecf20Sopenharmony_ci compatible = "snps,dw-apb-uart"; 1408c2ecf20Sopenharmony_ci reg = <0x5000 0x100>; 1418c2ecf20Sopenharmony_ci clock-frequency = <33330000>; 1428c2ecf20Sopenharmony_ci interrupts = <6>; 1438c2ecf20Sopenharmony_ci baud = <115200>; 1448c2ecf20Sopenharmony_ci reg-shift = <2>; 1458c2ecf20Sopenharmony_ci reg-io-width = <4>; 1468c2ecf20Sopenharmony_ci }; 1478c2ecf20Sopenharmony_ci 1488c2ecf20Sopenharmony_ci gmacclk: gmacclk { 1498c2ecf20Sopenharmony_ci compatible = "fixed-clock"; 1508c2ecf20Sopenharmony_ci clock-frequency = <400000000>; 1518c2ecf20Sopenharmony_ci #clock-cells = <0>; 1528c2ecf20Sopenharmony_ci }; 1538c2ecf20Sopenharmony_ci 1548c2ecf20Sopenharmony_ci mmcclk_ciu: mmcclk-ciu { 1558c2ecf20Sopenharmony_ci compatible = "fixed-clock"; 1568c2ecf20Sopenharmony_ci /* 1578c2ecf20Sopenharmony_ci * DW sdio controller has external ciu clock divider 1588c2ecf20Sopenharmony_ci * controlled via register in SDIO IP. Due to its 1598c2ecf20Sopenharmony_ci * unexpected default value (it should divide by 1 1608c2ecf20Sopenharmony_ci * but it divides by 8) SDIO IP uses wrong clock and 1618c2ecf20Sopenharmony_ci * works unstable (see STAR 9001204800) 1628c2ecf20Sopenharmony_ci * We switched to the minimum possible value of the 1638c2ecf20Sopenharmony_ci * divisor (div-by-2) in HSDK platform code. 1648c2ecf20Sopenharmony_ci * So add temporary fix and change clock frequency 1658c2ecf20Sopenharmony_ci * to 50000000 Hz until we fix dw sdio driver itself. 1668c2ecf20Sopenharmony_ci */ 1678c2ecf20Sopenharmony_ci clock-frequency = <50000000>; 1688c2ecf20Sopenharmony_ci #clock-cells = <0>; 1698c2ecf20Sopenharmony_ci }; 1708c2ecf20Sopenharmony_ci 1718c2ecf20Sopenharmony_ci mmcclk_biu: mmcclk-biu { 1728c2ecf20Sopenharmony_ci compatible = "fixed-clock"; 1738c2ecf20Sopenharmony_ci clock-frequency = <400000000>; 1748c2ecf20Sopenharmony_ci #clock-cells = <0>; 1758c2ecf20Sopenharmony_ci }; 1768c2ecf20Sopenharmony_ci 1778c2ecf20Sopenharmony_ci gpu_core_clk: gpu-core-clk { 1788c2ecf20Sopenharmony_ci compatible = "fixed-clock"; 1798c2ecf20Sopenharmony_ci clock-frequency = <400000000>; 1808c2ecf20Sopenharmony_ci #clock-cells = <0>; 1818c2ecf20Sopenharmony_ci }; 1828c2ecf20Sopenharmony_ci 1838c2ecf20Sopenharmony_ci gpu_dma_clk: gpu-dma-clk { 1848c2ecf20Sopenharmony_ci compatible = "fixed-clock"; 1858c2ecf20Sopenharmony_ci clock-frequency = <400000000>; 1868c2ecf20Sopenharmony_ci #clock-cells = <0>; 1878c2ecf20Sopenharmony_ci }; 1888c2ecf20Sopenharmony_ci 1898c2ecf20Sopenharmony_ci gpu_cfg_clk: gpu-cfg-clk { 1908c2ecf20Sopenharmony_ci compatible = "fixed-clock"; 1918c2ecf20Sopenharmony_ci clock-frequency = <200000000>; 1928c2ecf20Sopenharmony_ci #clock-cells = <0>; 1938c2ecf20Sopenharmony_ci }; 1948c2ecf20Sopenharmony_ci 1958c2ecf20Sopenharmony_ci dmac_core_clk: dmac-core-clk { 1968c2ecf20Sopenharmony_ci compatible = "fixed-clock"; 1978c2ecf20Sopenharmony_ci clock-frequency = <400000000>; 1988c2ecf20Sopenharmony_ci #clock-cells = <0>; 1998c2ecf20Sopenharmony_ci }; 2008c2ecf20Sopenharmony_ci 2018c2ecf20Sopenharmony_ci dmac_cfg_clk: dmac-gpu-cfg-clk { 2028c2ecf20Sopenharmony_ci compatible = "fixed-clock"; 2038c2ecf20Sopenharmony_ci clock-frequency = <200000000>; 2048c2ecf20Sopenharmony_ci #clock-cells = <0>; 2058c2ecf20Sopenharmony_ci }; 2068c2ecf20Sopenharmony_ci 2078c2ecf20Sopenharmony_ci gmac: ethernet@8000 { 2088c2ecf20Sopenharmony_ci #interrupt-cells = <1>; 2098c2ecf20Sopenharmony_ci compatible = "snps,dwmac"; 2108c2ecf20Sopenharmony_ci reg = <0x8000 0x2000>; 2118c2ecf20Sopenharmony_ci interrupts = <10>; 2128c2ecf20Sopenharmony_ci interrupt-names = "macirq"; 2138c2ecf20Sopenharmony_ci phy-mode = "rgmii-id"; 2148c2ecf20Sopenharmony_ci snps,pbl = <32>; 2158c2ecf20Sopenharmony_ci snps,multicast-filter-bins = <256>; 2168c2ecf20Sopenharmony_ci clocks = <&gmacclk>; 2178c2ecf20Sopenharmony_ci clock-names = "stmmaceth"; 2188c2ecf20Sopenharmony_ci phy-handle = <&phy0>; 2198c2ecf20Sopenharmony_ci resets = <&cgu_rst HSDK_ETH_RESET>; 2208c2ecf20Sopenharmony_ci reset-names = "stmmaceth"; 2218c2ecf20Sopenharmony_ci mac-address = [00 00 00 00 00 00]; /* Filled in by U-Boot */ 2228c2ecf20Sopenharmony_ci dma-coherent; 2238c2ecf20Sopenharmony_ci 2248c2ecf20Sopenharmony_ci tx-fifo-depth = <4096>; 2258c2ecf20Sopenharmony_ci rx-fifo-depth = <4096>; 2268c2ecf20Sopenharmony_ci 2278c2ecf20Sopenharmony_ci mdio { 2288c2ecf20Sopenharmony_ci #address-cells = <1>; 2298c2ecf20Sopenharmony_ci #size-cells = <0>; 2308c2ecf20Sopenharmony_ci compatible = "snps,dwmac-mdio"; 2318c2ecf20Sopenharmony_ci phy0: ethernet-phy@0 { /* Micrel KSZ9031 */ 2328c2ecf20Sopenharmony_ci reg = <0>; 2338c2ecf20Sopenharmony_ci }; 2348c2ecf20Sopenharmony_ci }; 2358c2ecf20Sopenharmony_ci }; 2368c2ecf20Sopenharmony_ci 2378c2ecf20Sopenharmony_ci ohci@60000 { 2388c2ecf20Sopenharmony_ci compatible = "snps,hsdk-v1.0-ohci", "generic-ohci"; 2398c2ecf20Sopenharmony_ci reg = <0x60000 0x100>; 2408c2ecf20Sopenharmony_ci interrupts = <15>; 2418c2ecf20Sopenharmony_ci resets = <&cgu_rst HSDK_USB_RESET>; 2428c2ecf20Sopenharmony_ci dma-coherent; 2438c2ecf20Sopenharmony_ci }; 2448c2ecf20Sopenharmony_ci 2458c2ecf20Sopenharmony_ci ehci@40000 { 2468c2ecf20Sopenharmony_ci compatible = "snps,hsdk-v1.0-ehci", "generic-ehci"; 2478c2ecf20Sopenharmony_ci reg = <0x40000 0x100>; 2488c2ecf20Sopenharmony_ci interrupts = <15>; 2498c2ecf20Sopenharmony_ci resets = <&cgu_rst HSDK_USB_RESET>; 2508c2ecf20Sopenharmony_ci dma-coherent; 2518c2ecf20Sopenharmony_ci }; 2528c2ecf20Sopenharmony_ci 2538c2ecf20Sopenharmony_ci mmc@a000 { 2548c2ecf20Sopenharmony_ci compatible = "altr,socfpga-dw-mshc"; 2558c2ecf20Sopenharmony_ci reg = <0xa000 0x400>; 2568c2ecf20Sopenharmony_ci num-slots = <1>; 2578c2ecf20Sopenharmony_ci fifo-depth = <16>; 2588c2ecf20Sopenharmony_ci card-detect-delay = <200>; 2598c2ecf20Sopenharmony_ci clocks = <&mmcclk_biu>, <&mmcclk_ciu>; 2608c2ecf20Sopenharmony_ci clock-names = "biu", "ciu"; 2618c2ecf20Sopenharmony_ci interrupts = <12>; 2628c2ecf20Sopenharmony_ci bus-width = <4>; 2638c2ecf20Sopenharmony_ci dma-coherent; 2648c2ecf20Sopenharmony_ci }; 2658c2ecf20Sopenharmony_ci 2668c2ecf20Sopenharmony_ci spi0: spi@20000 { 2678c2ecf20Sopenharmony_ci compatible = "snps,dw-apb-ssi"; 2688c2ecf20Sopenharmony_ci reg = <0x20000 0x100>; 2698c2ecf20Sopenharmony_ci #address-cells = <1>; 2708c2ecf20Sopenharmony_ci #size-cells = <0>; 2718c2ecf20Sopenharmony_ci interrupts = <16>; 2728c2ecf20Sopenharmony_ci num-cs = <2>; 2738c2ecf20Sopenharmony_ci reg-io-width = <4>; 2748c2ecf20Sopenharmony_ci clocks = <&input_clk>; 2758c2ecf20Sopenharmony_ci cs-gpios = <&creg_gpio 0 GPIO_ACTIVE_LOW>, 2768c2ecf20Sopenharmony_ci <&creg_gpio 1 GPIO_ACTIVE_LOW>; 2778c2ecf20Sopenharmony_ci 2788c2ecf20Sopenharmony_ci spi-flash@0 { 2798c2ecf20Sopenharmony_ci compatible = "sst26wf016b", "jedec,spi-nor"; 2808c2ecf20Sopenharmony_ci reg = <0>; 2818c2ecf20Sopenharmony_ci #address-cells = <1>; 2828c2ecf20Sopenharmony_ci #size-cells = <1>; 2838c2ecf20Sopenharmony_ci spi-max-frequency = <4000000>; 2848c2ecf20Sopenharmony_ci }; 2858c2ecf20Sopenharmony_ci 2868c2ecf20Sopenharmony_ci adc@1 { 2878c2ecf20Sopenharmony_ci compatible = "ti,adc108s102"; 2888c2ecf20Sopenharmony_ci reg = <1>; 2898c2ecf20Sopenharmony_ci vref-supply = <®_5v0>; 2908c2ecf20Sopenharmony_ci spi-max-frequency = <1000000>; 2918c2ecf20Sopenharmony_ci }; 2928c2ecf20Sopenharmony_ci }; 2938c2ecf20Sopenharmony_ci 2948c2ecf20Sopenharmony_ci creg_gpio: gpio@14b0 { 2958c2ecf20Sopenharmony_ci compatible = "snps,creg-gpio-hsdk"; 2968c2ecf20Sopenharmony_ci reg = <0x14b0 0x4>; 2978c2ecf20Sopenharmony_ci gpio-controller; 2988c2ecf20Sopenharmony_ci #gpio-cells = <2>; 2998c2ecf20Sopenharmony_ci ngpios = <2>; 3008c2ecf20Sopenharmony_ci }; 3018c2ecf20Sopenharmony_ci 3028c2ecf20Sopenharmony_ci gpio: gpio@3000 { 3038c2ecf20Sopenharmony_ci compatible = "snps,dw-apb-gpio"; 3048c2ecf20Sopenharmony_ci reg = <0x3000 0x20>; 3058c2ecf20Sopenharmony_ci #address-cells = <1>; 3068c2ecf20Sopenharmony_ci #size-cells = <0>; 3078c2ecf20Sopenharmony_ci 3088c2ecf20Sopenharmony_ci gpio_port_a: gpio-controller@0 { 3098c2ecf20Sopenharmony_ci compatible = "snps,dw-apb-gpio-port"; 3108c2ecf20Sopenharmony_ci gpio-controller; 3118c2ecf20Sopenharmony_ci #gpio-cells = <2>; 3128c2ecf20Sopenharmony_ci snps,nr-gpios = <24>; 3138c2ecf20Sopenharmony_ci reg = <0>; 3148c2ecf20Sopenharmony_ci }; 3158c2ecf20Sopenharmony_ci }; 3168c2ecf20Sopenharmony_ci 3178c2ecf20Sopenharmony_ci gpu_3d: gpu@90000 { 3188c2ecf20Sopenharmony_ci compatible = "vivante,gc"; 3198c2ecf20Sopenharmony_ci reg = <0x90000 0x4000>; 3208c2ecf20Sopenharmony_ci clocks = <&gpu_dma_clk>, 3218c2ecf20Sopenharmony_ci <&gpu_cfg_clk>, 3228c2ecf20Sopenharmony_ci <&gpu_core_clk>, 3238c2ecf20Sopenharmony_ci <&gpu_core_clk>; 3248c2ecf20Sopenharmony_ci clock-names = "bus", "reg", "core", "shader"; 3258c2ecf20Sopenharmony_ci interrupts = <28>; 3268c2ecf20Sopenharmony_ci }; 3278c2ecf20Sopenharmony_ci 3288c2ecf20Sopenharmony_ci dmac: dmac@80000 { 3298c2ecf20Sopenharmony_ci compatible = "snps,axi-dma-1.01a"; 3308c2ecf20Sopenharmony_ci reg = <0x80000 0x400>; 3318c2ecf20Sopenharmony_ci interrupts = <27>; 3328c2ecf20Sopenharmony_ci clocks = <&dmac_core_clk>, <&dmac_cfg_clk>; 3338c2ecf20Sopenharmony_ci clock-names = "core-clk", "cfgr-clk"; 3348c2ecf20Sopenharmony_ci 3358c2ecf20Sopenharmony_ci dma-channels = <4>; 3368c2ecf20Sopenharmony_ci snps,dma-masters = <2>; 3378c2ecf20Sopenharmony_ci snps,data-width = <3>; 3388c2ecf20Sopenharmony_ci snps,block-size = <4096 4096 4096 4096>; 3398c2ecf20Sopenharmony_ci snps,priority = <0 1 2 3>; 3408c2ecf20Sopenharmony_ci snps,axi-max-burst-len = <16>; 3418c2ecf20Sopenharmony_ci }; 3428c2ecf20Sopenharmony_ci }; 3438c2ecf20Sopenharmony_ci 3448c2ecf20Sopenharmony_ci memory@80000000 { 3458c2ecf20Sopenharmony_ci #address-cells = <2>; 3468c2ecf20Sopenharmony_ci #size-cells = <2>; 3478c2ecf20Sopenharmony_ci device_type = "memory"; 3488c2ecf20Sopenharmony_ci reg = <0x0 0x80000000 0x0 0x40000000>; /* 1 GB lowmem */ 3498c2ecf20Sopenharmony_ci /* 0x1 0x00000000 0x0 0x40000000>; 1 GB highmem */ 3508c2ecf20Sopenharmony_ci }; 3518c2ecf20Sopenharmony_ci}; 352