xref: /rk3399_rockchip-uboot/arch/arm/dts/sun9i-a80.dtsi (revision 089795090a627f4216c5f21eaf436ba1672cf02e)
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 = <&gt_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 = <&gt_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 = <&gt_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