18b1ba941SHans de Goede/* 28b1ba941SHans de Goede * Copyright 2014 Chen-Yu Tsai 38b1ba941SHans de Goede * 48b1ba941SHans de Goede * Chen-Yu Tsai <wens@csie.org> 58b1ba941SHans de Goede * 68b1ba941SHans de Goede * This file is dual-licensed: you can use it either under the terms 78b1ba941SHans de Goede * of the GPL or the X11 license, at your option. Note that this dual 88b1ba941SHans de Goede * licensing only applies to this file, and not this project as a 98b1ba941SHans de Goede * whole. 108b1ba941SHans de Goede * 118b1ba941SHans de Goede * a) This file is free software; you can redistribute it and/or 128b1ba941SHans de Goede * modify it under the terms of the GNU General Public License as 138b1ba941SHans de Goede * published by the Free Software Foundation; either version 2 of the 148b1ba941SHans de Goede * License, or (at your option) any later version. 158b1ba941SHans de Goede * 168b1ba941SHans de Goede * This file is distributed in the hope that it will be useful, 178b1ba941SHans de Goede * but WITHOUT ANY WARRANTY; without even the implied warranty of 188b1ba941SHans de Goede * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 198b1ba941SHans de Goede * GNU General Public License for more details. 208b1ba941SHans de Goede * 218b1ba941SHans de Goede * Or, alternatively, 228b1ba941SHans de Goede * 238b1ba941SHans de Goede * b) Permission is hereby granted, free of charge, to any person 248b1ba941SHans de Goede * obtaining a copy of this software and associated documentation 258b1ba941SHans de Goede * files (the "Software"), to deal in the Software without 268b1ba941SHans de Goede * restriction, including without limitation the rights to use, 278b1ba941SHans de Goede * copy, modify, merge, publish, distribute, sublicense, and/or 288b1ba941SHans de Goede * sell copies of the Software, and to permit persons to whom the 298b1ba941SHans de Goede * Software is furnished to do so, subject to the following 308b1ba941SHans de Goede * conditions: 318b1ba941SHans de Goede * 328b1ba941SHans de Goede * The above copyright notice and this permission notice shall be 338b1ba941SHans de Goede * included in all copies or substantial portions of the Software. 348b1ba941SHans de Goede * 358b1ba941SHans de Goede * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, 368b1ba941SHans de Goede * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES 378b1ba941SHans de Goede * OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND 388b1ba941SHans de Goede * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT 398b1ba941SHans de Goede * HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, 408b1ba941SHans de Goede * WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING 418b1ba941SHans de Goede * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR 428b1ba941SHans de Goede * OTHER DEALINGS IN THE SOFTWARE. 438b1ba941SHans de Goede */ 448b1ba941SHans de Goede 458b1ba941SHans de Goede#include "skeleton.dtsi" 468b1ba941SHans de Goede 478b1ba941SHans de Goede#include <dt-bindings/interrupt-controller/arm-gic.h> 488b1ba941SHans de Goede 498b1ba941SHans de Goede#include <dt-bindings/pinctrl/sun4i-a10.h> 508b1ba941SHans de Goede 518b1ba941SHans de Goede/ { 528b1ba941SHans de Goede interrupt-parent = <&gic>; 538b1ba941SHans de Goede 548b1ba941SHans de Goede chosen { 558b1ba941SHans de Goede #address-cells = <1>; 568b1ba941SHans de Goede #size-cells = <1>; 578b1ba941SHans de Goede ranges; 588b1ba941SHans de Goede 5980e5f83cSHans de Goede simplefb_lcd: framebuffer@0 { 608b1ba941SHans de Goede compatible = "allwinner,simple-framebuffer", 618b1ba941SHans de Goede "simple-framebuffer"; 628b1ba941SHans de Goede allwinner,pipeline = "de_be0-lcd0"; 638b1ba941SHans de Goede clocks = <&pll6 0>; 648b1ba941SHans de Goede status = "disabled"; 658b1ba941SHans de Goede }; 668b1ba941SHans de Goede }; 678b1ba941SHans de Goede 688b1ba941SHans de Goede timer { 698b1ba941SHans de Goede compatible = "arm,armv7-timer"; 708b1ba941SHans de Goede interrupts = <GIC_PPI 13 (GIC_CPU_MASK_SIMPLE(4) | IRQ_TYPE_LEVEL_LOW)>, 718b1ba941SHans de Goede <GIC_PPI 14 (GIC_CPU_MASK_SIMPLE(4) | IRQ_TYPE_LEVEL_LOW)>, 728b1ba941SHans de Goede <GIC_PPI 11 (GIC_CPU_MASK_SIMPLE(4) | IRQ_TYPE_LEVEL_LOW)>, 738b1ba941SHans de Goede <GIC_PPI 10 (GIC_CPU_MASK_SIMPLE(4) | IRQ_TYPE_LEVEL_LOW)>; 748b1ba941SHans de Goede clock-frequency = <24000000>; 758b1ba941SHans de Goede arm,cpu-registers-not-fw-configured; 768b1ba941SHans de Goede }; 778b1ba941SHans de Goede 788b1ba941SHans de Goede cpus { 798b1ba941SHans de Goede enable-method = "allwinner,sun8i-a23"; 808b1ba941SHans de Goede #address-cells = <1>; 818b1ba941SHans de Goede #size-cells = <0>; 828b1ba941SHans de Goede 838b1ba941SHans de Goede cpu@0 { 848b1ba941SHans de Goede compatible = "arm,cortex-a7"; 858b1ba941SHans de Goede device_type = "cpu"; 868b1ba941SHans de Goede reg = <0>; 878b1ba941SHans de Goede }; 888b1ba941SHans de Goede 898b1ba941SHans de Goede cpu@1 { 908b1ba941SHans de Goede compatible = "arm,cortex-a7"; 918b1ba941SHans de Goede device_type = "cpu"; 928b1ba941SHans de Goede reg = <1>; 938b1ba941SHans de Goede }; 948b1ba941SHans de Goede }; 958b1ba941SHans de Goede 968b1ba941SHans de Goede clocks { 978b1ba941SHans de Goede #address-cells = <1>; 988b1ba941SHans de Goede #size-cells = <1>; 998b1ba941SHans de Goede ranges; 1008b1ba941SHans de Goede 1018b1ba941SHans de Goede osc24M: osc24M_clk { 1028b1ba941SHans de Goede #clock-cells = <0>; 1038b1ba941SHans de Goede compatible = "fixed-clock"; 1048b1ba941SHans de Goede clock-frequency = <24000000>; 1058b1ba941SHans de Goede clock-output-names = "osc24M"; 1068b1ba941SHans de Goede }; 1078b1ba941SHans de Goede 1088b1ba941SHans de Goede osc32k: osc32k_clk { 1098b1ba941SHans de Goede #clock-cells = <0>; 1108b1ba941SHans de Goede compatible = "fixed-clock"; 1118b1ba941SHans de Goede clock-frequency = <32768>; 1128b1ba941SHans de Goede clock-output-names = "osc32k"; 1138b1ba941SHans de Goede }; 1148b1ba941SHans de Goede 1158b1ba941SHans de Goede pll1: clk@01c20000 { 1168b1ba941SHans de Goede #clock-cells = <0>; 1178b1ba941SHans de Goede compatible = "allwinner,sun8i-a23-pll1-clk"; 1188b1ba941SHans de Goede reg = <0x01c20000 0x4>; 1198b1ba941SHans de Goede clocks = <&osc24M>; 1208b1ba941SHans de Goede clock-output-names = "pll1"; 1218b1ba941SHans de Goede }; 1228b1ba941SHans de Goede 1238b1ba941SHans de Goede /* dummy clock until actually implemented */ 1248b1ba941SHans de Goede pll5: pll5_clk { 1258b1ba941SHans de Goede #clock-cells = <0>; 1268b1ba941SHans de Goede compatible = "fixed-clock"; 1278b1ba941SHans de Goede clock-frequency = <0>; 1288b1ba941SHans de Goede clock-output-names = "pll5"; 1298b1ba941SHans de Goede }; 1308b1ba941SHans de Goede 1318b1ba941SHans de Goede pll6: clk@01c20028 { 1328b1ba941SHans de Goede #clock-cells = <1>; 1338b1ba941SHans de Goede compatible = "allwinner,sun6i-a31-pll6-clk"; 1348b1ba941SHans de Goede reg = <0x01c20028 0x4>; 1358b1ba941SHans de Goede clocks = <&osc24M>; 1368b1ba941SHans de Goede clock-output-names = "pll6", "pll6x2"; 1378b1ba941SHans de Goede }; 1388b1ba941SHans de Goede 1398b1ba941SHans de Goede cpu: cpu_clk@01c20050 { 1408b1ba941SHans de Goede #clock-cells = <0>; 1418b1ba941SHans de Goede compatible = "allwinner,sun4i-a10-cpu-clk"; 1428b1ba941SHans de Goede reg = <0x01c20050 0x4>; 1438b1ba941SHans de Goede 1448b1ba941SHans de Goede /* 1458b1ba941SHans de Goede * PLL1 is listed twice here. 1468b1ba941SHans de Goede * While it looks suspicious, it's actually documented 1478b1ba941SHans de Goede * that way both in the datasheet and in the code from 1488b1ba941SHans de Goede * Allwinner. 1498b1ba941SHans de Goede */ 1508b1ba941SHans de Goede clocks = <&osc32k>, <&osc24M>, <&pll1>, <&pll1>; 1518b1ba941SHans de Goede clock-output-names = "cpu"; 1528b1ba941SHans de Goede }; 1538b1ba941SHans de Goede 1548b1ba941SHans de Goede axi: axi_clk@01c20050 { 1558b1ba941SHans de Goede #clock-cells = <0>; 1568b1ba941SHans de Goede compatible = "allwinner,sun8i-a23-axi-clk"; 1578b1ba941SHans de Goede reg = <0x01c20050 0x4>; 1588b1ba941SHans de Goede clocks = <&cpu>; 1598b1ba941SHans de Goede clock-output-names = "axi"; 1608b1ba941SHans de Goede }; 1618b1ba941SHans de Goede 1628b1ba941SHans de Goede ahb1: ahb1_clk@01c20054 { 1638b1ba941SHans de Goede #clock-cells = <0>; 1648b1ba941SHans de Goede compatible = "allwinner,sun6i-a31-ahb1-clk"; 1658b1ba941SHans de Goede reg = <0x01c20054 0x4>; 1668b1ba941SHans de Goede clocks = <&osc32k>, <&osc24M>, <&axi>, <&pll6 0>; 1678b1ba941SHans de Goede clock-output-names = "ahb1"; 1688b1ba941SHans de Goede }; 1698b1ba941SHans de Goede 1708b1ba941SHans de Goede apb1: apb1_clk@01c20054 { 1718b1ba941SHans de Goede #clock-cells = <0>; 1728b1ba941SHans de Goede compatible = "allwinner,sun4i-a10-apb0-clk"; 1738b1ba941SHans de Goede reg = <0x01c20054 0x4>; 1748b1ba941SHans de Goede clocks = <&ahb1>; 1758b1ba941SHans de Goede clock-output-names = "apb1"; 1768b1ba941SHans de Goede }; 1778b1ba941SHans de Goede 1788b1ba941SHans de Goede apb1_gates: clk@01c20068 { 1798b1ba941SHans de Goede #clock-cells = <1>; 1808b1ba941SHans de Goede compatible = "allwinner,sun8i-a23-apb1-gates-clk"; 1818b1ba941SHans de Goede reg = <0x01c20068 0x4>; 1828b1ba941SHans de Goede clocks = <&apb1>; 18380e5f83cSHans de Goede clock-indices = <0>, <5>, 18480e5f83cSHans de Goede <12>, <13>; 1858b1ba941SHans de Goede clock-output-names = "apb1_codec", "apb1_pio", 1868b1ba941SHans de Goede "apb1_daudio0", "apb1_daudio1"; 1878b1ba941SHans de Goede }; 1888b1ba941SHans de Goede 1898b1ba941SHans de Goede apb2: clk@01c20058 { 1908b1ba941SHans de Goede #clock-cells = <0>; 1918b1ba941SHans de Goede compatible = "allwinner,sun4i-a10-apb1-clk"; 1928b1ba941SHans de Goede reg = <0x01c20058 0x4>; 1938b1ba941SHans de Goede clocks = <&osc32k>, <&osc24M>, <&pll6 0>, <&pll6 0>; 1948b1ba941SHans de Goede clock-output-names = "apb2"; 1958b1ba941SHans de Goede }; 1968b1ba941SHans de Goede 1978b1ba941SHans de Goede apb2_gates: clk@01c2006c { 1988b1ba941SHans de Goede #clock-cells = <1>; 1998b1ba941SHans de Goede compatible = "allwinner,sun8i-a23-apb2-gates-clk"; 2008b1ba941SHans de Goede reg = <0x01c2006c 0x4>; 2018b1ba941SHans de Goede clocks = <&apb2>; 20280e5f83cSHans de Goede clock-indices = <0>, <1>, 20380e5f83cSHans de Goede <2>, <16>, 20480e5f83cSHans de Goede <17>, <18>, 20580e5f83cSHans de Goede <19>, <20>; 2068b1ba941SHans de Goede clock-output-names = "apb2_i2c0", "apb2_i2c1", 2078b1ba941SHans de Goede "apb2_i2c2", "apb2_uart0", 2088b1ba941SHans de Goede "apb2_uart1", "apb2_uart2", 2098b1ba941SHans de Goede "apb2_uart3", "apb2_uart4"; 2108b1ba941SHans de Goede }; 2118b1ba941SHans de Goede 2128b1ba941SHans de Goede mmc0_clk: clk@01c20088 { 2138b1ba941SHans de Goede #clock-cells = <1>; 2148b1ba941SHans de Goede compatible = "allwinner,sun4i-a10-mmc-clk"; 2158b1ba941SHans de Goede reg = <0x01c20088 0x4>; 2168b1ba941SHans de Goede clocks = <&osc24M>, <&pll6 0>; 2178b1ba941SHans de Goede clock-output-names = "mmc0", 2188b1ba941SHans de Goede "mmc0_output", 2198b1ba941SHans de Goede "mmc0_sample"; 2208b1ba941SHans de Goede }; 2218b1ba941SHans de Goede 2228b1ba941SHans de Goede mmc1_clk: clk@01c2008c { 2238b1ba941SHans de Goede #clock-cells = <1>; 2248b1ba941SHans de Goede compatible = "allwinner,sun4i-a10-mmc-clk"; 2258b1ba941SHans de Goede reg = <0x01c2008c 0x4>; 2268b1ba941SHans de Goede clocks = <&osc24M>, <&pll6 0>; 2278b1ba941SHans de Goede clock-output-names = "mmc1", 2288b1ba941SHans de Goede "mmc1_output", 2298b1ba941SHans de Goede "mmc1_sample"; 2308b1ba941SHans de Goede }; 2318b1ba941SHans de Goede 2328b1ba941SHans de Goede mmc2_clk: clk@01c20090 { 2338b1ba941SHans de Goede #clock-cells = <1>; 2348b1ba941SHans de Goede compatible = "allwinner,sun4i-a10-mmc-clk"; 2358b1ba941SHans de Goede reg = <0x01c20090 0x4>; 2368b1ba941SHans de Goede clocks = <&osc24M>, <&pll6 0>; 2378b1ba941SHans de Goede clock-output-names = "mmc2", 2388b1ba941SHans de Goede "mmc2_output", 2398b1ba941SHans de Goede "mmc2_sample"; 2408b1ba941SHans de Goede }; 2418b1ba941SHans de Goede 2428b1ba941SHans de Goede usb_clk: clk@01c200cc { 2438b1ba941SHans de Goede #clock-cells = <1>; 2448b1ba941SHans de Goede #reset-cells = <1>; 2458b1ba941SHans de Goede compatible = "allwinner,sun8i-a23-usb-clk"; 2468b1ba941SHans de Goede reg = <0x01c200cc 0x4>; 2478b1ba941SHans de Goede clocks = <&osc24M>; 2488b1ba941SHans de Goede clock-output-names = "usb_phy0", "usb_phy1", "usb_hsic", 2498b1ba941SHans de Goede "usb_hsic_12M", "usb_ohci0"; 2508b1ba941SHans de Goede }; 2518b1ba941SHans de Goede }; 2528b1ba941SHans de Goede 2538b1ba941SHans de Goede soc@01c00000 { 2548b1ba941SHans de Goede compatible = "simple-bus"; 2558b1ba941SHans de Goede #address-cells = <1>; 2568b1ba941SHans de Goede #size-cells = <1>; 2578b1ba941SHans de Goede ranges; 2588b1ba941SHans de Goede 2598b1ba941SHans de Goede dma: dma-controller@01c02000 { 2608b1ba941SHans de Goede compatible = "allwinner,sun8i-a23-dma"; 2618b1ba941SHans de Goede reg = <0x01c02000 0x1000>; 2628b1ba941SHans de Goede interrupts = <GIC_SPI 50 IRQ_TYPE_LEVEL_HIGH>; 2638b1ba941SHans de Goede clocks = <&ahb1_gates 6>; 2648b1ba941SHans de Goede resets = <&ahb1_rst 6>; 2658b1ba941SHans de Goede #dma-cells = <1>; 2668b1ba941SHans de Goede }; 2678b1ba941SHans de Goede 2688b1ba941SHans de Goede mmc0: mmc@01c0f000 { 269*860fbdd4SHans de Goede compatible = "allwinner,sun7i-a20-mmc", 270*860fbdd4SHans de Goede "allwinner,sun5i-a13-mmc"; 2718b1ba941SHans de Goede reg = <0x01c0f000 0x1000>; 2728b1ba941SHans de Goede clocks = <&ahb1_gates 8>, 2738b1ba941SHans de Goede <&mmc0_clk 0>, 2748b1ba941SHans de Goede <&mmc0_clk 1>, 2758b1ba941SHans de Goede <&mmc0_clk 2>; 2768b1ba941SHans de Goede clock-names = "ahb", 2778b1ba941SHans de Goede "mmc", 2788b1ba941SHans de Goede "output", 2798b1ba941SHans de Goede "sample"; 2808b1ba941SHans de Goede resets = <&ahb1_rst 8>; 2818b1ba941SHans de Goede reset-names = "ahb"; 2828b1ba941SHans de Goede interrupts = <GIC_SPI 60 IRQ_TYPE_LEVEL_HIGH>; 2838b1ba941SHans de Goede status = "disabled"; 2848b1ba941SHans de Goede #address-cells = <1>; 2858b1ba941SHans de Goede #size-cells = <0>; 2868b1ba941SHans de Goede }; 2878b1ba941SHans de Goede 2888b1ba941SHans de Goede mmc1: mmc@01c10000 { 289*860fbdd4SHans de Goede compatible = "allwinner,sun7i-a20-mmc", 290*860fbdd4SHans de Goede "allwinner,sun5i-a13-mmc"; 2918b1ba941SHans de Goede reg = <0x01c10000 0x1000>; 2928b1ba941SHans de Goede clocks = <&ahb1_gates 9>, 2938b1ba941SHans de Goede <&mmc1_clk 0>, 2948b1ba941SHans de Goede <&mmc1_clk 1>, 2958b1ba941SHans de Goede <&mmc1_clk 2>; 2968b1ba941SHans de Goede clock-names = "ahb", 2978b1ba941SHans de Goede "mmc", 2988b1ba941SHans de Goede "output", 2998b1ba941SHans de Goede "sample"; 3008b1ba941SHans de Goede resets = <&ahb1_rst 9>; 3018b1ba941SHans de Goede reset-names = "ahb"; 3028b1ba941SHans de Goede interrupts = <GIC_SPI 61 IRQ_TYPE_LEVEL_HIGH>; 3038b1ba941SHans de Goede status = "disabled"; 3048b1ba941SHans de Goede #address-cells = <1>; 3058b1ba941SHans de Goede #size-cells = <0>; 3068b1ba941SHans de Goede }; 3078b1ba941SHans de Goede 3088b1ba941SHans de Goede mmc2: mmc@01c11000 { 309*860fbdd4SHans de Goede compatible = "allwinner,sun7i-a20-mmc", 310*860fbdd4SHans de Goede "allwinner,sun5i-a13-mmc"; 3118b1ba941SHans de Goede reg = <0x01c11000 0x1000>; 3128b1ba941SHans de Goede clocks = <&ahb1_gates 10>, 3138b1ba941SHans de Goede <&mmc2_clk 0>, 3148b1ba941SHans de Goede <&mmc2_clk 1>, 3158b1ba941SHans de Goede <&mmc2_clk 2>; 3168b1ba941SHans de Goede clock-names = "ahb", 3178b1ba941SHans de Goede "mmc", 3188b1ba941SHans de Goede "output", 3198b1ba941SHans de Goede "sample"; 3208b1ba941SHans de Goede resets = <&ahb1_rst 10>; 3218b1ba941SHans de Goede reset-names = "ahb"; 3228b1ba941SHans de Goede interrupts = <GIC_SPI 62 IRQ_TYPE_LEVEL_HIGH>; 3238b1ba941SHans de Goede status = "disabled"; 3248b1ba941SHans de Goede #address-cells = <1>; 3258b1ba941SHans de Goede #size-cells = <0>; 3268b1ba941SHans de Goede }; 3278b1ba941SHans de Goede 328a51c832cSHans de Goede ehci0: usb@01c1a000 { 329a51c832cSHans de Goede compatible = "allwinner,sun8i-a23-ehci", "generic-ehci"; 330a51c832cSHans de Goede reg = <0x01c1a000 0x100>; 331a51c832cSHans de Goede interrupts = <GIC_SPI 72 IRQ_TYPE_LEVEL_HIGH>; 332a51c832cSHans de Goede clocks = <&ahb1_gates 26>; 333a51c832cSHans de Goede resets = <&ahb1_rst 26>; 334da52a4a3SHans de Goede phys = <&usbphy 1>; 335da52a4a3SHans de Goede phy-names = "usb"; 336a51c832cSHans de Goede status = "disabled"; 337a51c832cSHans de Goede }; 338a51c832cSHans de Goede 339a51c832cSHans de Goede ohci0: usb@01c1a400 { 340a51c832cSHans de Goede compatible = "allwinner,sun8i-a23-ohci", "generic-ohci"; 341a51c832cSHans de Goede reg = <0x01c1a400 0x100>; 342a51c832cSHans de Goede interrupts = <GIC_SPI 73 IRQ_TYPE_LEVEL_HIGH>; 343a51c832cSHans de Goede clocks = <&ahb1_gates 29>, <&usb_clk 16>; 344a51c832cSHans de Goede resets = <&ahb1_rst 29>; 345da52a4a3SHans de Goede phys = <&usbphy 1>; 346da52a4a3SHans de Goede phy-names = "usb"; 347a51c832cSHans de Goede status = "disabled"; 348a51c832cSHans de Goede }; 349a51c832cSHans de Goede 3508b1ba941SHans de Goede pio: pinctrl@01c20800 { 3518b1ba941SHans de Goede /* compatible gets set in SoC specific dtsi file */ 3528b1ba941SHans de Goede reg = <0x01c20800 0x400>; 3538b1ba941SHans de Goede /* interrupts get set in SoC specific dtsi file */ 3548b1ba941SHans de Goede clocks = <&apb1_gates 5>; 3558b1ba941SHans de Goede gpio-controller; 3568b1ba941SHans de Goede interrupt-controller; 357da52a4a3SHans de Goede #interrupt-cells = <3>; 3588b1ba941SHans de Goede #gpio-cells = <3>; 3598b1ba941SHans de Goede 3608b1ba941SHans de Goede uart0_pins_a: uart0@0 { 3618b1ba941SHans de Goede allwinner,pins = "PF2", "PF4"; 3628b1ba941SHans de Goede allwinner,function = "uart0"; 3638b1ba941SHans de Goede allwinner,drive = <SUN4I_PINCTRL_10_MA>; 3648b1ba941SHans de Goede allwinner,pull = <SUN4I_PINCTRL_NO_PULL>; 3658b1ba941SHans de Goede }; 3668b1ba941SHans de Goede 3678b1ba941SHans de Goede mmc0_pins_a: mmc0@0 { 3688b1ba941SHans de Goede allwinner,pins = "PF0", "PF1", "PF2", 3698b1ba941SHans de Goede "PF3", "PF4", "PF5"; 3708b1ba941SHans de Goede allwinner,function = "mmc0"; 3718b1ba941SHans de Goede allwinner,drive = <SUN4I_PINCTRL_30_MA>; 3728b1ba941SHans de Goede allwinner,pull = <SUN4I_PINCTRL_NO_PULL>; 3738b1ba941SHans de Goede }; 3748b1ba941SHans de Goede 3758b1ba941SHans de Goede mmc1_pins_a: mmc1@0 { 3768b1ba941SHans de Goede allwinner,pins = "PG0", "PG1", "PG2", 3778b1ba941SHans de Goede "PG3", "PG4", "PG5"; 3788b1ba941SHans de Goede allwinner,function = "mmc1"; 3798b1ba941SHans de Goede allwinner,drive = <SUN4I_PINCTRL_30_MA>; 3808b1ba941SHans de Goede allwinner,pull = <SUN4I_PINCTRL_NO_PULL>; 3818b1ba941SHans de Goede }; 3828b1ba941SHans de Goede 383d8656b62SChen-Yu Tsai mmc2_8bit_pins: mmc2_8bit { 384d8656b62SChen-Yu Tsai allwinner,pins = "PC5", "PC6", "PC8", 385d8656b62SChen-Yu Tsai "PC9", "PC10", "PC11", 386d8656b62SChen-Yu Tsai "PC12", "PC13", "PC14", 38780e5f83cSHans de Goede "PC15", "PC16"; 388d8656b62SChen-Yu Tsai allwinner,function = "mmc2"; 389d8656b62SChen-Yu Tsai allwinner,drive = <SUN4I_PINCTRL_30_MA>; 390d8656b62SChen-Yu Tsai allwinner,pull = <SUN4I_PINCTRL_NO_PULL>; 391d8656b62SChen-Yu Tsai }; 392d8656b62SChen-Yu Tsai 39380e5f83cSHans de Goede pwm0_pins: pwm0 { 39480e5f83cSHans de Goede allwinner,pins = "PH0"; 39580e5f83cSHans de Goede allwinner,function = "pwm0"; 39680e5f83cSHans de Goede allwinner,drive = <SUN4I_PINCTRL_10_MA>; 39780e5f83cSHans de Goede allwinner,pull = <SUN4I_PINCTRL_NO_PULL>; 39880e5f83cSHans de Goede }; 39980e5f83cSHans de Goede 4008b1ba941SHans de Goede i2c0_pins_a: i2c0@0 { 4018b1ba941SHans de Goede allwinner,pins = "PH2", "PH3"; 4028b1ba941SHans de Goede allwinner,function = "i2c0"; 4038b1ba941SHans de Goede allwinner,drive = <SUN4I_PINCTRL_10_MA>; 4048b1ba941SHans de Goede allwinner,pull = <SUN4I_PINCTRL_NO_PULL>; 4058b1ba941SHans de Goede }; 4068b1ba941SHans de Goede 4078b1ba941SHans de Goede i2c1_pins_a: i2c1@0 { 4088b1ba941SHans de Goede allwinner,pins = "PH4", "PH5"; 4098b1ba941SHans de Goede allwinner,function = "i2c1"; 4108b1ba941SHans de Goede allwinner,drive = <SUN4I_PINCTRL_10_MA>; 4118b1ba941SHans de Goede allwinner,pull = <SUN4I_PINCTRL_NO_PULL>; 4128b1ba941SHans de Goede }; 4138b1ba941SHans de Goede 4148b1ba941SHans de Goede i2c2_pins_a: i2c2@0 { 4158b1ba941SHans de Goede allwinner,pins = "PE12", "PE13"; 4168b1ba941SHans de Goede allwinner,function = "i2c2"; 4178b1ba941SHans de Goede allwinner,drive = <SUN4I_PINCTRL_10_MA>; 4188b1ba941SHans de Goede allwinner,pull = <SUN4I_PINCTRL_NO_PULL>; 4198b1ba941SHans de Goede }; 4208b1ba941SHans de Goede }; 4218b1ba941SHans de Goede 4228b1ba941SHans de Goede ahb1_rst: reset@01c202c0 { 4238b1ba941SHans de Goede #reset-cells = <1>; 4248b1ba941SHans de Goede compatible = "allwinner,sun6i-a31-clock-reset"; 4258b1ba941SHans de Goede reg = <0x01c202c0 0xc>; 4268b1ba941SHans de Goede }; 4278b1ba941SHans de Goede 4288b1ba941SHans de Goede apb1_rst: reset@01c202d0 { 4298b1ba941SHans de Goede #reset-cells = <1>; 4308b1ba941SHans de Goede compatible = "allwinner,sun6i-a31-clock-reset"; 4318b1ba941SHans de Goede reg = <0x01c202d0 0x4>; 4328b1ba941SHans de Goede }; 4338b1ba941SHans de Goede 4348b1ba941SHans de Goede apb2_rst: reset@01c202d8 { 4358b1ba941SHans de Goede #reset-cells = <1>; 4368b1ba941SHans de Goede compatible = "allwinner,sun6i-a31-clock-reset"; 4378b1ba941SHans de Goede reg = <0x01c202d8 0x4>; 4388b1ba941SHans de Goede }; 4398b1ba941SHans de Goede 4408b1ba941SHans de Goede timer@01c20c00 { 4418b1ba941SHans de Goede compatible = "allwinner,sun4i-a10-timer"; 4428b1ba941SHans de Goede reg = <0x01c20c00 0xa0>; 4438b1ba941SHans de Goede interrupts = <GIC_SPI 18 IRQ_TYPE_LEVEL_HIGH>, 4448b1ba941SHans de Goede <GIC_SPI 19 IRQ_TYPE_LEVEL_HIGH>; 4458b1ba941SHans de Goede clocks = <&osc24M>; 4468b1ba941SHans de Goede }; 4478b1ba941SHans de Goede 4488b1ba941SHans de Goede wdt0: watchdog@01c20ca0 { 4498b1ba941SHans de Goede compatible = "allwinner,sun6i-a31-wdt"; 4508b1ba941SHans de Goede reg = <0x01c20ca0 0x20>; 4518b1ba941SHans de Goede interrupts = <GIC_SPI 25 IRQ_TYPE_LEVEL_HIGH>; 4528b1ba941SHans de Goede }; 4538b1ba941SHans de Goede 45480e5f83cSHans de Goede pwm: pwm@01c21400 { 45580e5f83cSHans de Goede compatible = "allwinner,sun7i-a20-pwm"; 45680e5f83cSHans de Goede reg = <0x01c21400 0xc>; 45780e5f83cSHans de Goede clocks = <&osc24M>; 45880e5f83cSHans de Goede #pwm-cells = <3>; 45980e5f83cSHans de Goede status = "disabled"; 46080e5f83cSHans de Goede }; 46180e5f83cSHans de Goede 4628b1ba941SHans de Goede lradc: lradc@01c22800 { 4638b1ba941SHans de Goede compatible = "allwinner,sun4i-a10-lradc-keys"; 4648b1ba941SHans de Goede reg = <0x01c22800 0x100>; 4658b1ba941SHans de Goede interrupts = <GIC_SPI 30 IRQ_TYPE_LEVEL_HIGH>; 4668b1ba941SHans de Goede status = "disabled"; 4678b1ba941SHans de Goede }; 4688b1ba941SHans de Goede 4698b1ba941SHans de Goede uart0: serial@01c28000 { 4708b1ba941SHans de Goede compatible = "snps,dw-apb-uart"; 4718b1ba941SHans de Goede reg = <0x01c28000 0x400>; 4728b1ba941SHans de Goede interrupts = <GIC_SPI 0 IRQ_TYPE_LEVEL_HIGH>; 4738b1ba941SHans de Goede reg-shift = <2>; 4748b1ba941SHans de Goede reg-io-width = <4>; 4758b1ba941SHans de Goede clocks = <&apb2_gates 16>; 4768b1ba941SHans de Goede resets = <&apb2_rst 16>; 4778b1ba941SHans de Goede dmas = <&dma 6>, <&dma 6>; 4788b1ba941SHans de Goede dma-names = "rx", "tx"; 4798b1ba941SHans de Goede status = "disabled"; 4808b1ba941SHans de Goede }; 4818b1ba941SHans de Goede 4828b1ba941SHans de Goede uart1: serial@01c28400 { 4838b1ba941SHans de Goede compatible = "snps,dw-apb-uart"; 4848b1ba941SHans de Goede reg = <0x01c28400 0x400>; 4858b1ba941SHans de Goede interrupts = <GIC_SPI 1 IRQ_TYPE_LEVEL_HIGH>; 4868b1ba941SHans de Goede reg-shift = <2>; 4878b1ba941SHans de Goede reg-io-width = <4>; 4888b1ba941SHans de Goede clocks = <&apb2_gates 17>; 4898b1ba941SHans de Goede resets = <&apb2_rst 17>; 4908b1ba941SHans de Goede dmas = <&dma 7>, <&dma 7>; 4918b1ba941SHans de Goede dma-names = "rx", "tx"; 4928b1ba941SHans de Goede status = "disabled"; 4938b1ba941SHans de Goede }; 4948b1ba941SHans de Goede 4958b1ba941SHans de Goede uart2: serial@01c28800 { 4968b1ba941SHans de Goede compatible = "snps,dw-apb-uart"; 4978b1ba941SHans de Goede reg = <0x01c28800 0x400>; 4988b1ba941SHans de Goede interrupts = <GIC_SPI 2 IRQ_TYPE_LEVEL_HIGH>; 4998b1ba941SHans de Goede reg-shift = <2>; 5008b1ba941SHans de Goede reg-io-width = <4>; 5018b1ba941SHans de Goede clocks = <&apb2_gates 18>; 5028b1ba941SHans de Goede resets = <&apb2_rst 18>; 5038b1ba941SHans de Goede dmas = <&dma 8>, <&dma 8>; 5048b1ba941SHans de Goede dma-names = "rx", "tx"; 5058b1ba941SHans de Goede status = "disabled"; 5068b1ba941SHans de Goede }; 5078b1ba941SHans de Goede 5088b1ba941SHans de Goede uart3: serial@01c28c00 { 5098b1ba941SHans de Goede compatible = "snps,dw-apb-uart"; 5108b1ba941SHans de Goede reg = <0x01c28c00 0x400>; 5118b1ba941SHans de Goede interrupts = <GIC_SPI 3 IRQ_TYPE_LEVEL_HIGH>; 5128b1ba941SHans de Goede reg-shift = <2>; 5138b1ba941SHans de Goede reg-io-width = <4>; 5148b1ba941SHans de Goede clocks = <&apb2_gates 19>; 5158b1ba941SHans de Goede resets = <&apb2_rst 19>; 5168b1ba941SHans de Goede dmas = <&dma 9>, <&dma 9>; 5178b1ba941SHans de Goede dma-names = "rx", "tx"; 5188b1ba941SHans de Goede status = "disabled"; 5198b1ba941SHans de Goede }; 5208b1ba941SHans de Goede 5218b1ba941SHans de Goede uart4: serial@01c29000 { 5228b1ba941SHans de Goede compatible = "snps,dw-apb-uart"; 5238b1ba941SHans de Goede reg = <0x01c29000 0x400>; 5248b1ba941SHans de Goede interrupts = <GIC_SPI 4 IRQ_TYPE_LEVEL_HIGH>; 5258b1ba941SHans de Goede reg-shift = <2>; 5268b1ba941SHans de Goede reg-io-width = <4>; 5278b1ba941SHans de Goede clocks = <&apb2_gates 20>; 5288b1ba941SHans de Goede resets = <&apb2_rst 20>; 5298b1ba941SHans de Goede dmas = <&dma 10>, <&dma 10>; 5308b1ba941SHans de Goede dma-names = "rx", "tx"; 5318b1ba941SHans de Goede status = "disabled"; 5328b1ba941SHans de Goede }; 5338b1ba941SHans de Goede 5348b1ba941SHans de Goede i2c0: i2c@01c2ac00 { 5358b1ba941SHans de Goede compatible = "allwinner,sun6i-a31-i2c"; 5368b1ba941SHans de Goede reg = <0x01c2ac00 0x400>; 5378b1ba941SHans de Goede interrupts = <GIC_SPI 6 IRQ_TYPE_LEVEL_HIGH>; 5388b1ba941SHans de Goede clocks = <&apb2_gates 0>; 5398b1ba941SHans de Goede resets = <&apb2_rst 0>; 5408b1ba941SHans de Goede status = "disabled"; 5418b1ba941SHans de Goede #address-cells = <1>; 5428b1ba941SHans de Goede #size-cells = <0>; 5438b1ba941SHans de Goede }; 5448b1ba941SHans de Goede 5458b1ba941SHans de Goede i2c1: i2c@01c2b000 { 5468b1ba941SHans de Goede compatible = "allwinner,sun6i-a31-i2c"; 5478b1ba941SHans de Goede reg = <0x01c2b000 0x400>; 5488b1ba941SHans de Goede interrupts = <GIC_SPI 7 IRQ_TYPE_LEVEL_HIGH>; 5498b1ba941SHans de Goede clocks = <&apb2_gates 1>; 5508b1ba941SHans de Goede resets = <&apb2_rst 1>; 5518b1ba941SHans de Goede status = "disabled"; 5528b1ba941SHans de Goede #address-cells = <1>; 5538b1ba941SHans de Goede #size-cells = <0>; 5548b1ba941SHans de Goede }; 5558b1ba941SHans de Goede 5568b1ba941SHans de Goede i2c2: i2c@01c2b400 { 5578b1ba941SHans de Goede compatible = "allwinner,sun6i-a31-i2c"; 5588b1ba941SHans de Goede reg = <0x01c2b400 0x400>; 5598b1ba941SHans de Goede interrupts = <GIC_SPI 8 IRQ_TYPE_LEVEL_HIGH>; 5608b1ba941SHans de Goede clocks = <&apb2_gates 2>; 5618b1ba941SHans de Goede resets = <&apb2_rst 2>; 5628b1ba941SHans de Goede status = "disabled"; 5638b1ba941SHans de Goede #address-cells = <1>; 5648b1ba941SHans de Goede #size-cells = <0>; 5658b1ba941SHans de Goede }; 5668b1ba941SHans de Goede 5678b1ba941SHans de Goede gic: interrupt-controller@01c81000 { 5688b1ba941SHans de Goede compatible = "arm,cortex-a7-gic", "arm,cortex-a15-gic"; 5698b1ba941SHans de Goede reg = <0x01c81000 0x1000>, 5708b1ba941SHans de Goede <0x01c82000 0x1000>, 5718b1ba941SHans de Goede <0x01c84000 0x2000>, 5728b1ba941SHans de Goede <0x01c86000 0x2000>; 5738b1ba941SHans de Goede interrupt-controller; 5748b1ba941SHans de Goede #interrupt-cells = <3>; 5758b1ba941SHans de Goede interrupts = <GIC_PPI 9 (GIC_CPU_MASK_SIMPLE(4) | IRQ_TYPE_LEVEL_HIGH)>; 5768b1ba941SHans de Goede }; 5778b1ba941SHans de Goede 5788b1ba941SHans de Goede rtc: rtc@01f00000 { 5798b1ba941SHans de Goede compatible = "allwinner,sun6i-a31-rtc"; 5808b1ba941SHans de Goede reg = <0x01f00000 0x54>; 5818b1ba941SHans de Goede interrupts = <GIC_SPI 40 IRQ_TYPE_LEVEL_HIGH>, 5828b1ba941SHans de Goede <GIC_SPI 41 IRQ_TYPE_LEVEL_HIGH>; 5838b1ba941SHans de Goede }; 5848b1ba941SHans de Goede 58580e5f83cSHans de Goede nmi_intc: interrupt-controller@01f00c0c { 58680e5f83cSHans de Goede compatible = "allwinner,sun6i-a31-sc-nmi"; 58780e5f83cSHans de Goede interrupt-controller; 58880e5f83cSHans de Goede #interrupt-cells = <2>; 58980e5f83cSHans de Goede reg = <0x01f00c0c 0x38>; 59080e5f83cSHans de Goede interrupts = <GIC_SPI 32 IRQ_TYPE_LEVEL_HIGH>; 59180e5f83cSHans de Goede }; 59280e5f83cSHans de Goede 5938b1ba941SHans de Goede prcm@01f01400 { 5948b1ba941SHans de Goede compatible = "allwinner,sun8i-a23-prcm"; 5958b1ba941SHans de Goede reg = <0x01f01400 0x200>; 5968b1ba941SHans de Goede 5978b1ba941SHans de Goede ar100: ar100_clk { 5988b1ba941SHans de Goede compatible = "fixed-factor-clock"; 5998b1ba941SHans de Goede #clock-cells = <0>; 6008b1ba941SHans de Goede clock-div = <1>; 6018b1ba941SHans de Goede clock-mult = <1>; 6028b1ba941SHans de Goede clocks = <&osc24M>; 6038b1ba941SHans de Goede clock-output-names = "ar100"; 6048b1ba941SHans de Goede }; 6058b1ba941SHans de Goede 6068b1ba941SHans de Goede ahb0: ahb0_clk { 6078b1ba941SHans de Goede compatible = "fixed-factor-clock"; 6088b1ba941SHans de Goede #clock-cells = <0>; 6098b1ba941SHans de Goede clock-div = <1>; 6108b1ba941SHans de Goede clock-mult = <1>; 6118b1ba941SHans de Goede clocks = <&ar100>; 6128b1ba941SHans de Goede clock-output-names = "ahb0"; 6138b1ba941SHans de Goede }; 6148b1ba941SHans de Goede 6158b1ba941SHans de Goede apb0: apb0_clk { 6168b1ba941SHans de Goede compatible = "allwinner,sun8i-a23-apb0-clk"; 6178b1ba941SHans de Goede #clock-cells = <0>; 6188b1ba941SHans de Goede clocks = <&ahb0>; 6198b1ba941SHans de Goede clock-output-names = "apb0"; 6208b1ba941SHans de Goede }; 6218b1ba941SHans de Goede 6228b1ba941SHans de Goede apb0_gates: apb0_gates_clk { 6238b1ba941SHans de Goede compatible = "allwinner,sun8i-a23-apb0-gates-clk"; 6248b1ba941SHans de Goede #clock-cells = <1>; 6258b1ba941SHans de Goede clocks = <&apb0>; 6268b1ba941SHans de Goede clock-output-names = "apb0_pio", "apb0_timer", 6278b1ba941SHans de Goede "apb0_rsb", "apb0_uart", 6288b1ba941SHans de Goede "apb0_i2c"; 6298b1ba941SHans de Goede }; 6308b1ba941SHans de Goede 6318b1ba941SHans de Goede apb0_rst: apb0_rst { 6328b1ba941SHans de Goede compatible = "allwinner,sun6i-a31-clock-reset"; 6338b1ba941SHans de Goede #reset-cells = <1>; 6348b1ba941SHans de Goede }; 6358b1ba941SHans de Goede }; 6368b1ba941SHans de Goede 6378b1ba941SHans de Goede cpucfg@01f01c00 { 6388b1ba941SHans de Goede compatible = "allwinner,sun8i-a23-cpuconfig"; 6398b1ba941SHans de Goede reg = <0x01f01c00 0x300>; 6408b1ba941SHans de Goede }; 6418b1ba941SHans de Goede 6428b1ba941SHans de Goede r_uart: serial@01f02800 { 6438b1ba941SHans de Goede compatible = "snps,dw-apb-uart"; 6448b1ba941SHans de Goede reg = <0x01f02800 0x400>; 6458b1ba941SHans de Goede interrupts = <GIC_SPI 38 IRQ_TYPE_LEVEL_HIGH>; 6468b1ba941SHans de Goede reg-shift = <2>; 6478b1ba941SHans de Goede reg-io-width = <4>; 6488b1ba941SHans de Goede clocks = <&apb0_gates 4>; 6498b1ba941SHans de Goede resets = <&apb0_rst 4>; 6508b1ba941SHans de Goede status = "disabled"; 6518b1ba941SHans de Goede }; 6528b1ba941SHans de Goede 6538b1ba941SHans de Goede r_pio: pinctrl@01f02c00 { 6548b1ba941SHans de Goede compatible = "allwinner,sun8i-a23-r-pinctrl"; 6558b1ba941SHans de Goede reg = <0x01f02c00 0x400>; 6568b1ba941SHans de Goede interrupts = <GIC_SPI 45 IRQ_TYPE_LEVEL_HIGH>; 6578b1ba941SHans de Goede clocks = <&apb0_gates 0>; 6588b1ba941SHans de Goede resets = <&apb0_rst 0>; 6598b1ba941SHans de Goede gpio-controller; 6608b1ba941SHans de Goede interrupt-controller; 66180e5f83cSHans de Goede #interrupt-cells = <3>; 6628b1ba941SHans de Goede #address-cells = <1>; 6638b1ba941SHans de Goede #size-cells = <0>; 6648b1ba941SHans de Goede #gpio-cells = <3>; 6658b1ba941SHans de Goede 66680e5f83cSHans de Goede r_rsb_pins: r_rsb { 66780e5f83cSHans de Goede allwinner,pins = "PL0", "PL1"; 66880e5f83cSHans de Goede allwinner,function = "s_rsb"; 66980e5f83cSHans de Goede allwinner,drive = <SUN4I_PINCTRL_20_MA>; 67080e5f83cSHans de Goede allwinner,pull = <SUN4I_PINCTRL_PULL_UP>; 67180e5f83cSHans de Goede }; 67280e5f83cSHans de Goede 6738b1ba941SHans de Goede r_uart_pins_a: r_uart@0 { 6748b1ba941SHans de Goede allwinner,pins = "PL2", "PL3"; 6758b1ba941SHans de Goede allwinner,function = "s_uart"; 6768b1ba941SHans de Goede allwinner,drive = <SUN4I_PINCTRL_10_MA>; 6778b1ba941SHans de Goede allwinner,pull = <SUN4I_PINCTRL_NO_PULL>; 6788b1ba941SHans de Goede }; 6798b1ba941SHans de Goede }; 68080e5f83cSHans de Goede 68180e5f83cSHans de Goede r_rsb: rsb@01f03400 { 68280e5f83cSHans de Goede compatible = "allwinner,sun8i-a23-rsb"; 68380e5f83cSHans de Goede reg = <0x01f03400 0x400>; 68480e5f83cSHans de Goede interrupts = <GIC_SPI 39 IRQ_TYPE_LEVEL_HIGH>; 68580e5f83cSHans de Goede clocks = <&apb0_gates 3>; 68680e5f83cSHans de Goede clock-frequency = <3000000>; 68780e5f83cSHans de Goede resets = <&apb0_rst 3>; 68880e5f83cSHans de Goede pinctrl-names = "default"; 68980e5f83cSHans de Goede pinctrl-0 = <&r_rsb_pins>; 69080e5f83cSHans de Goede status = "disabled"; 69180e5f83cSHans de Goede #address-cells = <1>; 69280e5f83cSHans de Goede #size-cells = <0>; 69380e5f83cSHans de Goede }; 6948b1ba941SHans de Goede }; 6958b1ba941SHans de Goede}; 696