xref: /linux/arch/arm/boot/dts/allwinner/sun8i-v3s.dtsi (revision 64c21f253a3737c15ab745e9276b2352d86aed26)
1f989086cSIcenowy Zheng/*
2f989086cSIcenowy Zheng * Copyright (C) 2016 Icenowy Zheng <icenowy@aosc.xyz>
349b9e240STobias Schramm * Copyright (C) 2021 Tobias Schramm <t.schramm@manjaro.org>
4f989086cSIcenowy Zheng *
5f989086cSIcenowy Zheng * This file is dual-licensed: you can use it either under the terms
6f989086cSIcenowy Zheng * of the GPL or the X11 license, at your option. Note that this dual
7f989086cSIcenowy Zheng * licensing only applies to this file, and not this project as a
8f989086cSIcenowy Zheng * whole.
9f989086cSIcenowy Zheng *
10f989086cSIcenowy Zheng *  a) This file is free software; you can redistribute it and/or
11f989086cSIcenowy Zheng *     modify it under the terms of the GNU General Public License as
12f989086cSIcenowy Zheng *     published by the Free Software Foundation; either version 2 of the
13f989086cSIcenowy Zheng *     License, or (at your option) any later version.
14f989086cSIcenowy Zheng *
15f989086cSIcenowy Zheng *     This file is distributed in the hope that it will be useful,
16f989086cSIcenowy Zheng *     but WITHOUT ANY WARRANTY; without even the implied warranty of
17f989086cSIcenowy Zheng *     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
18f989086cSIcenowy Zheng *     GNU General Public License for more details.
19f989086cSIcenowy Zheng *
20f989086cSIcenowy Zheng * Or, alternatively,
21f989086cSIcenowy Zheng *
22f989086cSIcenowy Zheng *  b) Permission is hereby granted, free of charge, to any person
23f989086cSIcenowy Zheng *     obtaining a copy of this software and associated documentation
24f989086cSIcenowy Zheng *     files (the "Software"), to deal in the Software without
25f989086cSIcenowy Zheng *     restriction, including without limitation the rights to use,
26f989086cSIcenowy Zheng *     copy, modify, merge, publish, distribute, sublicense, and/or
27f989086cSIcenowy Zheng *     sell copies of the Software, and to permit persons to whom the
28f989086cSIcenowy Zheng *     Software is furnished to do so, subject to the following
29f989086cSIcenowy Zheng *     conditions:
30f989086cSIcenowy Zheng *
31f989086cSIcenowy Zheng *     The above copyright notice and this permission notice shall be
32f989086cSIcenowy Zheng *     included in all copies or substantial portions of the Software.
33f989086cSIcenowy Zheng *
34f989086cSIcenowy Zheng *     THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
35f989086cSIcenowy Zheng *     EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
36f989086cSIcenowy Zheng *     OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
37f989086cSIcenowy Zheng *     NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
38f989086cSIcenowy Zheng *     HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
39f989086cSIcenowy Zheng *     WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
40f989086cSIcenowy Zheng *     FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
41f989086cSIcenowy Zheng *     OTHER DEALINGS IN THE SOFTWARE.
42f989086cSIcenowy Zheng */
43f989086cSIcenowy Zheng
44f989086cSIcenowy Zheng#include <dt-bindings/interrupt-controller/arm-gic.h>
458cce5702SSamuel Holland#include <dt-bindings/clock/sun6i-rtc.h>
468378be87SIcenowy Zheng#include <dt-bindings/clock/sun8i-v3s-ccu.h>
478378be87SIcenowy Zheng#include <dt-bindings/reset/sun8i-v3s-ccu.h>
482bd5298aSMartin Cerveny#include <dt-bindings/clock/sun8i-de2.h>
49f989086cSIcenowy Zheng
50f989086cSIcenowy Zheng/ {
51f989086cSIcenowy Zheng	#address-cells = <1>;
52f989086cSIcenowy Zheng	#size-cells = <1>;
53f989086cSIcenowy Zheng	interrupt-parent = <&gic>;
54f989086cSIcenowy Zheng
552bd5298aSMartin Cerveny	chosen {
562bd5298aSMartin Cerveny		#address-cells = <1>;
572bd5298aSMartin Cerveny		#size-cells = <1>;
582bd5298aSMartin Cerveny		ranges;
592bd5298aSMartin Cerveny
602bd5298aSMartin Cerveny		framebuffer-lcd {
612bd5298aSMartin Cerveny			compatible = "allwinner,simple-framebuffer",
622bd5298aSMartin Cerveny				     "simple-framebuffer";
632bd5298aSMartin Cerveny			allwinner,pipeline = "mixer0-lcd0";
642bd5298aSMartin Cerveny			clocks = <&display_clocks CLK_MIXER0>,
652bd5298aSMartin Cerveny				 <&ccu CLK_TCON0>;
662bd5298aSMartin Cerveny			status = "disabled";
672bd5298aSMartin Cerveny		};
682bd5298aSMartin Cerveny	};
692bd5298aSMartin Cerveny
70f989086cSIcenowy Zheng	cpus {
71f989086cSIcenowy Zheng		#address-cells = <1>;
72f989086cSIcenowy Zheng		#size-cells = <0>;
73f989086cSIcenowy Zheng
74f989086cSIcenowy Zheng		cpu@0 {
75f989086cSIcenowy Zheng			compatible = "arm,cortex-a7";
76f989086cSIcenowy Zheng			device_type = "cpu";
77f989086cSIcenowy Zheng			reg = <0>;
788378be87SIcenowy Zheng			clocks = <&ccu CLK_CPU>;
79f989086cSIcenowy Zheng		};
80f989086cSIcenowy Zheng	};
81f989086cSIcenowy Zheng
8221b29920SIcenowy Zheng	de: display-engine {
8321b29920SIcenowy Zheng		compatible = "allwinner,sun8i-v3s-display-engine";
8421b29920SIcenowy Zheng		allwinner,pipelines = <&mixer0>;
8521b29920SIcenowy Zheng		status = "disabled";
8621b29920SIcenowy Zheng	};
8721b29920SIcenowy Zheng
88f989086cSIcenowy Zheng	timer {
89f989086cSIcenowy Zheng		compatible = "arm,armv7-timer";
90f989086cSIcenowy Zheng		interrupts = <GIC_PPI 13 (GIC_CPU_MASK_SIMPLE(4) | IRQ_TYPE_LEVEL_LOW)>,
91f989086cSIcenowy Zheng			     <GIC_PPI 14 (GIC_CPU_MASK_SIMPLE(4) | IRQ_TYPE_LEVEL_LOW)>,
92f989086cSIcenowy Zheng			     <GIC_PPI 11 (GIC_CPU_MASK_SIMPLE(4) | IRQ_TYPE_LEVEL_LOW)>,
93f989086cSIcenowy Zheng			     <GIC_PPI 10 (GIC_CPU_MASK_SIMPLE(4) | IRQ_TYPE_LEVEL_LOW)>;
94f989086cSIcenowy Zheng	};
95f989086cSIcenowy Zheng
96f989086cSIcenowy Zheng	clocks {
97f989086cSIcenowy Zheng		#address-cells = <1>;
98f989086cSIcenowy Zheng		#size-cells = <1>;
99f989086cSIcenowy Zheng		ranges;
100f989086cSIcenowy Zheng
1010f47ef3fSKrzysztof Kozlowski		osc24M: osc24M-clk {
102f989086cSIcenowy Zheng			#clock-cells = <0>;
103f989086cSIcenowy Zheng			compatible = "fixed-clock";
104f989086cSIcenowy Zheng			clock-frequency = <24000000>;
10533e877f3SMaxime Ripard			clock-accuracy = <50000>;
106f989086cSIcenowy Zheng			clock-output-names = "osc24M";
107f989086cSIcenowy Zheng		};
108f989086cSIcenowy Zheng
1090f47ef3fSKrzysztof Kozlowski		osc32k: osc32k-clk {
110f989086cSIcenowy Zheng			#clock-cells = <0>;
111f989086cSIcenowy Zheng			compatible = "fixed-clock";
112f989086cSIcenowy Zheng			clock-frequency = <32768>;
11333e877f3SMaxime Ripard			clock-accuracy = <50000>;
11465a4a402SMaxime Ripard			clock-output-names = "ext-osc32k";
115f989086cSIcenowy Zheng		};
116f989086cSIcenowy Zheng	};
117f989086cSIcenowy Zheng
118f989086cSIcenowy Zheng	soc {
119f989086cSIcenowy Zheng		compatible = "simple-bus";
120f989086cSIcenowy Zheng		#address-cells = <1>;
121f989086cSIcenowy Zheng		#size-cells = <1>;
122f989086cSIcenowy Zheng		ranges;
123f989086cSIcenowy Zheng
12421b29920SIcenowy Zheng		display_clocks: clock@1000000 {
12521b29920SIcenowy Zheng			compatible = "allwinner,sun8i-v3s-de2-clk";
126da180322SJernej Skrabec			reg = <0x01000000 0x10000>;
1275ea40f71SMaxime Ripard			clocks = <&ccu CLK_BUS_DE>,
1285ea40f71SMaxime Ripard				 <&ccu CLK_DE>;
1295ea40f71SMaxime Ripard			clock-names = "bus",
1305ea40f71SMaxime Ripard				      "mod";
13121b29920SIcenowy Zheng			resets = <&ccu RST_BUS_DE>;
13221b29920SIcenowy Zheng			#clock-cells = <1>;
13321b29920SIcenowy Zheng			#reset-cells = <1>;
13421b29920SIcenowy Zheng		};
13521b29920SIcenowy Zheng
13621b29920SIcenowy Zheng		mixer0: mixer@1100000 {
13721b29920SIcenowy Zheng			compatible = "allwinner,sun8i-v3s-de2-mixer";
13821b29920SIcenowy Zheng			reg = <0x01100000 0x100000>;
13921b29920SIcenowy Zheng			clocks = <&display_clocks 0>,
14021b29920SIcenowy Zheng				 <&display_clocks 6>;
14121b29920SIcenowy Zheng			clock-names = "bus",
14221b29920SIcenowy Zheng				      "mod";
14321b29920SIcenowy Zheng			resets = <&display_clocks 0>;
14421b29920SIcenowy Zheng
14521b29920SIcenowy Zheng			ports {
14621b29920SIcenowy Zheng				#address-cells = <1>;
14721b29920SIcenowy Zheng				#size-cells = <0>;
14821b29920SIcenowy Zheng
14921b29920SIcenowy Zheng				mixer0_out: port@1 {
15021b29920SIcenowy Zheng					reg = <1>;
15121b29920SIcenowy Zheng
152f79d7953SMaxime Ripard					mixer0_out_tcon0: endpoint {
15321b29920SIcenowy Zheng						remote-endpoint = <&tcon0_in_mixer0>;
15421b29920SIcenowy Zheng					};
15521b29920SIcenowy Zheng				};
15621b29920SIcenowy Zheng			};
15721b29920SIcenowy Zheng		};
15821b29920SIcenowy Zheng
15902ed6bb8SIcenowy Zheng		syscon: system-control@1c00000 {
16002ed6bb8SIcenowy Zheng			compatible = "allwinner,sun8i-v3s-system-control",
16102ed6bb8SIcenowy Zheng				     "allwinner,sun8i-h3-system-control";
162c20e9e76SPaul Kocialkowski			reg = <0x01c00000 0xd0>;
16302ed6bb8SIcenowy Zheng			#address-cells = <1>;
16402ed6bb8SIcenowy Zheng			#size-cells = <1>;
16502ed6bb8SIcenowy Zheng			ranges;
16602ed6bb8SIcenowy Zheng		};
16702ed6bb8SIcenowy Zheng
168c20e9e76SPaul Kocialkowski		nmi_intc: interrupt-controller@1c000d0 {
169c20e9e76SPaul Kocialkowski			compatible = "allwinner,sun8i-v3s-nmi",
170c20e9e76SPaul Kocialkowski				     "allwinner,sun9i-a80-nmi";
171c20e9e76SPaul Kocialkowski			interrupt-controller;
172c20e9e76SPaul Kocialkowski			#interrupt-cells = <2>;
173c20e9e76SPaul Kocialkowski			reg = <0x01c000d0 0x0c>;
174c20e9e76SPaul Kocialkowski			interrupts = <GIC_SPI 32 IRQ_TYPE_LEVEL_HIGH>;
175c20e9e76SPaul Kocialkowski		};
176c20e9e76SPaul Kocialkowski
17749b9e240STobias Schramm		dma: dma-controller@1c02000 {
17849b9e240STobias Schramm			compatible = "allwinner,sun8i-v3s-dma";
17949b9e240STobias Schramm			reg = <0x01c02000 0x1000>;
18049b9e240STobias Schramm			interrupts = <GIC_SPI 50 IRQ_TYPE_LEVEL_HIGH>;
18149b9e240STobias Schramm			clocks = <&ccu CLK_BUS_DMA>;
18249b9e240STobias Schramm			resets = <&ccu RST_BUS_DMA>;
18349b9e240STobias Schramm			#dma-cells = <1>;
18449b9e240STobias Schramm		};
18549b9e240STobias Schramm
18621b29920SIcenowy Zheng		tcon0: lcd-controller@1c0c000 {
18721b29920SIcenowy Zheng			compatible = "allwinner,sun8i-v3s-tcon";
18821b29920SIcenowy Zheng			reg = <0x01c0c000 0x1000>;
18921b29920SIcenowy Zheng			interrupts = <GIC_SPI 86 IRQ_TYPE_LEVEL_HIGH>;
19021b29920SIcenowy Zheng			clocks = <&ccu CLK_BUS_TCON0>,
19121b29920SIcenowy Zheng				 <&ccu CLK_TCON0>;
19221b29920SIcenowy Zheng			clock-names = "ahb",
19321b29920SIcenowy Zheng				      "tcon-ch0";
194ec4c5458SRoman Beranek			clock-output-names = "tcon-data-clock";
19509f29dccSMaxime Ripard			#clock-cells = <0>;
19621b29920SIcenowy Zheng			resets = <&ccu RST_BUS_TCON0>;
19721b29920SIcenowy Zheng			reset-names = "lcd";
19821b29920SIcenowy Zheng			status = "disabled";
19921b29920SIcenowy Zheng
20021b29920SIcenowy Zheng			ports {
20121b29920SIcenowy Zheng				#address-cells = <1>;
20221b29920SIcenowy Zheng				#size-cells = <0>;
20321b29920SIcenowy Zheng
20421b29920SIcenowy Zheng				tcon0_in: port@0 {
20521b29920SIcenowy Zheng					reg = <0>;
20621b29920SIcenowy Zheng
207f79d7953SMaxime Ripard					tcon0_in_mixer0: endpoint {
20821b29920SIcenowy Zheng						remote-endpoint = <&mixer0_out_tcon0>;
20921b29920SIcenowy Zheng					};
21021b29920SIcenowy Zheng				};
21121b29920SIcenowy Zheng
21221b29920SIcenowy Zheng				tcon0_out: port@1 {
21321b29920SIcenowy Zheng					#address-cells = <1>;
21421b29920SIcenowy Zheng					#size-cells = <0>;
21521b29920SIcenowy Zheng					reg = <1>;
21621b29920SIcenowy Zheng				};
21721b29920SIcenowy Zheng			};
21821b29920SIcenowy Zheng		};
21921b29920SIcenowy Zheng
22021b29920SIcenowy Zheng
2218dccafaaSRob Herring		mmc0: mmc@1c0f000 {
222f989086cSIcenowy Zheng			compatible = "allwinner,sun7i-a20-mmc";
223f989086cSIcenowy Zheng			reg = <0x01c0f000 0x1000>;
2248378be87SIcenowy Zheng			clocks = <&ccu CLK_BUS_MMC0>,
2258378be87SIcenowy Zheng				 <&ccu CLK_MMC0>,
2268378be87SIcenowy Zheng				 <&ccu CLK_MMC0_OUTPUT>,
2278378be87SIcenowy Zheng				 <&ccu CLK_MMC0_SAMPLE>;
228f989086cSIcenowy Zheng			clock-names = "ahb",
229f989086cSIcenowy Zheng				      "mmc",
230f989086cSIcenowy Zheng				      "output",
231f989086cSIcenowy Zheng				      "sample";
2328378be87SIcenowy Zheng			resets = <&ccu RST_BUS_MMC0>;
233f989086cSIcenowy Zheng			reset-names = "ahb";
234f989086cSIcenowy Zheng			interrupts = <GIC_SPI 60 IRQ_TYPE_LEVEL_HIGH>;
23593870e41SMaxime Ripard			pinctrl-names = "default";
23693870e41SMaxime Ripard			pinctrl-0 = <&mmc0_pins>;
237f989086cSIcenowy Zheng			status = "disabled";
238f989086cSIcenowy Zheng			#address-cells = <1>;
239f989086cSIcenowy Zheng			#size-cells = <0>;
240f989086cSIcenowy Zheng		};
241f989086cSIcenowy Zheng
2428dccafaaSRob Herring		mmc1: mmc@1c10000 {
243f989086cSIcenowy Zheng			compatible = "allwinner,sun7i-a20-mmc";
244f989086cSIcenowy Zheng			reg = <0x01c10000 0x1000>;
2458378be87SIcenowy Zheng			clocks = <&ccu CLK_BUS_MMC1>,
2468378be87SIcenowy Zheng				 <&ccu CLK_MMC1>,
2478378be87SIcenowy Zheng				 <&ccu CLK_MMC1_OUTPUT>,
2488378be87SIcenowy Zheng				 <&ccu CLK_MMC1_SAMPLE>;
249f989086cSIcenowy Zheng			clock-names = "ahb",
250f989086cSIcenowy Zheng				      "mmc",
251f989086cSIcenowy Zheng				      "output",
252f989086cSIcenowy Zheng				      "sample";
2538378be87SIcenowy Zheng			resets = <&ccu RST_BUS_MMC1>;
254f989086cSIcenowy Zheng			reset-names = "ahb";
255f989086cSIcenowy Zheng			interrupts = <GIC_SPI 61 IRQ_TYPE_LEVEL_HIGH>;
256be3c1392SIcenowy Zheng			pinctrl-names = "default";
257be3c1392SIcenowy Zheng			pinctrl-0 = <&mmc1_pins>;
258f989086cSIcenowy Zheng			status = "disabled";
259f989086cSIcenowy Zheng			#address-cells = <1>;
260f989086cSIcenowy Zheng			#size-cells = <0>;
261f989086cSIcenowy Zheng		};
262f989086cSIcenowy Zheng
2638dccafaaSRob Herring		mmc2: mmc@1c11000 {
264f989086cSIcenowy Zheng			compatible = "allwinner,sun7i-a20-mmc";
265f989086cSIcenowy Zheng			reg = <0x01c11000 0x1000>;
2668378be87SIcenowy Zheng			clocks = <&ccu CLK_BUS_MMC2>,
2678378be87SIcenowy Zheng				 <&ccu CLK_MMC2>,
2688378be87SIcenowy Zheng				 <&ccu CLK_MMC2_OUTPUT>,
2698378be87SIcenowy Zheng				 <&ccu CLK_MMC2_SAMPLE>;
270f989086cSIcenowy Zheng			clock-names = "ahb",
271f989086cSIcenowy Zheng				      "mmc",
272f989086cSIcenowy Zheng				      "output",
273f989086cSIcenowy Zheng				      "sample";
2748378be87SIcenowy Zheng			resets = <&ccu RST_BUS_MMC2>;
275f989086cSIcenowy Zheng			reset-names = "ahb";
276f989086cSIcenowy Zheng			interrupts = <GIC_SPI 62 IRQ_TYPE_LEVEL_HIGH>;
277f989086cSIcenowy Zheng			status = "disabled";
278f989086cSIcenowy Zheng			#address-cells = <1>;
279f989086cSIcenowy Zheng			#size-cells = <0>;
280f989086cSIcenowy Zheng		};
281f989086cSIcenowy Zheng
28296820e35SMartin Cerveny		crypto@1c15000 {
28396820e35SMartin Cerveny			compatible = "allwinner,sun8i-v3s-crypto",
28496820e35SMartin Cerveny				     "allwinner,sun8i-a33-crypto";
28596820e35SMartin Cerveny			reg = <0x01c15000 0x1000>;
28696820e35SMartin Cerveny			interrupts = <GIC_SPI 80 IRQ_TYPE_LEVEL_HIGH>;
28796820e35SMartin Cerveny			clocks = <&ccu CLK_BUS_CE>, <&ccu CLK_CE>;
28896820e35SMartin Cerveny			clock-names = "ahb", "mod";
28993bc32b0STobias Schramm			dmas = <&dma 16>, <&dma 16>;
29093bc32b0STobias Schramm			dma-names = "rx", "tx";
29196820e35SMartin Cerveny			resets = <&ccu RST_BUS_CE>;
29296820e35SMartin Cerveny			reset-names = "ahb";
29396820e35SMartin Cerveny		};
29496820e35SMartin Cerveny
2958dccafaaSRob Herring		usb_otg: usb@1c19000 {
296f989086cSIcenowy Zheng			compatible = "allwinner,sun8i-h3-musb";
297f989086cSIcenowy Zheng			reg = <0x01c19000 0x0400>;
2988378be87SIcenowy Zheng			clocks = <&ccu CLK_BUS_OTG>;
2998378be87SIcenowy Zheng			resets = <&ccu RST_BUS_OTG>;
300f989086cSIcenowy Zheng			interrupts = <GIC_SPI 71 IRQ_TYPE_LEVEL_HIGH>;
301f989086cSIcenowy Zheng			interrupt-names = "mc";
302f989086cSIcenowy Zheng			phys = <&usbphy 0>;
303f989086cSIcenowy Zheng			phy-names = "usb";
304f989086cSIcenowy Zheng			extcon = <&usbphy 0>;
305f989086cSIcenowy Zheng			status = "disabled";
306f989086cSIcenowy Zheng		};
307f989086cSIcenowy Zheng
3088dccafaaSRob Herring		usbphy: phy@1c19400 {
309f989086cSIcenowy Zheng			compatible = "allwinner,sun8i-v3s-usb-phy";
310f989086cSIcenowy Zheng			reg = <0x01c19400 0x2c>,
311f989086cSIcenowy Zheng			      <0x01c1a800 0x4>;
312f989086cSIcenowy Zheng			reg-names = "phy_ctrl",
313f989086cSIcenowy Zheng				    "pmu0";
3148378be87SIcenowy Zheng			clocks = <&ccu CLK_USB_PHY0>;
315f989086cSIcenowy Zheng			clock-names = "usb0_phy";
3168378be87SIcenowy Zheng			resets = <&ccu RST_USB_PHY0>;
317f989086cSIcenowy Zheng			reset-names = "usb0_reset";
318f989086cSIcenowy Zheng			status = "disabled";
319f989086cSIcenowy Zheng			#phy-cells = <1>;
320f989086cSIcenowy Zheng		};
321f989086cSIcenowy Zheng
32204aff09cSChris Morgan		ehci: usb@1c1a000 {
32304aff09cSChris Morgan			compatible = "allwinner,sun8i-v3s-ehci", "generic-ehci";
32404aff09cSChris Morgan			reg = <0x01c1a000 0x100>;
32504aff09cSChris Morgan			interrupts = <GIC_SPI 72 IRQ_TYPE_LEVEL_HIGH>;
32604aff09cSChris Morgan			clocks = <&ccu CLK_BUS_EHCI0>, <&ccu CLK_BUS_OHCI0>;
32704aff09cSChris Morgan			resets = <&ccu RST_BUS_EHCI0>, <&ccu RST_BUS_OHCI0>;
32804aff09cSChris Morgan			phys = <&usbphy 0>;
32904aff09cSChris Morgan			phy-names = "usb";
33004aff09cSChris Morgan			status = "disabled";
33104aff09cSChris Morgan		};
33204aff09cSChris Morgan
33304aff09cSChris Morgan		ohci: usb@1c1a400 {
33404aff09cSChris Morgan			compatible = "allwinner,sun8i-v3s-ohci", "generic-ohci";
33504aff09cSChris Morgan			reg = <0x01c1a400 0x100>;
33604aff09cSChris Morgan			interrupts = <GIC_SPI 73 IRQ_TYPE_LEVEL_HIGH>;
33704aff09cSChris Morgan			clocks = <&ccu CLK_BUS_EHCI0>, <&ccu CLK_BUS_OHCI0>,
33804aff09cSChris Morgan				 <&ccu CLK_USB_OHCI0>;
33904aff09cSChris Morgan			resets = <&ccu RST_BUS_EHCI0>, <&ccu RST_BUS_OHCI0>;
34004aff09cSChris Morgan			phys = <&usbphy 0>;
34104aff09cSChris Morgan			phy-names = "usb";
34204aff09cSChris Morgan			status = "disabled";
34304aff09cSChris Morgan		};
34404aff09cSChris Morgan
3458dccafaaSRob Herring		ccu: clock@1c20000 {
346f989086cSIcenowy Zheng			compatible = "allwinner,sun8i-v3s-ccu";
347f989086cSIcenowy Zheng			reg = <0x01c20000 0x400>;
3488cce5702SSamuel Holland			clocks = <&osc24M>, <&rtc CLK_OSC32K>;
349f989086cSIcenowy Zheng			clock-names = "hosc", "losc";
350f989086cSIcenowy Zheng			#clock-cells = <1>;
351f989086cSIcenowy Zheng			#reset-cells = <1>;
352f989086cSIcenowy Zheng		};
353f989086cSIcenowy Zheng
3548dccafaaSRob Herring		rtc: rtc@1c20400 {
35565a4a402SMaxime Ripard			#clock-cells = <1>;
35665a4a402SMaxime Ripard			compatible = "allwinner,sun8i-v3-rtc";
357f989086cSIcenowy Zheng			reg = <0x01c20400 0x54>;
358f989086cSIcenowy Zheng			interrupts = <GIC_SPI 40 IRQ_TYPE_LEVEL_HIGH>,
359f989086cSIcenowy Zheng				     <GIC_SPI 41 IRQ_TYPE_LEVEL_HIGH>;
36065a4a402SMaxime Ripard			clocks = <&osc32k>;
36165a4a402SMaxime Ripard			clock-output-names = "osc32k", "osc32k-out";
362f989086cSIcenowy Zheng		};
363f989086cSIcenowy Zheng
3648dccafaaSRob Herring		pio: pinctrl@1c20800 {
365f989086cSIcenowy Zheng			compatible = "allwinner,sun8i-v3s-pinctrl";
366f989086cSIcenowy Zheng			reg = <0x01c20800 0x400>;
367f989086cSIcenowy Zheng			interrupts = <GIC_SPI 15 IRQ_TYPE_LEVEL_HIGH>,
368f989086cSIcenowy Zheng				     <GIC_SPI 17 IRQ_TYPE_LEVEL_HIGH>;
3698cce5702SSamuel Holland			clocks = <&ccu CLK_BUS_PIO>, <&osc24M>,
3708cce5702SSamuel Holland				 <&rtc CLK_OSC32K>;
371f989086cSIcenowy Zheng			clock-names = "apb", "hosc", "losc";
372f989086cSIcenowy Zheng			gpio-controller;
373f989086cSIcenowy Zheng			#gpio-cells = <3>;
374f989086cSIcenowy Zheng			interrupt-controller;
375f989086cSIcenowy Zheng			#interrupt-cells = <3>;
376f989086cSIcenowy Zheng
377e174afa6SIcenowy Zheng			/omit-if-no-ref/
378b67b3c9bSPaul Kocialkowski			csi0_mclk_pin: csi0-mclk-pin {
379b67b3c9bSPaul Kocialkowski				pins = "PE20";
380b67b3c9bSPaul Kocialkowski				function = "csi_mipi";
381b67b3c9bSPaul Kocialkowski			};
382b67b3c9bSPaul Kocialkowski
383b67b3c9bSPaul Kocialkowski			/omit-if-no-ref/
384e174afa6SIcenowy Zheng			csi1_8bit_pins: csi1-8bit-pins {
385e174afa6SIcenowy Zheng				pins = "PE0", "PE2", "PE3", "PE8", "PE9",
386e174afa6SIcenowy Zheng				       "PE10", "PE11", "PE12", "PE13", "PE14",
387e174afa6SIcenowy Zheng				       "PE15";
388e174afa6SIcenowy Zheng				function = "csi";
389e174afa6SIcenowy Zheng			};
390e174afa6SIcenowy Zheng
391e174afa6SIcenowy Zheng			/omit-if-no-ref/
392e174afa6SIcenowy Zheng			csi1_mclk_pin: csi1-mclk-pin {
393e174afa6SIcenowy Zheng				pins = "PE1";
394e174afa6SIcenowy Zheng				function = "csi";
395e174afa6SIcenowy Zheng			};
396e174afa6SIcenowy Zheng
397438a44ceSMaxime Ripard			i2c0_pins: i2c0-pins {
398f989086cSIcenowy Zheng				pins = "PB6", "PB7";
399f989086cSIcenowy Zheng				function = "i2c0";
400f989086cSIcenowy Zheng			};
401f989086cSIcenowy Zheng
402b5a2221cSIcenowy Zheng			/omit-if-no-ref/
40352a70e64SPaul Kocialkowski			i2c1_pb_pins: i2c1-pb-pins {
40452a70e64SPaul Kocialkowski				pins = "PB8", "PB9";
40552a70e64SPaul Kocialkowski				function = "i2c1";
40652a70e64SPaul Kocialkowski			};
40752a70e64SPaul Kocialkowski
40852a70e64SPaul Kocialkowski			/omit-if-no-ref/
409b5a2221cSIcenowy Zheng			i2c1_pe_pins: i2c1-pe-pins {
410b5a2221cSIcenowy Zheng				pins = "PE21", "PE22";
411b5a2221cSIcenowy Zheng				function = "i2c1";
412b5a2221cSIcenowy Zheng			};
413b5a2221cSIcenowy Zheng
414438a44ceSMaxime Ripard			/omit-if-no-ref/
415f989086cSIcenowy Zheng			lcd_rgb666_pe_pins: lcd-rgb666-pe-pins {
416f989086cSIcenowy Zheng				pins = "PE0", "PE1", "PE2", "PE3", "PE4", "PE5",
417f989086cSIcenowy Zheng				       "PE6", "PE7", "PE8", "PE9", "PE10", "PE11",
418f989086cSIcenowy Zheng				       "PE12", "PE13", "PE14", "PE15", "PE16", "PE17",
4193199ed9bSLukas Schmid				       "PE18", "PE19", "PE23", "PE24";
4203199ed9bSLukas Schmid				function = "lcd";
4213199ed9bSLukas Schmid			};
4223199ed9bSLukas Schmid
4233199ed9bSLukas Schmid			uart0_pb_pins: uart0-pb-pins {
4243199ed9bSLukas Schmid				pins = "PB8", "PB9";
425c0dcfbe2SIcenowy Zheng				function = "uart0";
426c0dcfbe2SIcenowy Zheng			};
427c0dcfbe2SIcenowy Zheng
428c0dcfbe2SIcenowy Zheng			/omit-if-no-ref/
429c0dcfbe2SIcenowy Zheng			uart1_pe_pins: uart1-pe-pins {
430438a44ceSMaxime Ripard				pins = "PE21", "PE22";
431f989086cSIcenowy Zheng				function = "uart1";
432f989086cSIcenowy Zheng			};
433f989086cSIcenowy Zheng
434f989086cSIcenowy Zheng			uart2_pins: uart2-pins {
435f989086cSIcenowy Zheng				pins = "PB0", "PB1";
436f989086cSIcenowy Zheng				function = "uart2";
437be3c1392SIcenowy Zheng			};
438438a44ceSMaxime Ripard
439be3c1392SIcenowy Zheng			mmc0_pins: mmc0-pins {
440be3c1392SIcenowy Zheng				pins = "PF0", "PF1", "PF2", "PF3",
441be3c1392SIcenowy Zheng				       "PF4", "PF5";
442be3c1392SIcenowy Zheng				function = "mmc0";
443be3c1392SIcenowy Zheng				drive-strength = <30>;
444be3c1392SIcenowy Zheng				bias-pull-up;
4452a451bfaSIcenowy Zheng			};
44641192b67SChris Morgan
44741192b67SChris Morgan			mmc1_pins: mmc1-pins {
44841192b67SChris Morgan				pins = "PG0", "PG1", "PG2", "PG3",
44941192b67SChris Morgan				       "PG4", "PG5";
45041192b67SChris Morgan				function = "mmc1";
45141192b67SChris Morgan				drive-strength = <30>;
45241192b67SChris Morgan				bias-pull-up;
45341192b67SChris Morgan			};
45441192b67SChris Morgan
45541192b67SChris Morgan			/omit-if-no-ref/
45641192b67SChris Morgan			pwm0_pin: pwm0-pin {
45741192b67SChris Morgan				pins = "PB4";
458438a44ceSMaxime Ripard				function = "pwm0";
4592a451bfaSIcenowy Zheng			};
4602a451bfaSIcenowy Zheng
4612a451bfaSIcenowy Zheng			/omit-if-no-ref/
462f989086cSIcenowy Zheng			pwm1_pin: pwm1-pin {
463f989086cSIcenowy Zheng				pins = "PB5";
4648dccafaaSRob Herring				function = "pwm1";
46518742b24SMaxime Ripard			};
466f989086cSIcenowy Zheng
467f989086cSIcenowy Zheng			spi0_pins: spi0-pins {
46818742b24SMaxime Ripard				pins = "PC0", "PC1", "PC2", "PC3";
46918742b24SMaxime Ripard				function = "spi0";
470f989086cSIcenowy Zheng			};
471f989086cSIcenowy Zheng		};
472f989086cSIcenowy Zheng
4738dccafaaSRob Herring		timer@1c20c00 {
474f989086cSIcenowy Zheng			compatible = "allwinner,sun8i-v3s-timer";
475f989086cSIcenowy Zheng			reg = <0x01c20c00 0xa0>;
476f989086cSIcenowy Zheng			interrupts = <GIC_SPI 18 IRQ_TYPE_LEVEL_HIGH>,
4779e1975f0SMaxime Ripard				     <GIC_SPI 19 IRQ_TYPE_LEVEL_HIGH>,
478f989086cSIcenowy Zheng				     <GIC_SPI 20 IRQ_TYPE_LEVEL_HIGH>;
479f989086cSIcenowy Zheng			clocks = <&osc24M>;
4801d34350cSTobias Schramm		};
4811d34350cSTobias Schramm
4821d34350cSTobias Schramm		wdt0: watchdog@1c20ca0 {
4831d34350cSTobias Schramm			compatible = "allwinner,sun6i-a31-wdt";
4841d34350cSTobias Schramm			reg = <0x01c20ca0 0x20>;
4851d34350cSTobias Schramm			interrupts = <GIC_SPI 25 IRQ_TYPE_LEVEL_HIGH>;
4861d34350cSTobias Schramm			clocks = <&osc24M>;
4871d34350cSTobias Schramm		};
4881d34350cSTobias Schramm
48937eac4f9SIcenowy Zheng		pwm: pwm@1c21400 {
49037eac4f9SIcenowy Zheng			compatible = "allwinner,sun8i-v3s-pwm",
49137eac4f9SIcenowy Zheng				     "allwinner,sun7i-a20-pwm";
49237eac4f9SIcenowy Zheng			reg = <0x01c21400 0xc>;
49337eac4f9SIcenowy Zheng			clocks = <&osc24M>;
49437eac4f9SIcenowy Zheng			#pwm-cells = <3>;
49537eac4f9SIcenowy Zheng			status = "disabled";
4965348915dSTobias Schramm		};
4975348915dSTobias Schramm
4985348915dSTobias Schramm		lradc: lradc@1c22800 {
4995348915dSTobias Schramm			compatible = "allwinner,sun4i-a10-lradc-keys";
5005348915dSTobias Schramm			reg = <0x01c22800 0x400>;
5015348915dSTobias Schramm			interrupts = <GIC_SPI 30 IRQ_TYPE_LEVEL_HIGH>;
5025348915dSTobias Schramm			status = "disabled";
5035348915dSTobias Schramm		};
5045348915dSTobias Schramm
5055348915dSTobias Schramm		codec: codec@1c22c00 {
5065348915dSTobias Schramm			#sound-dai-cells = <0>;
5075348915dSTobias Schramm			compatible = "allwinner,sun8i-v3s-codec";
5085348915dSTobias Schramm			reg = <0x01c22c00 0x400>;
5095348915dSTobias Schramm			interrupts = <GIC_SPI 29 IRQ_TYPE_LEVEL_HIGH>;
5105348915dSTobias Schramm			clocks = <&ccu CLK_BUS_CODEC>, <&ccu CLK_AC_DIG>;
5115348915dSTobias Schramm			clock-names = "apb", "codec";
5125348915dSTobias Schramm			resets = <&ccu RST_BUS_CODEC>;
5135348915dSTobias Schramm			dmas = <&dma 15>, <&dma 15>;
5145348915dSTobias Schramm			dma-names = "rx", "tx";
5158dccafaaSRob Herring			allwinner,codec-analog-controls = <&codec_analog>;
516f989086cSIcenowy Zheng			status = "disabled";
517f989086cSIcenowy Zheng		};
518f989086cSIcenowy Zheng
519f989086cSIcenowy Zheng		codec_analog: codec-analog@1c23000 {
520f989086cSIcenowy Zheng			compatible = "allwinner,sun8i-v3s-codec-analog";
5218378be87SIcenowy Zheng			reg = <0x01c23000 0x4>;
52293bc32b0STobias Schramm		};
5231532d4f4SCristian Ciocaltea
5248378be87SIcenowy Zheng		uart0: serial@1c28000 {
525f989086cSIcenowy Zheng			compatible = "snps,dw-apb-uart";
526f989086cSIcenowy Zheng			reg = <0x01c28000 0x400>;
527f989086cSIcenowy Zheng			interrupts = <GIC_SPI 0 IRQ_TYPE_LEVEL_HIGH>;
5288dccafaaSRob Herring			reg-shift = <2>;
529f989086cSIcenowy Zheng			reg-io-width = <4>;
530f989086cSIcenowy Zheng			clocks = <&ccu CLK_BUS_UART0>;
531f989086cSIcenowy Zheng			dmas = <&dma 6>, <&dma 6>;
532f989086cSIcenowy Zheng			dma-names = "tx", "rx";
533f989086cSIcenowy Zheng			resets = <&ccu RST_BUS_UART0>;
5348378be87SIcenowy Zheng			status = "disabled";
53593bc32b0STobias Schramm		};
5361532d4f4SCristian Ciocaltea
5378378be87SIcenowy Zheng		uart1: serial@1c28400 {
538f989086cSIcenowy Zheng			compatible = "snps,dw-apb-uart";
539f989086cSIcenowy Zheng			reg = <0x01c28400 0x400>;
540f989086cSIcenowy Zheng			interrupts = <GIC_SPI 1 IRQ_TYPE_LEVEL_HIGH>;
5418dccafaaSRob Herring			reg-shift = <2>;
542f989086cSIcenowy Zheng			reg-io-width = <4>;
543f989086cSIcenowy Zheng			clocks = <&ccu CLK_BUS_UART1>;
544f989086cSIcenowy Zheng			dmas = <&dma 7>, <&dma 7>;
545f989086cSIcenowy Zheng			dma-names = "tx", "rx";
546f989086cSIcenowy Zheng			resets = <&ccu RST_BUS_UART1>;
5478378be87SIcenowy Zheng			status = "disabled";
54893bc32b0STobias Schramm		};
5491532d4f4SCristian Ciocaltea
5508378be87SIcenowy Zheng		uart2: serial@1c28800 {
551c0dcfbe2SIcenowy Zheng			compatible = "snps,dw-apb-uart";
552c0dcfbe2SIcenowy Zheng			reg = <0x01c28800 0x400>;
553f989086cSIcenowy Zheng			interrupts = <GIC_SPI 2 IRQ_TYPE_LEVEL_HIGH>;
554f989086cSIcenowy Zheng			reg-shift = <2>;
555f989086cSIcenowy Zheng			reg-io-width = <4>;
5568dccafaaSRob Herring			clocks = <&ccu CLK_BUS_UART2>;
557f989086cSIcenowy Zheng			dmas = <&dma 8>, <&dma 8>;
558f989086cSIcenowy Zheng			dma-names = "tx", "rx";
559f989086cSIcenowy Zheng			resets = <&ccu RST_BUS_UART2>;
5608378be87SIcenowy Zheng			pinctrl-0 = <&uart2_pins>;
5618378be87SIcenowy Zheng			pinctrl-names = "default";
562f989086cSIcenowy Zheng			status = "disabled";
563f989086cSIcenowy Zheng		};
564f989086cSIcenowy Zheng
565f989086cSIcenowy Zheng		i2c0: i2c@1c2ac00 {
566f989086cSIcenowy Zheng			compatible = "allwinner,sun6i-a31-i2c";
567f989086cSIcenowy Zheng			reg = <0x01c2ac00 0x400>;
568f989086cSIcenowy Zheng			interrupts = <GIC_SPI 6 IRQ_TYPE_LEVEL_HIGH>;
5698dccafaaSRob Herring			clocks = <&ccu CLK_BUS_I2C0>;
570f989086cSIcenowy Zheng			resets = <&ccu RST_BUS_I2C0>;
571f989086cSIcenowy Zheng			pinctrl-names = "default";
572f989086cSIcenowy Zheng			pinctrl-0 = <&i2c0_pins>;
5738378be87SIcenowy Zheng			status = "disabled";
5748378be87SIcenowy Zheng			#address-cells = <1>;
575f989086cSIcenowy Zheng			#size-cells = <0>;
576f989086cSIcenowy Zheng		};
577f989086cSIcenowy Zheng
578f989086cSIcenowy Zheng		i2c1: i2c@1c2b000 {
579f989086cSIcenowy Zheng			compatible = "allwinner,sun6i-a31-i2c";
58002ed6bb8SIcenowy Zheng			reg = <0x01c2b000 0x400>;
58102ed6bb8SIcenowy Zheng			interrupts = <GIC_SPI 7 IRQ_TYPE_LEVEL_HIGH>;
58202ed6bb8SIcenowy Zheng			clocks = <&ccu CLK_BUS_I2C1>;
58302ed6bb8SIcenowy Zheng			resets = <&ccu RST_BUS_I2C1>;
58402ed6bb8SIcenowy Zheng			status = "disabled";
58502ed6bb8SIcenowy Zheng			#address-cells = <1>;
58602ed6bb8SIcenowy Zheng			#size-cells = <0>;
58702ed6bb8SIcenowy Zheng		};
58802ed6bb8SIcenowy Zheng
58902ed6bb8SIcenowy Zheng		emac: ethernet@1c30000 {
59002ed6bb8SIcenowy Zheng			compatible = "allwinner,sun8i-v3s-emac";
59102ed6bb8SIcenowy Zheng			syscon = <&syscon>;
59202ed6bb8SIcenowy Zheng			reg = <0x01c30000 0x10000>;
59302ed6bb8SIcenowy Zheng			interrupts = <GIC_SPI 82 IRQ_TYPE_LEVEL_HIGH>;
59402ed6bb8SIcenowy Zheng			interrupt-names = "macirq";
59502ed6bb8SIcenowy Zheng			resets = <&ccu RST_BUS_EMAC>;
59602ed6bb8SIcenowy Zheng			reset-names = "stmmaceth";
59702ed6bb8SIcenowy Zheng			clocks = <&ccu CLK_BUS_EMAC>;
59802ed6bb8SIcenowy Zheng			clock-names = "stmmaceth";
59902ed6bb8SIcenowy Zheng			phy-handle = <&int_mii_phy>;
60002ed6bb8SIcenowy Zheng			phy-mode = "mii";
60102ed6bb8SIcenowy Zheng			status = "disabled";
60202ed6bb8SIcenowy Zheng
60302ed6bb8SIcenowy Zheng			mdio: mdio {
60402ed6bb8SIcenowy Zheng				#address-cells = <1>;
60502ed6bb8SIcenowy Zheng				#size-cells = <0>;
60602ed6bb8SIcenowy Zheng				compatible = "snps,dwmac-mdio";
60702ed6bb8SIcenowy Zheng			};
60802ed6bb8SIcenowy Zheng
60902ed6bb8SIcenowy Zheng			mdio_mux: mdio-mux {
61002ed6bb8SIcenowy Zheng				compatible = "allwinner,sun8i-h3-mdio-mux";
61102ed6bb8SIcenowy Zheng				#address-cells = <1>;
61202ed6bb8SIcenowy Zheng				#size-cells = <0>;
61302ed6bb8SIcenowy Zheng
61402ed6bb8SIcenowy Zheng				mdio-parent-bus = <&mdio>;
61502ed6bb8SIcenowy Zheng				/* Only one MDIO is usable at the time */
61602ed6bb8SIcenowy Zheng				internal_mdio: mdio@1 {
61702ed6bb8SIcenowy Zheng					compatible = "allwinner,sun8i-h3-mdio-internal";
61802ed6bb8SIcenowy Zheng					reg = <1>;
61902ed6bb8SIcenowy Zheng					#address-cells = <1>;
62002ed6bb8SIcenowy Zheng					#size-cells = <0>;
62102ed6bb8SIcenowy Zheng
62202ed6bb8SIcenowy Zheng					int_mii_phy: ethernet-phy@1 {
6232a451bfaSIcenowy Zheng						compatible = "ethernet-phy-ieee802.3-c22";
6242a451bfaSIcenowy Zheng						reg = <1>;
6252a451bfaSIcenowy Zheng						clocks = <&ccu CLK_BUS_EPHY>;
6262a451bfaSIcenowy Zheng						resets = <&ccu RST_BUS_EPHY>;
6272a451bfaSIcenowy Zheng					};
6282a451bfaSIcenowy Zheng				};
62993bc32b0STobias Schramm			};
63093bc32b0STobias Schramm		};
6312a451bfaSIcenowy Zheng
6322a451bfaSIcenowy Zheng		spi0: spi@1c68000 {
6332a451bfaSIcenowy Zheng			compatible = "allwinner,sun8i-h3-spi";
6342a451bfaSIcenowy Zheng			reg = <0x01c68000 0x1000>;
6352a451bfaSIcenowy Zheng			interrupts = <GIC_SPI 65 IRQ_TYPE_LEVEL_HIGH>;
6362a451bfaSIcenowy Zheng			clocks = <&ccu CLK_BUS_SPI0>, <&ccu CLK_SPI0>;
6372a451bfaSIcenowy Zheng			clock-names = "ahb", "mod";
6382a451bfaSIcenowy Zheng			dmas = <&dma 23>, <&dma 23>;
639c4af5169SPaul Kocialkowski			dma-names = "rx", "tx";
640c4af5169SPaul Kocialkowski			pinctrl-names = "default";
641c4af5169SPaul Kocialkowski			pinctrl-0 = <&spi0_pins>;
642c4af5169SPaul Kocialkowski			resets = <&ccu RST_BUS_SPI0>;
643c4af5169SPaul Kocialkowski			status = "disabled";
644c4af5169SPaul Kocialkowski			#address-cells = <1>;
645c4af5169SPaul Kocialkowski			#size-cells = <0>;
646c4af5169SPaul Kocialkowski		};
647c4af5169SPaul Kocialkowski
648c4af5169SPaul Kocialkowski		gic: interrupt-controller@1c81000 {
649c4af5169SPaul Kocialkowski			compatible = "arm,gic-400";
65090e04810SIcenowy Zheng			reg = <0x01c81000 0x1000>,
65190e04810SIcenowy Zheng			      <0x01c82000 0x2000>,
65290e04810SIcenowy Zheng			      <0x01c84000 0x2000>,
65390e04810SIcenowy Zheng			      <0x01c86000 0x2000>;
65490e04810SIcenowy Zheng			interrupt-controller;
655*f45b2949SPaul Kocialkowski			#interrupt-cells = <3>;
65690e04810SIcenowy Zheng			interrupts = <GIC_PPI 9 (GIC_CPU_MASK_SIMPLE(4) | IRQ_TYPE_LEVEL_HIGH)>;
65790e04810SIcenowy Zheng		};
65890e04810SIcenowy Zheng
65990e04810SIcenowy Zheng		csi1: camera@1cb4000 {
66090e04810SIcenowy Zheng			compatible = "allwinner,sun8i-v3s-csi";
661f989086cSIcenowy Zheng			reg = <0x01cb4000 0x3000>;
662f989086cSIcenowy Zheng			interrupts = <GIC_SPI 84 IRQ_TYPE_LEVEL_HIGH>;
663			clocks = <&ccu CLK_BUS_CSI>,
664				 <&ccu CLK_CSI_SCLK>,
665				 <&ccu CLK_DRAM_CSI>;
666			clock-names = "bus", "mod", "ram";
667			resets = <&ccu RST_BUS_CSI>;
668			status = "disabled";
669		};
670	};
671};
672