1// SPDX-License-Identifier: (GPL-2.0+ OR MIT)
2// Copyright (c) 2019 Jernej Skrabec <jernej.skrabec@siol.net>
3
4/dts-v1/;
5
6#include "sun50i-h6.dtsi"
7#include "sun50i-h6-cpu-opp.dtsi"
8
9#include <dt-bindings/gpio/gpio.h>
10
11/ {
12	aliases {
13		serial0 = &uart0;
14	};
15
16	chosen {
17		stdout-path = "serial0:115200n8";
18	};
19
20	connector {
21		compatible = "hdmi-connector";
22		ddc-en-gpios = <&pio 7 2 GPIO_ACTIVE_HIGH>; /* PH2 */
23		type = "a";
24
25		port {
26			hdmi_con_in: endpoint {
27				remote-endpoint = <&hdmi_out_con>;
28			};
29		};
30	};
31
32	/* used for FD650 LED display driver */
33	i2c {
34		compatible = "i2c-gpio";
35		sda-gpios = <&pio 7 6 (GPIO_ACTIVE_HIGH|GPIO_OPEN_DRAIN)>; /* PH6 */
36		scl-gpios = <&pio 7 5 (GPIO_ACTIVE_HIGH|GPIO_OPEN_DRAIN)>; /* PH5 */
37		i2c-gpio,delay-us = <5>;
38	};
39
40	reg_vcc1v8: regulator-vcc1v8 {
41		compatible = "regulator-fixed";
42		regulator-name = "vcc1v8";
43		regulator-min-microvolt = <1800000>;
44		regulator-max-microvolt = <1800000>;
45	};
46
47	reg_vcc3v3: regulator-vcc3v3 {
48		compatible = "regulator-fixed";
49		regulator-name = "vcc3v3";
50		regulator-min-microvolt = <3300000>;
51		regulator-max-microvolt = <3300000>;
52	};
53
54	reg_vdd_cpu_gpu: regulator-vdd-cpu-gpu {
55		compatible = "regulator-fixed";
56		regulator-name = "vdd-cpu-gpu";
57		regulator-min-microvolt = <1135000>;
58		regulator-max-microvolt = <1135000>;
59	};
60
61	sound-spdif {
62		compatible = "simple-audio-card";
63		simple-audio-card,name = "sun50i-h6-spdif";
64
65		simple-audio-card,cpu {
66			sound-dai = <&spdif>;
67		};
68
69		simple-audio-card,codec {
70			sound-dai = <&spdif_out>;
71		};
72	};
73
74	spdif_out: spdif-out {
75		#sound-dai-cells = <0>;
76		compatible = "linux,spdif-dit";
77	};
78
79	wifi_pwrseq: wifi-pwrseq {
80		compatible = "mmc-pwrseq-simple";
81		clocks = <&rtc CLK_OSC32K_FANOUT>;
82		clock-names = "ext_clock";
83		reset-gpios = <&r_pio 1 3 GPIO_ACTIVE_LOW>; /* PM3 */
84	};
85};
86
87&cpu0 {
88	cpu-supply = <&reg_vdd_cpu_gpu>;
89};
90
91&de {
92	status = "okay";
93};
94
95&dwc3 {
96	status = "okay";
97};
98
99&ehci0 {
100	status = "okay";
101};
102
103&ehci3 {
104	status = "okay";
105};
106
107&gpu {
108	mali-supply = <&reg_vdd_cpu_gpu>;
109	status = "okay";
110};
111
112&hdmi {
113	status = "okay";
114};
115
116&hdmi_out {
117	hdmi_out_con: endpoint {
118		remote-endpoint = <&hdmi_con_in>;
119	};
120};
121
122&mmc0 {
123	pinctrl-names = "default";
124	pinctrl-0 = <&mmc0_pins>;
125	vmmc-supply = <&reg_vcc3v3>;
126	cd-gpios = <&pio 5 6 GPIO_ACTIVE_LOW>;
127	bus-width = <4>;
128	status = "okay";
129};
130
131&mmc1 {
132	vmmc-supply = <&reg_vcc3v3>;
133	vqmmc-supply = <&reg_vcc1v8>;
134	mmc-pwrseq = <&wifi_pwrseq>;
135	bus-width = <4>;
136	non-removable;
137	status = "okay";
138};
139
140&mmc2 {
141	vmmc-supply = <&reg_vcc3v3>;
142	vqmmc-supply = <&reg_vcc1v8>;
143	bus-width = <8>;
144	non-removable;
145	cap-mmc-hw-reset;
146	mmc-hs200-1_8v;
147	status = "okay";
148};
149
150&ohci0 {
151	status = "okay";
152};
153
154&ohci3 {
155	status = "okay";
156};
157
158&pio {
159	vcc-pc-supply = <&reg_vcc1v8>;
160	vcc-pd-supply = <&reg_vcc3v3>;
161	vcc-pg-supply = <&reg_vcc1v8>;
162};
163
164&r_ir {
165	status = "okay";
166};
167
168&spdif {
169	status = "okay";
170};
171
172&uart0 {
173	pinctrl-names = "default";
174	pinctrl-0 = <&uart0_ph_pins>;
175	status = "okay";
176};
177
178&usb2otg {
179	dr_mode = "host";
180	status = "okay";
181};
182
183&usb2phy {
184	status = "okay";
185};
186
187&usb3phy {
188	status = "okay";
189};
190