18c2ecf20Sopenharmony_ci// SPDX-License-Identifier: GPL-2.0-only 28c2ecf20Sopenharmony_ci/* 38c2ecf20Sopenharmony_ci * Support for peripherals on the AXS10x mainboard 48c2ecf20Sopenharmony_ci * 58c2ecf20Sopenharmony_ci * Copyright (C) 2013-15 Synopsys, Inc. (www.synopsys.com) 68c2ecf20Sopenharmony_ci */ 78c2ecf20Sopenharmony_ci 88c2ecf20Sopenharmony_ci/ { 98c2ecf20Sopenharmony_ci aliases { 108c2ecf20Sopenharmony_ci ethernet = &gmac; 118c2ecf20Sopenharmony_ci }; 128c2ecf20Sopenharmony_ci 138c2ecf20Sopenharmony_ci axs10x_mb { 148c2ecf20Sopenharmony_ci compatible = "simple-bus"; 158c2ecf20Sopenharmony_ci #address-cells = <1>; 168c2ecf20Sopenharmony_ci #size-cells = <1>; 178c2ecf20Sopenharmony_ci ranges = <0x00000000 0x0 0xe0000000 0x10000000>; 188c2ecf20Sopenharmony_ci interrupt-parent = <&mb_intc>; 198c2ecf20Sopenharmony_ci 208c2ecf20Sopenharmony_ci creg_rst: reset-controller@11220 { 218c2ecf20Sopenharmony_ci compatible = "snps,axs10x-reset"; 228c2ecf20Sopenharmony_ci #reset-cells = <1>; 238c2ecf20Sopenharmony_ci reg = <0x11220 0x4>; 248c2ecf20Sopenharmony_ci }; 258c2ecf20Sopenharmony_ci 268c2ecf20Sopenharmony_ci i2sclk: i2sclk@100a0 { 278c2ecf20Sopenharmony_ci compatible = "snps,axs10x-i2s-pll-clock"; 288c2ecf20Sopenharmony_ci reg = <0x100a0 0x10>; 298c2ecf20Sopenharmony_ci clocks = <&i2spll_clk>; 308c2ecf20Sopenharmony_ci #clock-cells = <0>; 318c2ecf20Sopenharmony_ci }; 328c2ecf20Sopenharmony_ci 338c2ecf20Sopenharmony_ci clocks { 348c2ecf20Sopenharmony_ci i2spll_clk: i2spll_clk { 358c2ecf20Sopenharmony_ci compatible = "fixed-clock"; 368c2ecf20Sopenharmony_ci clock-frequency = <27000000>; 378c2ecf20Sopenharmony_ci #clock-cells = <0>; 388c2ecf20Sopenharmony_ci }; 398c2ecf20Sopenharmony_ci 408c2ecf20Sopenharmony_ci i2cclk: i2cclk { 418c2ecf20Sopenharmony_ci compatible = "fixed-clock"; 428c2ecf20Sopenharmony_ci clock-frequency = <50000000>; 438c2ecf20Sopenharmony_ci #clock-cells = <0>; 448c2ecf20Sopenharmony_ci }; 458c2ecf20Sopenharmony_ci 468c2ecf20Sopenharmony_ci apbclk: apbclk { 478c2ecf20Sopenharmony_ci compatible = "fixed-clock"; 488c2ecf20Sopenharmony_ci clock-frequency = <50000000>; 498c2ecf20Sopenharmony_ci #clock-cells = <0>; 508c2ecf20Sopenharmony_ci }; 518c2ecf20Sopenharmony_ci 528c2ecf20Sopenharmony_ci mmcclk: mmcclk { 538c2ecf20Sopenharmony_ci compatible = "fixed-clock"; 548c2ecf20Sopenharmony_ci /* 558c2ecf20Sopenharmony_ci * DW sdio controller has external ciu clock divider 568c2ecf20Sopenharmony_ci * controlled via register in SDIO IP. It divides 578c2ecf20Sopenharmony_ci * sdio_ref_clk (which comes from CGU) by 16 for 588c2ecf20Sopenharmony_ci * default. So default mmcclk clock (which comes 598c2ecf20Sopenharmony_ci * to sdk_in) is 25000000 Hz. 608c2ecf20Sopenharmony_ci */ 618c2ecf20Sopenharmony_ci clock-frequency = <25000000>; 628c2ecf20Sopenharmony_ci #clock-cells = <0>; 638c2ecf20Sopenharmony_ci }; 648c2ecf20Sopenharmony_ci }; 658c2ecf20Sopenharmony_ci 668c2ecf20Sopenharmony_ci pguclk: pguclk@10080 { 678c2ecf20Sopenharmony_ci compatible = "snps,axs10x-pgu-pll-clock"; 688c2ecf20Sopenharmony_ci reg = <0x10080 0x10>, <0x110 0x10>; 698c2ecf20Sopenharmony_ci #clock-cells = <0>; 708c2ecf20Sopenharmony_ci clocks = <&input_clk>; 718c2ecf20Sopenharmony_ci }; 728c2ecf20Sopenharmony_ci 738c2ecf20Sopenharmony_ci gmac: ethernet@18000 { 748c2ecf20Sopenharmony_ci #interrupt-cells = <1>; 758c2ecf20Sopenharmony_ci compatible = "snps,dwmac"; 768c2ecf20Sopenharmony_ci reg = < 0x18000 0x2000 >; 778c2ecf20Sopenharmony_ci interrupts = < 4 >; 788c2ecf20Sopenharmony_ci interrupt-names = "macirq"; 798c2ecf20Sopenharmony_ci phy-mode = "rgmii"; 808c2ecf20Sopenharmony_ci snps,pbl = < 32 >; 818c2ecf20Sopenharmony_ci snps,multicast-filter-bins = <256>; 828c2ecf20Sopenharmony_ci clocks = <&apbclk>; 838c2ecf20Sopenharmony_ci clock-names = "stmmaceth"; 848c2ecf20Sopenharmony_ci max-speed = <100>; 858c2ecf20Sopenharmony_ci resets = <&creg_rst 5>; 868c2ecf20Sopenharmony_ci reset-names = "stmmaceth"; 878c2ecf20Sopenharmony_ci mac-address = [00 00 00 00 00 00]; /* Filled in by U-Boot */ 888c2ecf20Sopenharmony_ci }; 898c2ecf20Sopenharmony_ci 908c2ecf20Sopenharmony_ci ehci@40000 { 918c2ecf20Sopenharmony_ci compatible = "generic-ehci"; 928c2ecf20Sopenharmony_ci reg = < 0x40000 0x100 >; 938c2ecf20Sopenharmony_ci interrupts = < 8 >; 948c2ecf20Sopenharmony_ci }; 958c2ecf20Sopenharmony_ci 968c2ecf20Sopenharmony_ci ohci@60000 { 978c2ecf20Sopenharmony_ci compatible = "generic-ohci"; 988c2ecf20Sopenharmony_ci reg = < 0x60000 0x100 >; 998c2ecf20Sopenharmony_ci interrupts = < 8 >; 1008c2ecf20Sopenharmony_ci }; 1018c2ecf20Sopenharmony_ci 1028c2ecf20Sopenharmony_ci /* 1038c2ecf20Sopenharmony_ci * According to DW Mobile Storage databook it is required 1048c2ecf20Sopenharmony_ci * to use "Hold Register" if card is enumerated in SDR12 or 1058c2ecf20Sopenharmony_ci * SDR25 modes. 1068c2ecf20Sopenharmony_ci * 1078c2ecf20Sopenharmony_ci * Utilization of "Hold Register" is already implemented via 1088c2ecf20Sopenharmony_ci * dw_mci_pltfm_prepare_command() which in its turn gets 1098c2ecf20Sopenharmony_ci * used through dw_mci_drv_data->prepare_command call-back. 1108c2ecf20Sopenharmony_ci * This call-back is used in Altera Socfpga platform and so 1118c2ecf20Sopenharmony_ci * we may reuse it saying that we're compatible with their 1128c2ecf20Sopenharmony_ci * "altr,socfpga-dw-mshc". 1138c2ecf20Sopenharmony_ci * 1148c2ecf20Sopenharmony_ci * Most probably "Hold Register" utilization is platform- 1158c2ecf20Sopenharmony_ci * independent requirement which means that single unified 1168c2ecf20Sopenharmony_ci * "snps,dw-mshc" should be enough for all users of DW MMC once 1178c2ecf20Sopenharmony_ci * dw_mci_pltfm_prepare_command() is used in generic platform 1188c2ecf20Sopenharmony_ci * code. 1198c2ecf20Sopenharmony_ci */ 1208c2ecf20Sopenharmony_ci mmc@15000 { 1218c2ecf20Sopenharmony_ci compatible = "altr,socfpga-dw-mshc"; 1228c2ecf20Sopenharmony_ci reg = < 0x15000 0x400 >; 1238c2ecf20Sopenharmony_ci fifo-depth = < 16 >; 1248c2ecf20Sopenharmony_ci card-detect-delay = < 200 >; 1258c2ecf20Sopenharmony_ci clocks = <&apbclk>, <&mmcclk>; 1268c2ecf20Sopenharmony_ci clock-names = "biu", "ciu"; 1278c2ecf20Sopenharmony_ci interrupts = < 7 >; 1288c2ecf20Sopenharmony_ci bus-width = < 4 >; 1298c2ecf20Sopenharmony_ci }; 1308c2ecf20Sopenharmony_ci 1318c2ecf20Sopenharmony_ci uart@20000 { 1328c2ecf20Sopenharmony_ci compatible = "snps,dw-apb-uart"; 1338c2ecf20Sopenharmony_ci reg = <0x20000 0x100>; 1348c2ecf20Sopenharmony_ci clock-frequency = <33333333>; 1358c2ecf20Sopenharmony_ci interrupts = <17>; 1368c2ecf20Sopenharmony_ci baud = <115200>; 1378c2ecf20Sopenharmony_ci reg-shift = <2>; 1388c2ecf20Sopenharmony_ci reg-io-width = <4>; 1398c2ecf20Sopenharmony_ci }; 1408c2ecf20Sopenharmony_ci 1418c2ecf20Sopenharmony_ci uart@21000 { 1428c2ecf20Sopenharmony_ci compatible = "snps,dw-apb-uart"; 1438c2ecf20Sopenharmony_ci reg = <0x21000 0x100>; 1448c2ecf20Sopenharmony_ci clock-frequency = <33333333>; 1458c2ecf20Sopenharmony_ci interrupts = <18>; 1468c2ecf20Sopenharmony_ci baud = <115200>; 1478c2ecf20Sopenharmony_ci reg-shift = <2>; 1488c2ecf20Sopenharmony_ci reg-io-width = <4>; 1498c2ecf20Sopenharmony_ci }; 1508c2ecf20Sopenharmony_ci 1518c2ecf20Sopenharmony_ci /* UART muxed with USB data port (ttyS3) */ 1528c2ecf20Sopenharmony_ci uart@22000 { 1538c2ecf20Sopenharmony_ci compatible = "snps,dw-apb-uart"; 1548c2ecf20Sopenharmony_ci reg = <0x22000 0x100>; 1558c2ecf20Sopenharmony_ci clock-frequency = <33333333>; 1568c2ecf20Sopenharmony_ci interrupts = <19>; 1578c2ecf20Sopenharmony_ci baud = <115200>; 1588c2ecf20Sopenharmony_ci reg-shift = <2>; 1598c2ecf20Sopenharmony_ci reg-io-width = <4>; 1608c2ecf20Sopenharmony_ci }; 1618c2ecf20Sopenharmony_ci 1628c2ecf20Sopenharmony_ci i2c@1d000 { 1638c2ecf20Sopenharmony_ci compatible = "snps,designware-i2c"; 1648c2ecf20Sopenharmony_ci reg = <0x1d000 0x100>; 1658c2ecf20Sopenharmony_ci clock-frequency = <400000>; 1668c2ecf20Sopenharmony_ci clocks = <&i2cclk>; 1678c2ecf20Sopenharmony_ci interrupts = <14>; 1688c2ecf20Sopenharmony_ci }; 1698c2ecf20Sopenharmony_ci 1708c2ecf20Sopenharmony_ci i2s: i2s@1e000 { 1718c2ecf20Sopenharmony_ci compatible = "snps,designware-i2s"; 1728c2ecf20Sopenharmony_ci reg = <0x1e000 0x100>; 1738c2ecf20Sopenharmony_ci clocks = <&i2sclk 0>; 1748c2ecf20Sopenharmony_ci clock-names = "i2sclk"; 1758c2ecf20Sopenharmony_ci interrupts = <15>; 1768c2ecf20Sopenharmony_ci #sound-dai-cells = <0>; 1778c2ecf20Sopenharmony_ci }; 1788c2ecf20Sopenharmony_ci 1798c2ecf20Sopenharmony_ci i2c@1f000 { 1808c2ecf20Sopenharmony_ci compatible = "snps,designware-i2c"; 1818c2ecf20Sopenharmony_ci #address-cells = <1>; 1828c2ecf20Sopenharmony_ci #size-cells = <0>; 1838c2ecf20Sopenharmony_ci reg = <0x1f000 0x100>; 1848c2ecf20Sopenharmony_ci clock-frequency = <400000>; 1858c2ecf20Sopenharmony_ci clocks = <&i2cclk>; 1868c2ecf20Sopenharmony_ci interrupts = <16>; 1878c2ecf20Sopenharmony_ci 1888c2ecf20Sopenharmony_ci adv7511:adv7511@39{ 1898c2ecf20Sopenharmony_ci compatible="adi,adv7511"; 1908c2ecf20Sopenharmony_ci reg = <0x39>; 1918c2ecf20Sopenharmony_ci interrupts = <23>; 1928c2ecf20Sopenharmony_ci adi,input-depth = <8>; 1938c2ecf20Sopenharmony_ci adi,input-colorspace = "rgb"; 1948c2ecf20Sopenharmony_ci adi,input-clock = "1x"; 1958c2ecf20Sopenharmony_ci adi,clock-delay = <0x03>; 1968c2ecf20Sopenharmony_ci #sound-dai-cells = <0>; 1978c2ecf20Sopenharmony_ci 1988c2ecf20Sopenharmony_ci ports { 1998c2ecf20Sopenharmony_ci #address-cells = <1>; 2008c2ecf20Sopenharmony_ci #size-cells = <0>; 2018c2ecf20Sopenharmony_ci 2028c2ecf20Sopenharmony_ci /* RGB/YUV input */ 2038c2ecf20Sopenharmony_ci port@0 { 2048c2ecf20Sopenharmony_ci reg = <0>; 2058c2ecf20Sopenharmony_ci adv7511_input:endpoint { 2068c2ecf20Sopenharmony_ci remote-endpoint = <&pgu_output>; 2078c2ecf20Sopenharmony_ci }; 2088c2ecf20Sopenharmony_ci }; 2098c2ecf20Sopenharmony_ci 2108c2ecf20Sopenharmony_ci /* HDMI output */ 2118c2ecf20Sopenharmony_ci port@1 { 2128c2ecf20Sopenharmony_ci reg = <1>; 2138c2ecf20Sopenharmony_ci adv7511_output: endpoint { 2148c2ecf20Sopenharmony_ci remote-endpoint = <&hdmi_connector_in>; 2158c2ecf20Sopenharmony_ci }; 2168c2ecf20Sopenharmony_ci }; 2178c2ecf20Sopenharmony_ci }; 2188c2ecf20Sopenharmony_ci }; 2198c2ecf20Sopenharmony_ci 2208c2ecf20Sopenharmony_ci eeprom@54{ 2218c2ecf20Sopenharmony_ci compatible = "atmel,24c01"; 2228c2ecf20Sopenharmony_ci reg = <0x54>; 2238c2ecf20Sopenharmony_ci pagesize = <0x8>; 2248c2ecf20Sopenharmony_ci }; 2258c2ecf20Sopenharmony_ci 2268c2ecf20Sopenharmony_ci eeprom@57{ 2278c2ecf20Sopenharmony_ci compatible = "atmel,24c04"; 2288c2ecf20Sopenharmony_ci reg = <0x57>; 2298c2ecf20Sopenharmony_ci pagesize = <0x8>; 2308c2ecf20Sopenharmony_ci }; 2318c2ecf20Sopenharmony_ci }; 2328c2ecf20Sopenharmony_ci 2338c2ecf20Sopenharmony_ci hdmi0: connector { 2348c2ecf20Sopenharmony_ci compatible = "hdmi-connector"; 2358c2ecf20Sopenharmony_ci type = "a"; 2368c2ecf20Sopenharmony_ci port { 2378c2ecf20Sopenharmony_ci hdmi_connector_in: endpoint { 2388c2ecf20Sopenharmony_ci remote-endpoint = <&adv7511_output>; 2398c2ecf20Sopenharmony_ci }; 2408c2ecf20Sopenharmony_ci }; 2418c2ecf20Sopenharmony_ci }; 2428c2ecf20Sopenharmony_ci 2438c2ecf20Sopenharmony_ci gpio0:gpio@13000 { 2448c2ecf20Sopenharmony_ci compatible = "snps,dw-apb-gpio"; 2458c2ecf20Sopenharmony_ci reg = <0x13000 0x1000>; 2468c2ecf20Sopenharmony_ci #address-cells = <1>; 2478c2ecf20Sopenharmony_ci #size-cells = <0>; 2488c2ecf20Sopenharmony_ci 2498c2ecf20Sopenharmony_ci gpio0_banka: gpio-controller@0 { 2508c2ecf20Sopenharmony_ci compatible = "snps,dw-apb-gpio-port"; 2518c2ecf20Sopenharmony_ci gpio-controller; 2528c2ecf20Sopenharmony_ci #gpio-cells = <2>; 2538c2ecf20Sopenharmony_ci snps,nr-gpios = <32>; 2548c2ecf20Sopenharmony_ci reg = <0>; 2558c2ecf20Sopenharmony_ci }; 2568c2ecf20Sopenharmony_ci 2578c2ecf20Sopenharmony_ci gpio0_bankb: gpio-controller@1 { 2588c2ecf20Sopenharmony_ci compatible = "snps,dw-apb-gpio-port"; 2598c2ecf20Sopenharmony_ci gpio-controller; 2608c2ecf20Sopenharmony_ci #gpio-cells = <2>; 2618c2ecf20Sopenharmony_ci snps,nr-gpios = <8>; 2628c2ecf20Sopenharmony_ci reg = <1>; 2638c2ecf20Sopenharmony_ci }; 2648c2ecf20Sopenharmony_ci 2658c2ecf20Sopenharmony_ci gpio0_bankc: gpio-controller@2 { 2668c2ecf20Sopenharmony_ci compatible = "snps,dw-apb-gpio-port"; 2678c2ecf20Sopenharmony_ci gpio-controller; 2688c2ecf20Sopenharmony_ci #gpio-cells = <2>; 2698c2ecf20Sopenharmony_ci snps,nr-gpios = <8>; 2708c2ecf20Sopenharmony_ci reg = <2>; 2718c2ecf20Sopenharmony_ci }; 2728c2ecf20Sopenharmony_ci }; 2738c2ecf20Sopenharmony_ci 2748c2ecf20Sopenharmony_ci gpio1:gpio@14000 { 2758c2ecf20Sopenharmony_ci compatible = "snps,dw-apb-gpio"; 2768c2ecf20Sopenharmony_ci reg = <0x14000 0x1000>; 2778c2ecf20Sopenharmony_ci #address-cells = <1>; 2788c2ecf20Sopenharmony_ci #size-cells = <0>; 2798c2ecf20Sopenharmony_ci 2808c2ecf20Sopenharmony_ci gpio1_banka: gpio-controller@0 { 2818c2ecf20Sopenharmony_ci compatible = "snps,dw-apb-gpio-port"; 2828c2ecf20Sopenharmony_ci gpio-controller; 2838c2ecf20Sopenharmony_ci #gpio-cells = <2>; 2848c2ecf20Sopenharmony_ci snps,nr-gpios = <30>; 2858c2ecf20Sopenharmony_ci reg = <0>; 2868c2ecf20Sopenharmony_ci }; 2878c2ecf20Sopenharmony_ci 2888c2ecf20Sopenharmony_ci gpio1_bankb: gpio-controller@1 { 2898c2ecf20Sopenharmony_ci compatible = "snps,dw-apb-gpio-port"; 2908c2ecf20Sopenharmony_ci gpio-controller; 2918c2ecf20Sopenharmony_ci #gpio-cells = <2>; 2928c2ecf20Sopenharmony_ci snps,nr-gpios = <10>; 2938c2ecf20Sopenharmony_ci reg = <1>; 2948c2ecf20Sopenharmony_ci }; 2958c2ecf20Sopenharmony_ci 2968c2ecf20Sopenharmony_ci gpio1_bankc: gpio-controller@2 { 2978c2ecf20Sopenharmony_ci compatible = "snps,dw-apb-gpio-port"; 2988c2ecf20Sopenharmony_ci gpio-controller; 2998c2ecf20Sopenharmony_ci #gpio-cells = <2>; 3008c2ecf20Sopenharmony_ci snps,nr-gpios = <8>; 3018c2ecf20Sopenharmony_ci reg = <2>; 3028c2ecf20Sopenharmony_ci }; 3038c2ecf20Sopenharmony_ci }; 3048c2ecf20Sopenharmony_ci 3058c2ecf20Sopenharmony_ci pgu@17000 { 3068c2ecf20Sopenharmony_ci compatible = "snps,arcpgu"; 3078c2ecf20Sopenharmony_ci reg = <0x17000 0x400>; 3088c2ecf20Sopenharmony_ci clocks = <&pguclk>; 3098c2ecf20Sopenharmony_ci clock-names = "pxlclk"; 3108c2ecf20Sopenharmony_ci memory-region = <&frame_buffer>; 3118c2ecf20Sopenharmony_ci port { 3128c2ecf20Sopenharmony_ci pgu_output: endpoint { 3138c2ecf20Sopenharmony_ci remote-endpoint = <&adv7511_input>; 3148c2ecf20Sopenharmony_ci }; 3158c2ecf20Sopenharmony_ci }; 3168c2ecf20Sopenharmony_ci }; 3178c2ecf20Sopenharmony_ci 3188c2ecf20Sopenharmony_ci sound_playback { 3198c2ecf20Sopenharmony_ci compatible = "simple-audio-card"; 3208c2ecf20Sopenharmony_ci simple-audio-card,name = "AXS10x HDMI Audio"; 3218c2ecf20Sopenharmony_ci simple-audio-card,format = "i2s"; 3228c2ecf20Sopenharmony_ci simple-audio-card,cpu { 3238c2ecf20Sopenharmony_ci sound-dai = <&i2s>; 3248c2ecf20Sopenharmony_ci }; 3258c2ecf20Sopenharmony_ci simple-audio-card,codec { 3268c2ecf20Sopenharmony_ci sound-dai = <&adv7511>; 3278c2ecf20Sopenharmony_ci }; 3288c2ecf20Sopenharmony_ci }; 3298c2ecf20Sopenharmony_ci }; 3308c2ecf20Sopenharmony_ci}; 331