153ab4af3SHans de Goede/* 253ab4af3SHans de Goede * Copyright 2014 Chen-Yu Tsai 353ab4af3SHans de Goede * 453ab4af3SHans de Goede * Chen-Yu Tsai <wens@csie.org> 553ab4af3SHans de Goede * 653ab4af3SHans de Goede * This file is dual-licensed: you can use it either under the terms 753ab4af3SHans de Goede * of the GPL or the X11 license, at your option. Note that this dual 853ab4af3SHans de Goede * licensing only applies to this file, and not this project as a 953ab4af3SHans de Goede * whole. 1053ab4af3SHans de Goede * 1153ab4af3SHans de Goede * a) This file is free software; you can redistribute it and/or 1253ab4af3SHans de Goede * modify it under the terms of the GNU General Public License as 1353ab4af3SHans de Goede * published by the Free Software Foundation; either version 2 of the 1453ab4af3SHans de Goede * License, or (at your option) any later version. 1553ab4af3SHans de Goede * 1653ab4af3SHans de Goede * This file is distributed in the hope that it will be useful, 1753ab4af3SHans de Goede * but WITHOUT ANY WARRANTY; without even the implied warranty of 1853ab4af3SHans de Goede * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 1953ab4af3SHans de Goede * GNU General Public License for more details. 2053ab4af3SHans de Goede * 2153ab4af3SHans de Goede * Or, alternatively, 2253ab4af3SHans de Goede * 2353ab4af3SHans de Goede * b) Permission is hereby granted, free of charge, to any person 2453ab4af3SHans de Goede * obtaining a copy of this software and associated documentation 2553ab4af3SHans de Goede * files (the "Software"), to deal in the Software without 2653ab4af3SHans de Goede * restriction, including without limitation the rights to use, 2753ab4af3SHans de Goede * copy, modify, merge, publish, distribute, sublicense, and/or 2853ab4af3SHans de Goede * sell copies of the Software, and to permit persons to whom the 2953ab4af3SHans de Goede * Software is furnished to do so, subject to the following 3053ab4af3SHans de Goede * conditions: 3153ab4af3SHans de Goede * 3253ab4af3SHans de Goede * The above copyright notice and this permission notice shall be 3353ab4af3SHans de Goede * included in all copies or substantial portions of the Software. 3453ab4af3SHans de Goede * 3553ab4af3SHans de Goede * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, 3653ab4af3SHans de Goede * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES 3753ab4af3SHans de Goede * OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND 3853ab4af3SHans de Goede * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT 3953ab4af3SHans de Goede * HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, 4053ab4af3SHans de Goede * WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING 4153ab4af3SHans de Goede * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR 4253ab4af3SHans de Goede * OTHER DEALINGS IN THE SOFTWARE. 4353ab4af3SHans de Goede */ 4453ab4af3SHans de Goede 4553ab4af3SHans de Goede#include "skeleton64.dtsi" 4653ab4af3SHans de Goede 4753ab4af3SHans de Goede#include <dt-bindings/interrupt-controller/arm-gic.h> 4853ab4af3SHans de Goede 4953ab4af3SHans de Goede#include <dt-bindings/pinctrl/sun4i-a10.h> 5053ab4af3SHans de Goede 5153ab4af3SHans de Goede/ { 5253ab4af3SHans de Goede interrupt-parent = <&gic>; 5353ab4af3SHans de Goede 5453ab4af3SHans de Goede cpus { 5553ab4af3SHans de Goede #address-cells = <1>; 5653ab4af3SHans de Goede #size-cells = <0>; 5753ab4af3SHans de Goede 5853ab4af3SHans de Goede cpu0: cpu@0 { 5953ab4af3SHans de Goede compatible = "arm,cortex-a7"; 6053ab4af3SHans de Goede device_type = "cpu"; 6153ab4af3SHans de Goede reg = <0x0>; 6253ab4af3SHans de Goede }; 6353ab4af3SHans de Goede 6453ab4af3SHans de Goede cpu1: cpu@1 { 6553ab4af3SHans de Goede compatible = "arm,cortex-a7"; 6653ab4af3SHans de Goede device_type = "cpu"; 6753ab4af3SHans de Goede reg = <0x1>; 6853ab4af3SHans de Goede }; 6953ab4af3SHans de Goede 7053ab4af3SHans de Goede cpu2: cpu@2 { 7153ab4af3SHans de Goede compatible = "arm,cortex-a7"; 7253ab4af3SHans de Goede device_type = "cpu"; 7353ab4af3SHans de Goede reg = <0x2>; 7453ab4af3SHans de Goede }; 7553ab4af3SHans de Goede 7653ab4af3SHans de Goede cpu3: cpu@3 { 7753ab4af3SHans de Goede compatible = "arm,cortex-a7"; 7853ab4af3SHans de Goede device_type = "cpu"; 7953ab4af3SHans de Goede reg = <0x3>; 8053ab4af3SHans de Goede }; 8153ab4af3SHans de Goede 8253ab4af3SHans de Goede cpu4: cpu@100 { 8353ab4af3SHans de Goede compatible = "arm,cortex-a15"; 8453ab4af3SHans de Goede device_type = "cpu"; 8553ab4af3SHans de Goede reg = <0x100>; 8653ab4af3SHans de Goede }; 8753ab4af3SHans de Goede 8853ab4af3SHans de Goede cpu5: cpu@101 { 8953ab4af3SHans de Goede compatible = "arm,cortex-a15"; 9053ab4af3SHans de Goede device_type = "cpu"; 9153ab4af3SHans de Goede reg = <0x101>; 9253ab4af3SHans de Goede }; 9353ab4af3SHans de Goede 9453ab4af3SHans de Goede cpu6: cpu@102 { 9553ab4af3SHans de Goede compatible = "arm,cortex-a15"; 9653ab4af3SHans de Goede device_type = "cpu"; 9753ab4af3SHans de Goede reg = <0x102>; 9853ab4af3SHans de Goede }; 9953ab4af3SHans de Goede 10053ab4af3SHans de Goede cpu7: cpu@103 { 10153ab4af3SHans de Goede compatible = "arm,cortex-a15"; 10253ab4af3SHans de Goede device_type = "cpu"; 10353ab4af3SHans de Goede reg = <0x103>; 10453ab4af3SHans de Goede }; 10553ab4af3SHans de Goede }; 10653ab4af3SHans de Goede 10753ab4af3SHans de Goede memory { 10853ab4af3SHans de Goede /* 8GB max. with LPAE */ 10953ab4af3SHans de Goede reg = <0 0x20000000 0x02 0>; 11053ab4af3SHans de Goede }; 11153ab4af3SHans de Goede 11253ab4af3SHans de Goede timer { 11353ab4af3SHans de Goede compatible = "arm,armv7-timer"; 11453ab4af3SHans de Goede interrupts = <GIC_PPI 13 (GIC_CPU_MASK_SIMPLE(4) | IRQ_TYPE_LEVEL_LOW)>, 11553ab4af3SHans de Goede <GIC_PPI 14 (GIC_CPU_MASK_SIMPLE(4) | IRQ_TYPE_LEVEL_LOW)>, 11653ab4af3SHans de Goede <GIC_PPI 11 (GIC_CPU_MASK_SIMPLE(4) | IRQ_TYPE_LEVEL_LOW)>, 11753ab4af3SHans de Goede <GIC_PPI 10 (GIC_CPU_MASK_SIMPLE(4) | IRQ_TYPE_LEVEL_LOW)>; 11853ab4af3SHans de Goede clock-frequency = <24000000>; 11953ab4af3SHans de Goede arm,cpu-registers-not-fw-configured; 12053ab4af3SHans de Goede }; 12153ab4af3SHans de Goede 12253ab4af3SHans de Goede clocks { 12353ab4af3SHans de Goede #address-cells = <1>; 12453ab4af3SHans de Goede #size-cells = <1>; 12553ab4af3SHans de Goede /* 12653ab4af3SHans de Goede * map 64 bit address range down to 32 bits, 12753ab4af3SHans de Goede * as the peripherals are all under 512MB. 12853ab4af3SHans de Goede */ 12953ab4af3SHans de Goede ranges = <0 0 0 0x20000000>; 13053ab4af3SHans de Goede 13180e5f83cSHans de Goede /* 13280e5f83cSHans de Goede * This clock is actually configurable from the PRCM address 13380e5f83cSHans de Goede * space. The external 24M oscillator can be turned off, and 13480e5f83cSHans de Goede * the clock switched to an internal 16M RC oscillator. Under 13580e5f83cSHans de Goede * normal operation there's no reason to do this, and the 13680e5f83cSHans de Goede * default is to use the external good one, so just model this 13780e5f83cSHans de Goede * as a fixed clock. Also it is not entirely clear if the 13880e5f83cSHans de Goede * osc24M mux in the PRCM affects the entire clock tree, which 13980e5f83cSHans de Goede * would also throw all the PLL clock rates off, or just the 14080e5f83cSHans de Goede * downstream clocks in the PRCM. 14180e5f83cSHans de Goede */ 14253ab4af3SHans de Goede osc24M: osc24M_clk { 14353ab4af3SHans de Goede #clock-cells = <0>; 14453ab4af3SHans de Goede compatible = "fixed-clock"; 14553ab4af3SHans de Goede clock-frequency = <24000000>; 14653ab4af3SHans de Goede clock-output-names = "osc24M"; 14753ab4af3SHans de Goede }; 14853ab4af3SHans de Goede 14980e5f83cSHans de Goede /* 15080e5f83cSHans de Goede * The 32k clock is from an external source, normally the 15180e5f83cSHans de Goede * AC100 codec/RTC chip. This clock is by default enabled 15280e5f83cSHans de Goede * and clocked at 32768 Hz, from the oscillator connected 15380e5f83cSHans de Goede * to the AC100. It is configurable, but no such driver or 15480e5f83cSHans de Goede * bindings exist yet. 15580e5f83cSHans de Goede */ 15653ab4af3SHans de Goede osc32k: osc32k_clk { 15753ab4af3SHans de Goede #clock-cells = <0>; 15853ab4af3SHans de Goede compatible = "fixed-clock"; 15953ab4af3SHans de Goede clock-frequency = <32768>; 16053ab4af3SHans de Goede clock-output-names = "osc32k"; 16153ab4af3SHans de Goede }; 16253ab4af3SHans de Goede 16353ab4af3SHans de Goede usb_mod_clk: clk@00a08000 { 16453ab4af3SHans de Goede #clock-cells = <1>; 16553ab4af3SHans de Goede #reset-cells = <1>; 16653ab4af3SHans de Goede compatible = "allwinner,sun9i-a80-usb-mod-clk"; 16753ab4af3SHans de Goede reg = <0x00a08000 0x4>; 16853ab4af3SHans de Goede clocks = <&ahb1_gates 1>; 16953ab4af3SHans de Goede clock-output-names = "usb0_ahb", "usb_ohci0", 17053ab4af3SHans de Goede "usb1_ahb", "usb_ohci1", 17153ab4af3SHans de Goede "usb2_ahb", "usb_ohci2"; 17253ab4af3SHans de Goede }; 17353ab4af3SHans de Goede 17453ab4af3SHans de Goede usb_phy_clk: clk@00a08004 { 17553ab4af3SHans de Goede #clock-cells = <1>; 17653ab4af3SHans de Goede #reset-cells = <1>; 17753ab4af3SHans de Goede compatible = "allwinner,sun9i-a80-usb-phy-clk"; 17853ab4af3SHans de Goede reg = <0x00a08004 0x4>; 17953ab4af3SHans de Goede clocks = <&ahb1_gates 1>; 18053ab4af3SHans de Goede clock-output-names = "usb_phy0", "usb_hsic1_480M", 18153ab4af3SHans de Goede "usb_phy1", "usb_hsic2_480M", 18253ab4af3SHans de Goede "usb_phy2", "usb_hsic_12M"; 18353ab4af3SHans de Goede }; 18453ab4af3SHans de Goede 18580e5f83cSHans de Goede pll3: clk@06000008 { 18680e5f83cSHans de Goede /* placeholder until implemented */ 18780e5f83cSHans de Goede #clock-cells = <0>; 18880e5f83cSHans de Goede compatible = "fixed-clock"; 18980e5f83cSHans de Goede clock-rate = <0>; 19080e5f83cSHans de Goede clock-output-names = "pll3"; 19180e5f83cSHans de Goede }; 19280e5f83cSHans de Goede 19353ab4af3SHans de Goede pll4: clk@0600000c { 19453ab4af3SHans de Goede #clock-cells = <0>; 19553ab4af3SHans de Goede compatible = "allwinner,sun9i-a80-pll4-clk"; 19653ab4af3SHans de Goede reg = <0x0600000c 0x4>; 19753ab4af3SHans de Goede clocks = <&osc24M>; 19853ab4af3SHans de Goede clock-output-names = "pll4"; 19953ab4af3SHans de Goede }; 20053ab4af3SHans de Goede 20153ab4af3SHans de Goede pll12: clk@0600002c { 20253ab4af3SHans de Goede #clock-cells = <0>; 20353ab4af3SHans de Goede compatible = "allwinner,sun9i-a80-pll4-clk"; 20453ab4af3SHans de Goede reg = <0x0600002c 0x4>; 20553ab4af3SHans de Goede clocks = <&osc24M>; 20653ab4af3SHans de Goede clock-output-names = "pll12"; 20753ab4af3SHans de Goede }; 20853ab4af3SHans de Goede 20953ab4af3SHans de Goede gt_clk: clk@0600005c { 21053ab4af3SHans de Goede #clock-cells = <0>; 21153ab4af3SHans de Goede compatible = "allwinner,sun9i-a80-gt-clk"; 21253ab4af3SHans de Goede reg = <0x0600005c 0x4>; 21353ab4af3SHans de Goede clocks = <&osc24M>, <&pll4>, <&pll12>, <&pll12>; 21453ab4af3SHans de Goede clock-output-names = "gt"; 21553ab4af3SHans de Goede }; 21653ab4af3SHans de Goede 21753ab4af3SHans de Goede ahb0: clk@06000060 { 21853ab4af3SHans de Goede #clock-cells = <0>; 21953ab4af3SHans de Goede compatible = "allwinner,sun9i-a80-ahb-clk"; 22053ab4af3SHans de Goede reg = <0x06000060 0x4>; 22153ab4af3SHans de Goede clocks = <>_clk>, <&pll4>, <&pll12>, <&pll12>; 22253ab4af3SHans de Goede clock-output-names = "ahb0"; 22353ab4af3SHans de Goede }; 22453ab4af3SHans de Goede 22553ab4af3SHans de Goede ahb1: clk@06000064 { 22653ab4af3SHans de Goede #clock-cells = <0>; 22753ab4af3SHans de Goede compatible = "allwinner,sun9i-a80-ahb-clk"; 22853ab4af3SHans de Goede reg = <0x06000064 0x4>; 22953ab4af3SHans de Goede clocks = <>_clk>, <&pll4>, <&pll12>, <&pll12>; 23053ab4af3SHans de Goede clock-output-names = "ahb1"; 23153ab4af3SHans de Goede }; 23253ab4af3SHans de Goede 23353ab4af3SHans de Goede ahb2: clk@06000068 { 23453ab4af3SHans de Goede #clock-cells = <0>; 23553ab4af3SHans de Goede compatible = "allwinner,sun9i-a80-ahb-clk"; 23653ab4af3SHans de Goede reg = <0x06000068 0x4>; 23753ab4af3SHans de Goede clocks = <>_clk>, <&pll4>, <&pll12>, <&pll12>; 23853ab4af3SHans de Goede clock-output-names = "ahb2"; 23953ab4af3SHans de Goede }; 24053ab4af3SHans de Goede 24153ab4af3SHans de Goede apb0: clk@06000070 { 24253ab4af3SHans de Goede #clock-cells = <0>; 24353ab4af3SHans de Goede compatible = "allwinner,sun9i-a80-apb0-clk"; 24453ab4af3SHans de Goede reg = <0x06000070 0x4>; 24553ab4af3SHans de Goede clocks = <&osc24M>, <&pll4>; 24653ab4af3SHans de Goede clock-output-names = "apb0"; 24753ab4af3SHans de Goede }; 24853ab4af3SHans de Goede 24953ab4af3SHans de Goede apb1: clk@06000074 { 25053ab4af3SHans de Goede #clock-cells = <0>; 25153ab4af3SHans de Goede compatible = "allwinner,sun9i-a80-apb1-clk"; 25253ab4af3SHans de Goede reg = <0x06000074 0x4>; 25353ab4af3SHans de Goede clocks = <&osc24M>, <&pll4>; 25453ab4af3SHans de Goede clock-output-names = "apb1"; 25553ab4af3SHans de Goede }; 25653ab4af3SHans de Goede 25753ab4af3SHans de Goede cci400_clk: clk@06000078 { 25853ab4af3SHans de Goede #clock-cells = <0>; 25953ab4af3SHans de Goede compatible = "allwinner,sun9i-a80-gt-clk"; 26053ab4af3SHans de Goede reg = <0x06000078 0x4>; 26153ab4af3SHans de Goede clocks = <&osc24M>, <&pll4>, <&pll12>, <&pll12>; 26253ab4af3SHans de Goede clock-output-names = "cci400"; 26353ab4af3SHans de Goede }; 26453ab4af3SHans de Goede 26553ab4af3SHans de Goede mmc0_clk: clk@06000410 { 26653ab4af3SHans de Goede #clock-cells = <1>; 26753ab4af3SHans de Goede compatible = "allwinner,sun9i-a80-mmc-clk"; 26853ab4af3SHans de Goede reg = <0x06000410 0x4>; 26953ab4af3SHans de Goede clocks = <&osc24M>, <&pll4>; 27053ab4af3SHans de Goede clock-output-names = "mmc0", "mmc0_output", 27153ab4af3SHans de Goede "mmc0_sample"; 27253ab4af3SHans de Goede }; 27353ab4af3SHans de Goede 27453ab4af3SHans de Goede mmc1_clk: clk@06000414 { 27553ab4af3SHans de Goede #clock-cells = <1>; 27653ab4af3SHans de Goede compatible = "allwinner,sun9i-a80-mmc-clk"; 27753ab4af3SHans de Goede reg = <0x06000414 0x4>; 27853ab4af3SHans de Goede clocks = <&osc24M>, <&pll4>; 27953ab4af3SHans de Goede clock-output-names = "mmc1", "mmc1_output", 28053ab4af3SHans de Goede "mmc1_sample"; 28153ab4af3SHans de Goede }; 28253ab4af3SHans de Goede 28353ab4af3SHans de Goede mmc2_clk: clk@06000418 { 28453ab4af3SHans de Goede #clock-cells = <1>; 28553ab4af3SHans de Goede compatible = "allwinner,sun9i-a80-mmc-clk"; 28653ab4af3SHans de Goede reg = <0x06000418 0x4>; 28753ab4af3SHans de Goede clocks = <&osc24M>, <&pll4>; 28853ab4af3SHans de Goede clock-output-names = "mmc2", "mmc2_output", 28953ab4af3SHans de Goede "mmc2_sample"; 29053ab4af3SHans de Goede }; 29153ab4af3SHans de Goede 29253ab4af3SHans de Goede mmc3_clk: clk@0600041c { 29353ab4af3SHans de Goede #clock-cells = <1>; 29453ab4af3SHans de Goede compatible = "allwinner,sun9i-a80-mmc-clk"; 29553ab4af3SHans de Goede reg = <0x0600041c 0x4>; 29653ab4af3SHans de Goede clocks = <&osc24M>, <&pll4>; 29753ab4af3SHans de Goede clock-output-names = "mmc3", "mmc3_output", 29853ab4af3SHans de Goede "mmc3_sample"; 29953ab4af3SHans de Goede }; 30053ab4af3SHans de Goede 30153ab4af3SHans de Goede ahb0_gates: clk@06000580 { 30253ab4af3SHans de Goede #clock-cells = <1>; 30353ab4af3SHans de Goede compatible = "allwinner,sun9i-a80-ahb0-gates-clk"; 30453ab4af3SHans de Goede reg = <0x06000580 0x4>; 30553ab4af3SHans de Goede clocks = <&ahb0>; 30680e5f83cSHans de Goede clock-indices = <0>, <1>, <3>, 30780e5f83cSHans de Goede <5>, <8>, <12>, 30880e5f83cSHans de Goede <13>, <14>, 30980e5f83cSHans de Goede <15>, <16>, <18>, 31080e5f83cSHans de Goede <20>, <21>, <22>, 31180e5f83cSHans de Goede <23>; 31253ab4af3SHans de Goede clock-output-names = "ahb0_fd", "ahb0_ve", "ahb0_gpu", 31353ab4af3SHans de Goede "ahb0_ss", "ahb0_sd", "ahb0_nand1", 31453ab4af3SHans de Goede "ahb0_nand0", "ahb0_sdram", 31553ab4af3SHans de Goede "ahb0_mipi_hsi", "ahb0_sata", "ahb0_ts", 31653ab4af3SHans de Goede "ahb0_spi0", "ahb0_spi1", "ahb0_spi2", 31753ab4af3SHans de Goede "ahb0_spi3"; 31853ab4af3SHans de Goede }; 31953ab4af3SHans de Goede 32053ab4af3SHans de Goede ahb1_gates: clk@06000584 { 32153ab4af3SHans de Goede #clock-cells = <1>; 32253ab4af3SHans de Goede compatible = "allwinner,sun9i-a80-ahb1-gates-clk"; 32353ab4af3SHans de Goede reg = <0x06000584 0x4>; 32453ab4af3SHans de Goede clocks = <&ahb1>; 32580e5f83cSHans de Goede clock-indices = <0>, <1>, 32680e5f83cSHans de Goede <17>, <21>, 32780e5f83cSHans de Goede <22>, <23>, 32880e5f83cSHans de Goede <24>; 32953ab4af3SHans de Goede clock-output-names = "ahb1_usbotg", "ahb1_usbhci", 33053ab4af3SHans de Goede "ahb1_gmac", "ahb1_msgbox", 33153ab4af3SHans de Goede "ahb1_spinlock", "ahb1_hstimer", 33253ab4af3SHans de Goede "ahb1_dma"; 33353ab4af3SHans de Goede }; 33453ab4af3SHans de Goede 33553ab4af3SHans de Goede ahb2_gates: clk@06000588 { 33653ab4af3SHans de Goede #clock-cells = <1>; 33753ab4af3SHans de Goede compatible = "allwinner,sun9i-a80-ahb2-gates-clk"; 33853ab4af3SHans de Goede reg = <0x06000588 0x4>; 33953ab4af3SHans de Goede clocks = <&ahb2>; 34080e5f83cSHans de Goede clock-indices = <0>, <1>, 34180e5f83cSHans de Goede <2>, <4>, <5>, 34280e5f83cSHans de Goede <7>, <8>, <11>; 34353ab4af3SHans de Goede clock-output-names = "ahb2_lcd0", "ahb2_lcd1", 34453ab4af3SHans de Goede "ahb2_edp", "ahb2_csi", "ahb2_hdmi", 34553ab4af3SHans de Goede "ahb2_de", "ahb2_mp", "ahb2_mipi_dsi"; 34653ab4af3SHans de Goede }; 34753ab4af3SHans de Goede 34853ab4af3SHans de Goede apb0_gates: clk@06000590 { 34953ab4af3SHans de Goede #clock-cells = <1>; 35053ab4af3SHans de Goede compatible = "allwinner,sun9i-a80-apb0-gates-clk"; 35153ab4af3SHans de Goede reg = <0x06000590 0x4>; 35253ab4af3SHans de Goede clocks = <&apb0>; 35380e5f83cSHans de Goede clock-indices = <1>, <5>, 35480e5f83cSHans de Goede <11>, <12>, <13>, 35580e5f83cSHans de Goede <15>, <17>, <18>, 35680e5f83cSHans de Goede <19>; 35753ab4af3SHans de Goede clock-output-names = "apb0_spdif", "apb0_pio", 35853ab4af3SHans de Goede "apb0_ac97", "apb0_i2s0", "apb0_i2s1", 35953ab4af3SHans de Goede "apb0_lradc", "apb0_gpadc", "apb0_twd", 36053ab4af3SHans de Goede "apb0_cirtx"; 36153ab4af3SHans de Goede }; 36253ab4af3SHans de Goede 36353ab4af3SHans de Goede apb1_gates: clk@06000594 { 36453ab4af3SHans de Goede #clock-cells = <1>; 36553ab4af3SHans de Goede compatible = "allwinner,sun9i-a80-apb1-gates-clk"; 36653ab4af3SHans de Goede reg = <0x06000594 0x4>; 36753ab4af3SHans de Goede clocks = <&apb1>; 36880e5f83cSHans de Goede clock-indices = <0>, <1>, 36980e5f83cSHans de Goede <2>, <3>, <4>, 37080e5f83cSHans de Goede <16>, <17>, 37180e5f83cSHans de Goede <18>, <19>, 37280e5f83cSHans de Goede <20>, <21>; 37353ab4af3SHans de Goede clock-output-names = "apb1_i2c0", "apb1_i2c1", 37453ab4af3SHans de Goede "apb1_i2c2", "apb1_i2c3", "apb1_i2c4", 37553ab4af3SHans de Goede "apb1_uart0", "apb1_uart1", 37653ab4af3SHans de Goede "apb1_uart2", "apb1_uart3", 37753ab4af3SHans de Goede "apb1_uart4", "apb1_uart5"; 37853ab4af3SHans de Goede }; 37980e5f83cSHans de Goede 38080e5f83cSHans de Goede cpus_clk: clk@08001410 { 38180e5f83cSHans de Goede compatible = "allwinner,sun9i-a80-cpus-clk"; 38280e5f83cSHans de Goede reg = <0x08001410 0x4>; 38380e5f83cSHans de Goede #clock-cells = <0>; 38480e5f83cSHans de Goede clocks = <&osc32k>, <&osc24M>, <&pll4>, <&pll3>; 38580e5f83cSHans de Goede clock-output-names = "cpus"; 38680e5f83cSHans de Goede }; 38780e5f83cSHans de Goede 38880e5f83cSHans de Goede ahbs: ahbs_clk { 38980e5f83cSHans de Goede compatible = "fixed-factor-clock"; 39080e5f83cSHans de Goede #clock-cells = <0>; 39180e5f83cSHans de Goede clock-div = <1>; 39280e5f83cSHans de Goede clock-mult = <1>; 39380e5f83cSHans de Goede clocks = <&cpus_clk>; 39480e5f83cSHans de Goede clock-output-names = "ahbs"; 39580e5f83cSHans de Goede }; 39680e5f83cSHans de Goede 39780e5f83cSHans de Goede apbs: clk@0800141c { 39880e5f83cSHans de Goede compatible = "allwinner,sun8i-a23-apb0-clk"; 39980e5f83cSHans de Goede reg = <0x0800141c 0x4>; 40080e5f83cSHans de Goede #clock-cells = <0>; 40180e5f83cSHans de Goede clocks = <&ahbs>; 40280e5f83cSHans de Goede clock-output-names = "apbs"; 40380e5f83cSHans de Goede }; 40480e5f83cSHans de Goede 40580e5f83cSHans de Goede apbs_gates: clk@08001428 { 40680e5f83cSHans de Goede compatible = "allwinner,sun9i-a80-apbs-gates-clk"; 40780e5f83cSHans de Goede reg = <0x08001428 0x4>; 40880e5f83cSHans de Goede #clock-cells = <1>; 40980e5f83cSHans de Goede clocks = <&apbs>; 41080e5f83cSHans de Goede clock-indices = <0>, <1>, 41180e5f83cSHans de Goede <2>, <3>, 41280e5f83cSHans de Goede <4>, <5>, 41380e5f83cSHans de Goede <6>, <7>, 41480e5f83cSHans de Goede <12>, <13>, 41580e5f83cSHans de Goede <16>, <17>, 41680e5f83cSHans de Goede <18>, <20>; 41780e5f83cSHans de Goede clock-output-names = "apbs_pio", "apbs_ir", 41880e5f83cSHans de Goede "apbs_timer", "apbs_rsb", 41980e5f83cSHans de Goede "apbs_uart", "apbs_1wire", 42080e5f83cSHans de Goede "apbs_i2c0", "apbs_i2c1", 42180e5f83cSHans de Goede "apbs_ps2_0", "apbs_ps2_1", 42280e5f83cSHans de Goede "apbs_dma", "apbs_i2s0", 42380e5f83cSHans de Goede "apbs_i2s1", "apbs_twd"; 42480e5f83cSHans de Goede }; 42580e5f83cSHans de Goede 42680e5f83cSHans de Goede r_1wire_clk: clk@08001450 { 42780e5f83cSHans de Goede reg = <0x08001450 0x4>; 42880e5f83cSHans de Goede #clock-cells = <0>; 42980e5f83cSHans de Goede compatible = "allwinner,sun4i-a10-mod0-clk"; 43080e5f83cSHans de Goede clocks = <&osc32k>, <&osc24M>; 43180e5f83cSHans de Goede clock-output-names = "r_1wire"; 43280e5f83cSHans de Goede }; 43380e5f83cSHans de Goede 43480e5f83cSHans de Goede r_ir_clk: clk@08001454 { 43580e5f83cSHans de Goede reg = <0x08001454 0x4>; 43680e5f83cSHans de Goede #clock-cells = <0>; 43780e5f83cSHans de Goede compatible = "allwinner,sun4i-a10-mod0-clk"; 43880e5f83cSHans de Goede clocks = <&osc32k>, <&osc24M>; 43980e5f83cSHans de Goede clock-output-names = "r_ir"; 44080e5f83cSHans de Goede }; 44153ab4af3SHans de Goede }; 44253ab4af3SHans de Goede 44353ab4af3SHans de Goede soc { 44453ab4af3SHans de Goede compatible = "simple-bus"; 44553ab4af3SHans de Goede #address-cells = <1>; 44653ab4af3SHans de Goede #size-cells = <1>; 44753ab4af3SHans de Goede /* 44853ab4af3SHans de Goede * map 64 bit address range down to 32 bits, 44953ab4af3SHans de Goede * as the peripherals are all under 512MB. 45053ab4af3SHans de Goede */ 45153ab4af3SHans de Goede ranges = <0 0 0 0x20000000>; 45253ab4af3SHans de Goede 45353ab4af3SHans de Goede ehci0: usb@00a00000 { 45453ab4af3SHans de Goede compatible = "allwinner,sun9i-a80-ehci", "generic-ehci"; 45553ab4af3SHans de Goede reg = <0x00a00000 0x100>; 45653ab4af3SHans de Goede interrupts = <GIC_SPI 72 IRQ_TYPE_LEVEL_HIGH>; 45753ab4af3SHans de Goede clocks = <&usb_mod_clk 1>; 45853ab4af3SHans de Goede resets = <&usb_mod_clk 17>; 45953ab4af3SHans de Goede phys = <&usbphy1>; 46053ab4af3SHans de Goede phy-names = "usb"; 46153ab4af3SHans de Goede status = "disabled"; 46253ab4af3SHans de Goede }; 46353ab4af3SHans de Goede 46453ab4af3SHans de Goede ohci0: usb@00a00400 { 46553ab4af3SHans de Goede compatible = "allwinner,sun9i-a80-ohci", "generic-ohci"; 46653ab4af3SHans de Goede reg = <0x00a00400 0x100>; 46753ab4af3SHans de Goede interrupts = <GIC_SPI 73 IRQ_TYPE_LEVEL_HIGH>; 46853ab4af3SHans de Goede clocks = <&usb_mod_clk 1>, <&usb_mod_clk 2>; 46953ab4af3SHans de Goede resets = <&usb_mod_clk 17>; 47053ab4af3SHans de Goede phys = <&usbphy1>; 47153ab4af3SHans de Goede phy-names = "usb"; 47253ab4af3SHans de Goede status = "disabled"; 47353ab4af3SHans de Goede }; 47453ab4af3SHans de Goede 47553ab4af3SHans de Goede usbphy1: phy@00a00800 { 47653ab4af3SHans de Goede compatible = "allwinner,sun9i-a80-usb-phy"; 47753ab4af3SHans de Goede reg = <0x00a00800 0x4>; 47853ab4af3SHans de Goede clocks = <&usb_phy_clk 1>; 47953ab4af3SHans de Goede clock-names = "phy"; 48053ab4af3SHans de Goede resets = <&usb_phy_clk 17>; 48153ab4af3SHans de Goede reset-names = "phy"; 48253ab4af3SHans de Goede status = "disabled"; 48353ab4af3SHans de Goede #phy-cells = <0>; 48453ab4af3SHans de Goede }; 48553ab4af3SHans de Goede 48653ab4af3SHans de Goede ehci1: usb@00a01000 { 48753ab4af3SHans de Goede compatible = "allwinner,sun9i-a80-ehci", "generic-ehci"; 48853ab4af3SHans de Goede reg = <0x00a01000 0x100>; 48953ab4af3SHans de Goede interrupts = <GIC_SPI 74 IRQ_TYPE_LEVEL_HIGH>; 49053ab4af3SHans de Goede clocks = <&usb_mod_clk 3>; 49153ab4af3SHans de Goede resets = <&usb_mod_clk 18>; 49253ab4af3SHans de Goede phys = <&usbphy2>; 49353ab4af3SHans de Goede phy-names = "usb"; 49453ab4af3SHans de Goede status = "disabled"; 49553ab4af3SHans de Goede }; 49653ab4af3SHans de Goede 49753ab4af3SHans de Goede usbphy2: phy@00a01800 { 49853ab4af3SHans de Goede compatible = "allwinner,sun9i-a80-usb-phy"; 49953ab4af3SHans de Goede reg = <0x00a01800 0x4>; 50053ab4af3SHans de Goede clocks = <&usb_phy_clk 2>, <&usb_phy_clk 10>, 50153ab4af3SHans de Goede <&usb_phy_clk 3>; 50253ab4af3SHans de Goede clock-names = "hsic_480M", "hsic_12M", "phy"; 50353ab4af3SHans de Goede resets = <&usb_phy_clk 18>, <&usb_phy_clk 19>; 50453ab4af3SHans de Goede reset-names = "hsic", "phy"; 50553ab4af3SHans de Goede status = "disabled"; 50653ab4af3SHans de Goede #phy-cells = <0>; 50753ab4af3SHans de Goede /* usb1 is always used with HSIC */ 50853ab4af3SHans de Goede phy_type = "hsic"; 50953ab4af3SHans de Goede }; 51053ab4af3SHans de Goede 51153ab4af3SHans de Goede ehci2: usb@00a02000 { 51253ab4af3SHans de Goede compatible = "allwinner,sun9i-a80-ehci", "generic-ehci"; 51353ab4af3SHans de Goede reg = <0x00a02000 0x100>; 51453ab4af3SHans de Goede interrupts = <GIC_SPI 76 IRQ_TYPE_LEVEL_HIGH>; 51553ab4af3SHans de Goede clocks = <&usb_mod_clk 5>; 51653ab4af3SHans de Goede resets = <&usb_mod_clk 19>; 51753ab4af3SHans de Goede phys = <&usbphy3>; 51853ab4af3SHans de Goede phy-names = "usb"; 51953ab4af3SHans de Goede status = "disabled"; 52053ab4af3SHans de Goede }; 52153ab4af3SHans de Goede 52253ab4af3SHans de Goede ohci2: usb@00a02400 { 52353ab4af3SHans de Goede compatible = "allwinner,sun9i-a80-ohci", "generic-ohci"; 52453ab4af3SHans de Goede reg = <0x00a02400 0x100>; 52553ab4af3SHans de Goede interrupts = <GIC_SPI 77 IRQ_TYPE_LEVEL_HIGH>; 52653ab4af3SHans de Goede clocks = <&usb_mod_clk 5>, <&usb_mod_clk 6>; 52753ab4af3SHans de Goede resets = <&usb_mod_clk 19>; 52853ab4af3SHans de Goede phys = <&usbphy3>; 52953ab4af3SHans de Goede phy-names = "usb"; 53053ab4af3SHans de Goede status = "disabled"; 53153ab4af3SHans de Goede }; 53253ab4af3SHans de Goede 53353ab4af3SHans de Goede usbphy3: phy@00a02800 { 53453ab4af3SHans de Goede compatible = "allwinner,sun9i-a80-usb-phy"; 53553ab4af3SHans de Goede reg = <0x00a02800 0x4>; 53653ab4af3SHans de Goede clocks = <&usb_phy_clk 4>, <&usb_phy_clk 10>, 53753ab4af3SHans de Goede <&usb_phy_clk 5>; 53853ab4af3SHans de Goede clock-names = "hsic_480M", "hsic_12M", "phy"; 53953ab4af3SHans de Goede resets = <&usb_phy_clk 20>, <&usb_phy_clk 21>; 54053ab4af3SHans de Goede reset-names = "hsic", "phy"; 54153ab4af3SHans de Goede status = "disabled"; 54253ab4af3SHans de Goede #phy-cells = <0>; 54353ab4af3SHans de Goede }; 54453ab4af3SHans de Goede 54553ab4af3SHans de Goede mmc0: mmc@01c0f000 { 54680e5f83cSHans de Goede compatible = "allwinner,sun9i-a80-mmc"; 54753ab4af3SHans de Goede reg = <0x01c0f000 0x1000>; 54853ab4af3SHans de Goede clocks = <&mmc_config_clk 0>, <&mmc0_clk 0>, 54953ab4af3SHans de Goede <&mmc0_clk 1>, <&mmc0_clk 2>; 55053ab4af3SHans de Goede clock-names = "ahb", "mmc", "output", "sample"; 55153ab4af3SHans de Goede resets = <&mmc_config_clk 0>; 55253ab4af3SHans de Goede reset-names = "ahb"; 55353ab4af3SHans de Goede interrupts = <GIC_SPI 60 IRQ_TYPE_LEVEL_HIGH>; 55453ab4af3SHans de Goede status = "disabled"; 55553ab4af3SHans de Goede #address-cells = <1>; 55653ab4af3SHans de Goede #size-cells = <0>; 55753ab4af3SHans de Goede }; 55853ab4af3SHans de Goede 55953ab4af3SHans de Goede mmc1: mmc@01c10000 { 56080e5f83cSHans de Goede compatible = "allwinner,sun9i-a80-mmc"; 56153ab4af3SHans de Goede reg = <0x01c10000 0x1000>; 56253ab4af3SHans de Goede clocks = <&mmc_config_clk 1>, <&mmc1_clk 0>, 56353ab4af3SHans de Goede <&mmc1_clk 1>, <&mmc1_clk 2>; 56453ab4af3SHans de Goede clock-names = "ahb", "mmc", "output", "sample"; 56553ab4af3SHans de Goede resets = <&mmc_config_clk 1>; 56653ab4af3SHans de Goede reset-names = "ahb"; 56753ab4af3SHans de Goede interrupts = <GIC_SPI 61 IRQ_TYPE_LEVEL_HIGH>; 56853ab4af3SHans de Goede status = "disabled"; 56953ab4af3SHans de Goede #address-cells = <1>; 57053ab4af3SHans de Goede #size-cells = <0>; 57153ab4af3SHans de Goede }; 57253ab4af3SHans de Goede 57353ab4af3SHans de Goede mmc2: mmc@01c11000 { 57480e5f83cSHans de Goede compatible = "allwinner,sun9i-a80-mmc"; 57553ab4af3SHans de Goede reg = <0x01c11000 0x1000>; 57653ab4af3SHans de Goede clocks = <&mmc_config_clk 2>, <&mmc2_clk 0>, 57753ab4af3SHans de Goede <&mmc2_clk 1>, <&mmc2_clk 2>; 57853ab4af3SHans de Goede clock-names = "ahb", "mmc", "output", "sample"; 57953ab4af3SHans de Goede resets = <&mmc_config_clk 2>; 58053ab4af3SHans de Goede reset-names = "ahb"; 58153ab4af3SHans de Goede interrupts = <GIC_SPI 62 IRQ_TYPE_LEVEL_HIGH>; 58253ab4af3SHans de Goede status = "disabled"; 58353ab4af3SHans de Goede #address-cells = <1>; 58453ab4af3SHans de Goede #size-cells = <0>; 58553ab4af3SHans de Goede }; 58653ab4af3SHans de Goede 58753ab4af3SHans de Goede mmc3: mmc@01c12000 { 58880e5f83cSHans de Goede compatible = "allwinner,sun9i-a80-mmc"; 58953ab4af3SHans de Goede reg = <0x01c12000 0x1000>; 59053ab4af3SHans de Goede clocks = <&mmc_config_clk 3>, <&mmc3_clk 0>, 59153ab4af3SHans de Goede <&mmc3_clk 1>, <&mmc3_clk 2>; 59253ab4af3SHans de Goede clock-names = "ahb", "mmc", "output", "sample"; 59353ab4af3SHans de Goede resets = <&mmc_config_clk 3>; 59453ab4af3SHans de Goede reset-names = "ahb"; 59553ab4af3SHans de Goede interrupts = <GIC_SPI 63 IRQ_TYPE_LEVEL_HIGH>; 59653ab4af3SHans de Goede status = "disabled"; 59753ab4af3SHans de Goede #address-cells = <1>; 59853ab4af3SHans de Goede #size-cells = <0>; 59953ab4af3SHans de Goede }; 60053ab4af3SHans de Goede 60153ab4af3SHans de Goede mmc_config_clk: clk@01c13000 { 60253ab4af3SHans de Goede compatible = "allwinner,sun9i-a80-mmc-config-clk"; 60353ab4af3SHans de Goede reg = <0x01c13000 0x10>; 60453ab4af3SHans de Goede clocks = <&ahb0_gates 8>; 60553ab4af3SHans de Goede clock-names = "ahb"; 60653ab4af3SHans de Goede resets = <&ahb0_resets 8>; 60753ab4af3SHans de Goede reset-names = "ahb"; 60853ab4af3SHans de Goede #clock-cells = <1>; 60953ab4af3SHans de Goede #reset-cells = <1>; 61053ab4af3SHans de Goede clock-output-names = "mmc0_config", "mmc1_config", 61153ab4af3SHans de Goede "mmc2_config", "mmc3_config"; 61253ab4af3SHans de Goede }; 61353ab4af3SHans de Goede 61453ab4af3SHans de Goede gic: interrupt-controller@01c41000 { 61553ab4af3SHans de Goede compatible = "arm,cortex-a7-gic", "arm,cortex-a15-gic"; 61653ab4af3SHans de Goede reg = <0x01c41000 0x1000>, 61753ab4af3SHans de Goede <0x01c42000 0x1000>, 61853ab4af3SHans de Goede <0x01c44000 0x2000>, 61953ab4af3SHans de Goede <0x01c46000 0x2000>; 62053ab4af3SHans de Goede interrupt-controller; 62153ab4af3SHans de Goede #interrupt-cells = <3>; 62253ab4af3SHans de Goede interrupts = <GIC_PPI 9 (GIC_CPU_MASK_SIMPLE(4) | IRQ_TYPE_LEVEL_HIGH)>; 62353ab4af3SHans de Goede }; 62453ab4af3SHans de Goede 62553ab4af3SHans de Goede ahb0_resets: reset@060005a0 { 62653ab4af3SHans de Goede #reset-cells = <1>; 62753ab4af3SHans de Goede compatible = "allwinner,sun6i-a31-clock-reset"; 62853ab4af3SHans de Goede reg = <0x060005a0 0x4>; 62953ab4af3SHans de Goede }; 63053ab4af3SHans de Goede 63153ab4af3SHans de Goede ahb1_resets: reset@060005a4 { 63253ab4af3SHans de Goede #reset-cells = <1>; 63353ab4af3SHans de Goede compatible = "allwinner,sun6i-a31-clock-reset"; 63453ab4af3SHans de Goede reg = <0x060005a4 0x4>; 63553ab4af3SHans de Goede }; 63653ab4af3SHans de Goede 63753ab4af3SHans de Goede ahb2_resets: reset@060005a8 { 63853ab4af3SHans de Goede #reset-cells = <1>; 63953ab4af3SHans de Goede compatible = "allwinner,sun6i-a31-clock-reset"; 64053ab4af3SHans de Goede reg = <0x060005a8 0x4>; 64153ab4af3SHans de Goede }; 64253ab4af3SHans de Goede 64353ab4af3SHans de Goede apb0_resets: reset@060005b0 { 64453ab4af3SHans de Goede #reset-cells = <1>; 64553ab4af3SHans de Goede compatible = "allwinner,sun6i-a31-clock-reset"; 64653ab4af3SHans de Goede reg = <0x060005b0 0x4>; 64753ab4af3SHans de Goede }; 64853ab4af3SHans de Goede 64953ab4af3SHans de Goede apb1_resets: reset@060005b4 { 65053ab4af3SHans de Goede #reset-cells = <1>; 65153ab4af3SHans de Goede compatible = "allwinner,sun6i-a31-clock-reset"; 65253ab4af3SHans de Goede reg = <0x060005b4 0x4>; 65353ab4af3SHans de Goede }; 65453ab4af3SHans de Goede 65553ab4af3SHans de Goede timer@06000c00 { 65653ab4af3SHans de Goede compatible = "allwinner,sun4i-a10-timer"; 65753ab4af3SHans de Goede reg = <0x06000c00 0xa0>; 65853ab4af3SHans de Goede interrupts = <GIC_SPI 18 IRQ_TYPE_LEVEL_HIGH>, 65953ab4af3SHans de Goede <GIC_SPI 19 IRQ_TYPE_LEVEL_HIGH>, 66053ab4af3SHans de Goede <GIC_SPI 20 IRQ_TYPE_LEVEL_HIGH>, 66153ab4af3SHans de Goede <GIC_SPI 21 IRQ_TYPE_LEVEL_HIGH>, 66253ab4af3SHans de Goede <GIC_SPI 22 IRQ_TYPE_LEVEL_HIGH>, 66353ab4af3SHans de Goede <GIC_SPI 23 IRQ_TYPE_LEVEL_HIGH>; 66453ab4af3SHans de Goede 66553ab4af3SHans de Goede clocks = <&osc24M>; 66653ab4af3SHans de Goede }; 66753ab4af3SHans de Goede 6688b1ba941SHans de Goede wdt: watchdog@06000ca0 { 6698b1ba941SHans de Goede compatible = "allwinner,sun6i-a31-wdt"; 6708b1ba941SHans de Goede reg = <0x06000ca0 0x20>; 6718b1ba941SHans de Goede interrupts = <GIC_SPI 24 IRQ_TYPE_LEVEL_HIGH>; 6728b1ba941SHans de Goede }; 6738b1ba941SHans de Goede 67453ab4af3SHans de Goede pio: pinctrl@06000800 { 67553ab4af3SHans de Goede compatible = "allwinner,sun9i-a80-pinctrl"; 67653ab4af3SHans de Goede reg = <0x06000800 0x400>; 67753ab4af3SHans de Goede interrupts = <GIC_SPI 11 IRQ_TYPE_LEVEL_HIGH>, 67853ab4af3SHans de Goede <GIC_SPI 15 IRQ_TYPE_LEVEL_HIGH>, 67953ab4af3SHans de Goede <GIC_SPI 16 IRQ_TYPE_LEVEL_HIGH>, 68053ab4af3SHans de Goede <GIC_SPI 17 IRQ_TYPE_LEVEL_HIGH>, 68153ab4af3SHans de Goede <GIC_SPI 120 IRQ_TYPE_LEVEL_HIGH>; 68253ab4af3SHans de Goede clocks = <&apb0_gates 5>; 68353ab4af3SHans de Goede gpio-controller; 68453ab4af3SHans de Goede interrupt-controller; 68580e5f83cSHans de Goede #interrupt-cells = <3>; 68653ab4af3SHans de Goede #size-cells = <0>; 68753ab4af3SHans de Goede #gpio-cells = <3>; 68853ab4af3SHans de Goede 68953ab4af3SHans de Goede i2c3_pins_a: i2c3@0 { 69053ab4af3SHans de Goede allwinner,pins = "PG10", "PG11"; 69153ab4af3SHans de Goede allwinner,function = "i2c3"; 69253ab4af3SHans de Goede allwinner,drive = <SUN4I_PINCTRL_10_MA>; 69353ab4af3SHans de Goede allwinner,pull = <SUN4I_PINCTRL_NO_PULL>; 69453ab4af3SHans de Goede }; 69553ab4af3SHans de Goede 69653ab4af3SHans de Goede mmc0_pins: mmc0 { 69753ab4af3SHans de Goede allwinner,pins = "PF0", "PF1" ,"PF2", "PF3", 69853ab4af3SHans de Goede "PF4", "PF5"; 69953ab4af3SHans de Goede allwinner,function = "mmc0"; 70053ab4af3SHans de Goede allwinner,drive = <SUN4I_PINCTRL_30_MA>; 70153ab4af3SHans de Goede allwinner,pull = <SUN4I_PINCTRL_NO_PULL>; 70253ab4af3SHans de Goede }; 70353ab4af3SHans de Goede 704*ffe47eb7SChen-Yu Tsai mmc1_pins: mmc1 { 705*ffe47eb7SChen-Yu Tsai allwinner,pins = "PG0", "PG1" ,"PG2", "PG3", 706*ffe47eb7SChen-Yu Tsai "PG4", "PG5"; 707*ffe47eb7SChen-Yu Tsai allwinner,function = "mmc1"; 708*ffe47eb7SChen-Yu Tsai allwinner,drive = <SUN4I_PINCTRL_30_MA>; 709*ffe47eb7SChen-Yu Tsai allwinner,pull = <SUN4I_PINCTRL_NO_PULL>; 710*ffe47eb7SChen-Yu Tsai }; 711*ffe47eb7SChen-Yu Tsai 71253ab4af3SHans de Goede mmc2_8bit_pins: mmc2_8bit { 71353ab4af3SHans de Goede allwinner,pins = "PC6", "PC7", "PC8", "PC9", 71453ab4af3SHans de Goede "PC10", "PC11", "PC12", 71580e5f83cSHans de Goede "PC13", "PC14", "PC15", 71680e5f83cSHans de Goede "PC16"; 71753ab4af3SHans de Goede allwinner,function = "mmc2"; 71853ab4af3SHans de Goede allwinner,drive = <SUN4I_PINCTRL_30_MA>; 71953ab4af3SHans de Goede allwinner,pull = <SUN4I_PINCTRL_NO_PULL>; 72053ab4af3SHans de Goede }; 72153ab4af3SHans de Goede 72253ab4af3SHans de Goede uart0_pins_a: uart0@0 { 72353ab4af3SHans de Goede allwinner,pins = "PH12", "PH13"; 72453ab4af3SHans de Goede allwinner,function = "uart0"; 72553ab4af3SHans de Goede allwinner,drive = <SUN4I_PINCTRL_10_MA>; 72653ab4af3SHans de Goede allwinner,pull = <SUN4I_PINCTRL_NO_PULL>; 72753ab4af3SHans de Goede }; 72853ab4af3SHans de Goede 72953ab4af3SHans de Goede uart4_pins_a: uart4@0 { 73053ab4af3SHans de Goede allwinner,pins = "PG12", "PG13", "PG14", "PG15"; 73153ab4af3SHans de Goede allwinner,function = "uart4"; 73253ab4af3SHans de Goede allwinner,drive = <SUN4I_PINCTRL_10_MA>; 73353ab4af3SHans de Goede allwinner,pull = <SUN4I_PINCTRL_NO_PULL>; 73453ab4af3SHans de Goede }; 73553ab4af3SHans de Goede }; 73653ab4af3SHans de Goede 73753ab4af3SHans de Goede uart0: serial@07000000 { 73853ab4af3SHans de Goede compatible = "snps,dw-apb-uart"; 73953ab4af3SHans de Goede reg = <0x07000000 0x400>; 74053ab4af3SHans de Goede interrupts = <GIC_SPI 0 IRQ_TYPE_LEVEL_HIGH>; 74153ab4af3SHans de Goede reg-shift = <2>; 74253ab4af3SHans de Goede reg-io-width = <4>; 74353ab4af3SHans de Goede clocks = <&apb1_gates 16>; 74453ab4af3SHans de Goede resets = <&apb1_resets 16>; 74553ab4af3SHans de Goede status = "disabled"; 74653ab4af3SHans de Goede }; 74753ab4af3SHans de Goede 74853ab4af3SHans de Goede uart1: serial@07000400 { 74953ab4af3SHans de Goede compatible = "snps,dw-apb-uart"; 75053ab4af3SHans de Goede reg = <0x07000400 0x400>; 75153ab4af3SHans de Goede interrupts = <GIC_SPI 1 IRQ_TYPE_LEVEL_HIGH>; 75253ab4af3SHans de Goede reg-shift = <2>; 75353ab4af3SHans de Goede reg-io-width = <4>; 75453ab4af3SHans de Goede clocks = <&apb1_gates 17>; 75553ab4af3SHans de Goede resets = <&apb1_resets 17>; 75653ab4af3SHans de Goede status = "disabled"; 75753ab4af3SHans de Goede }; 75853ab4af3SHans de Goede 75953ab4af3SHans de Goede uart2: serial@07000800 { 76053ab4af3SHans de Goede compatible = "snps,dw-apb-uart"; 76153ab4af3SHans de Goede reg = <0x07000800 0x400>; 76253ab4af3SHans de Goede interrupts = <GIC_SPI 2 IRQ_TYPE_LEVEL_HIGH>; 76353ab4af3SHans de Goede reg-shift = <2>; 76453ab4af3SHans de Goede reg-io-width = <4>; 76553ab4af3SHans de Goede clocks = <&apb1_gates 18>; 76653ab4af3SHans de Goede resets = <&apb1_resets 18>; 76753ab4af3SHans de Goede status = "disabled"; 76853ab4af3SHans de Goede }; 76953ab4af3SHans de Goede 77053ab4af3SHans de Goede uart3: serial@07000c00 { 77153ab4af3SHans de Goede compatible = "snps,dw-apb-uart"; 77253ab4af3SHans de Goede reg = <0x07000c00 0x400>; 77353ab4af3SHans de Goede interrupts = <GIC_SPI 3 IRQ_TYPE_LEVEL_HIGH>; 77453ab4af3SHans de Goede reg-shift = <2>; 77553ab4af3SHans de Goede reg-io-width = <4>; 77653ab4af3SHans de Goede clocks = <&apb1_gates 19>; 77753ab4af3SHans de Goede resets = <&apb1_resets 19>; 77853ab4af3SHans de Goede status = "disabled"; 77953ab4af3SHans de Goede }; 78053ab4af3SHans de Goede 78153ab4af3SHans de Goede uart4: serial@07001000 { 78253ab4af3SHans de Goede compatible = "snps,dw-apb-uart"; 78353ab4af3SHans de Goede reg = <0x07001000 0x400>; 78453ab4af3SHans de Goede interrupts = <GIC_SPI 4 IRQ_TYPE_LEVEL_HIGH>; 78553ab4af3SHans de Goede reg-shift = <2>; 78653ab4af3SHans de Goede reg-io-width = <4>; 78753ab4af3SHans de Goede clocks = <&apb1_gates 20>; 78853ab4af3SHans de Goede resets = <&apb1_resets 20>; 78953ab4af3SHans de Goede status = "disabled"; 79053ab4af3SHans de Goede }; 79153ab4af3SHans de Goede 79253ab4af3SHans de Goede uart5: serial@07001400 { 79353ab4af3SHans de Goede compatible = "snps,dw-apb-uart"; 79453ab4af3SHans de Goede reg = <0x07001400 0x400>; 79553ab4af3SHans de Goede interrupts = <GIC_SPI 5 IRQ_TYPE_LEVEL_HIGH>; 79653ab4af3SHans de Goede reg-shift = <2>; 79753ab4af3SHans de Goede reg-io-width = <4>; 79853ab4af3SHans de Goede clocks = <&apb1_gates 21>; 79953ab4af3SHans de Goede resets = <&apb1_resets 21>; 80053ab4af3SHans de Goede status = "disabled"; 80153ab4af3SHans de Goede }; 80253ab4af3SHans de Goede 80353ab4af3SHans de Goede i2c0: i2c@07002800 { 80453ab4af3SHans de Goede compatible = "allwinner,sun6i-a31-i2c"; 80553ab4af3SHans de Goede reg = <0x07002800 0x400>; 80653ab4af3SHans de Goede interrupts = <GIC_SPI 6 IRQ_TYPE_LEVEL_HIGH>; 80753ab4af3SHans de Goede clocks = <&apb1_gates 0>; 80853ab4af3SHans de Goede resets = <&apb1_resets 0>; 80953ab4af3SHans de Goede status = "disabled"; 81053ab4af3SHans de Goede #address-cells = <1>; 81153ab4af3SHans de Goede #size-cells = <0>; 81253ab4af3SHans de Goede }; 81353ab4af3SHans de Goede 81453ab4af3SHans de Goede i2c1: i2c@07002c00 { 81553ab4af3SHans de Goede compatible = "allwinner,sun6i-a31-i2c"; 81653ab4af3SHans de Goede reg = <0x07002c00 0x400>; 81753ab4af3SHans de Goede interrupts = <GIC_SPI 7 IRQ_TYPE_LEVEL_HIGH>; 81853ab4af3SHans de Goede clocks = <&apb1_gates 1>; 81953ab4af3SHans de Goede resets = <&apb1_resets 1>; 82053ab4af3SHans de Goede status = "disabled"; 82153ab4af3SHans de Goede #address-cells = <1>; 82253ab4af3SHans de Goede #size-cells = <0>; 82353ab4af3SHans de Goede }; 82453ab4af3SHans de Goede 82553ab4af3SHans de Goede i2c2: i2c@07003000 { 82653ab4af3SHans de Goede compatible = "allwinner,sun6i-a31-i2c"; 82753ab4af3SHans de Goede reg = <0x07003000 0x400>; 82853ab4af3SHans de Goede interrupts = <GIC_SPI 8 IRQ_TYPE_LEVEL_HIGH>; 82953ab4af3SHans de Goede clocks = <&apb1_gates 2>; 83053ab4af3SHans de Goede resets = <&apb1_resets 2>; 83153ab4af3SHans de Goede status = "disabled"; 83253ab4af3SHans de Goede #address-cells = <1>; 83353ab4af3SHans de Goede #size-cells = <0>; 83453ab4af3SHans de Goede }; 83553ab4af3SHans de Goede 83653ab4af3SHans de Goede i2c3: i2c@07003400 { 83753ab4af3SHans de Goede compatible = "allwinner,sun6i-a31-i2c"; 83853ab4af3SHans de Goede reg = <0x07003400 0x400>; 83953ab4af3SHans de Goede interrupts = <GIC_SPI 9 IRQ_TYPE_LEVEL_HIGH>; 84053ab4af3SHans de Goede clocks = <&apb1_gates 3>; 84153ab4af3SHans de Goede resets = <&apb1_resets 3>; 84253ab4af3SHans de Goede status = "disabled"; 84353ab4af3SHans de Goede #address-cells = <1>; 84453ab4af3SHans de Goede #size-cells = <0>; 84553ab4af3SHans de Goede }; 84653ab4af3SHans de Goede 84753ab4af3SHans de Goede i2c4: i2c@07003800 { 84853ab4af3SHans de Goede compatible = "allwinner,sun6i-a31-i2c"; 84953ab4af3SHans de Goede reg = <0x07003800 0x400>; 85053ab4af3SHans de Goede interrupts = <GIC_SPI 10 IRQ_TYPE_LEVEL_HIGH>; 85153ab4af3SHans de Goede clocks = <&apb1_gates 4>; 85253ab4af3SHans de Goede resets = <&apb1_resets 4>; 85353ab4af3SHans de Goede status = "disabled"; 85453ab4af3SHans de Goede #address-cells = <1>; 85553ab4af3SHans de Goede #size-cells = <0>; 85653ab4af3SHans de Goede }; 85753ab4af3SHans de Goede 85853ab4af3SHans de Goede r_wdt: watchdog@08001000 { 85953ab4af3SHans de Goede compatible = "allwinner,sun6i-a31-wdt"; 86053ab4af3SHans de Goede reg = <0x08001000 0x20>; 86153ab4af3SHans de Goede interrupts = <GIC_SPI 36 IRQ_TYPE_LEVEL_HIGH>; 86253ab4af3SHans de Goede }; 86353ab4af3SHans de Goede 86480e5f83cSHans de Goede apbs_rst: reset@080014b0 { 86580e5f83cSHans de Goede reg = <0x080014b0 0x4>; 86680e5f83cSHans de Goede compatible = "allwinner,sun6i-a31-clock-reset"; 86780e5f83cSHans de Goede #reset-cells = <1>; 86880e5f83cSHans de Goede }; 86980e5f83cSHans de Goede 87080e5f83cSHans de Goede nmi_intc: interrupt-controller@080015a0 { 87180e5f83cSHans de Goede compatible = "allwinner,sun9i-a80-nmi"; 87280e5f83cSHans de Goede interrupt-controller; 87380e5f83cSHans de Goede #interrupt-cells = <2>; 87480e5f83cSHans de Goede reg = <0x080015a0 0xc>; 87580e5f83cSHans de Goede interrupts = <GIC_SPI 32 IRQ_TYPE_LEVEL_HIGH>; 87680e5f83cSHans de Goede }; 87780e5f83cSHans de Goede 87880e5f83cSHans de Goede r_ir: ir@08002000 { 87980e5f83cSHans de Goede compatible = "allwinner,sun5i-a13-ir"; 88080e5f83cSHans de Goede interrupts = <GIC_SPI 37 IRQ_TYPE_LEVEL_HIGH>; 88180e5f83cSHans de Goede pinctrl-names = "default"; 88280e5f83cSHans de Goede pinctrl-0 = <&r_ir_pins>; 88380e5f83cSHans de Goede clocks = <&apbs_gates 1>, <&r_ir_clk>; 88480e5f83cSHans de Goede clock-names = "apb", "ir"; 88580e5f83cSHans de Goede resets = <&apbs_rst 1>; 88680e5f83cSHans de Goede reg = <0x08002000 0x40>; 88780e5f83cSHans de Goede status = "disabled"; 88880e5f83cSHans de Goede }; 88980e5f83cSHans de Goede 89053ab4af3SHans de Goede r_uart: serial@08002800 { 89153ab4af3SHans de Goede compatible = "snps,dw-apb-uart"; 89253ab4af3SHans de Goede reg = <0x08002800 0x400>; 89353ab4af3SHans de Goede interrupts = <GIC_SPI 38 IRQ_TYPE_LEVEL_HIGH>; 89453ab4af3SHans de Goede reg-shift = <2>; 89553ab4af3SHans de Goede reg-io-width = <4>; 89680e5f83cSHans de Goede clocks = <&apbs_gates 4>; 89780e5f83cSHans de Goede resets = <&apbs_rst 4>; 89853ab4af3SHans de Goede status = "disabled"; 89953ab4af3SHans de Goede }; 90080e5f83cSHans de Goede 90180e5f83cSHans de Goede r_pio: pinctrl@08002c00 { 90280e5f83cSHans de Goede compatible = "allwinner,sun9i-a80-r-pinctrl"; 90380e5f83cSHans de Goede reg = <0x08002c00 0x400>; 90480e5f83cSHans de Goede interrupts = <GIC_SPI 45 IRQ_TYPE_LEVEL_HIGH>, 90580e5f83cSHans de Goede <GIC_SPI 46 IRQ_TYPE_LEVEL_HIGH>; 90680e5f83cSHans de Goede clocks = <&apbs_gates 0>; 90780e5f83cSHans de Goede resets = <&apbs_rst 0>; 90880e5f83cSHans de Goede gpio-controller; 90980e5f83cSHans de Goede interrupt-controller; 91080e5f83cSHans de Goede #address-cells = <1>; 91180e5f83cSHans de Goede #size-cells = <0>; 91280e5f83cSHans de Goede #gpio-cells = <3>; 91380e5f83cSHans de Goede 91480e5f83cSHans de Goede r_ir_pins: r_ir { 91580e5f83cSHans de Goede allwinner,pins = "PL6"; 91680e5f83cSHans de Goede allwinner,function = "s_cir_rx"; 91780e5f83cSHans de Goede allwinner,drive = <SUN4I_PINCTRL_10_MA>; 91880e5f83cSHans de Goede allwinner,pull = <SUN4I_PINCTRL_NO_PULL>; 91980e5f83cSHans de Goede }; 92080e5f83cSHans de Goede 92180e5f83cSHans de Goede r_rsb_pins: r_rsb { 92280e5f83cSHans de Goede allwinner,pins = "PN0", "PN1"; 92380e5f83cSHans de Goede allwinner,function = "s_rsb"; 92480e5f83cSHans de Goede allwinner,drive = <SUN4I_PINCTRL_20_MA>; 92580e5f83cSHans de Goede allwinner,pull = <SUN4I_PINCTRL_PULL_UP>; 92680e5f83cSHans de Goede }; 92780e5f83cSHans de Goede }; 92880e5f83cSHans de Goede 92980e5f83cSHans de Goede r_rsb: i2c@08003400 { 93080e5f83cSHans de Goede compatible = "allwinner,sun8i-a23-rsb"; 93180e5f83cSHans de Goede reg = <0x08003400 0x400>; 93280e5f83cSHans de Goede interrupts = <GIC_SPI 39 IRQ_TYPE_LEVEL_HIGH>; 93380e5f83cSHans de Goede clocks = <&apbs_gates 3>; 93480e5f83cSHans de Goede clock-frequency = <3000000>; 93580e5f83cSHans de Goede resets = <&apbs_rst 3>; 93680e5f83cSHans de Goede pinctrl-names = "default"; 93780e5f83cSHans de Goede pinctrl-0 = <&r_rsb_pins>; 93880e5f83cSHans de Goede status = "disabled"; 93980e5f83cSHans de Goede #address-cells = <1>; 94080e5f83cSHans de Goede #size-cells = <0>; 94180e5f83cSHans de Goede }; 94253ab4af3SHans de Goede }; 94353ab4af3SHans de Goede}; 944