1// SPDX-License-Identifier: (GPL-2.0+ OR MIT)
2
3/dts-v1/;
4
5#include "rk3036.dtsi"
6
7/ {
8	model = "Rockchip RK3036 KylinBoard";
9	compatible = "rockchip,rk3036-kylin", "rockchip,rk3036";
10
11	chosen {
12		stdout-path = "serial2:115200n8";
13	};
14
15	memory@60000000 {
16		device_type = "memory";
17		reg = <0x60000000 0x20000000>;
18	};
19
20	hdmi_con: hdmi-con {
21		compatible = "hdmi-connector";
22		type = "a";
23
24		port {
25			hdmi_con_in: endpoint {
26				remote-endpoint = <&hdmi_out_con>;
27			};
28		};
29	};
30
31	leds: gpio-leds {
32		compatible = "gpio-leds";
33
34		work_led: led-0 {
35			gpios = <&gpio2 RK_PD6 GPIO_ACTIVE_HIGH>;
36			label = "kylin:red:led";
37			pinctrl-names = "default";
38			pinctrl-0 = <&led_ctl>;
39		};
40	};
41
42	sdio_pwrseq: sdio-pwrseq {
43		compatible = "mmc-pwrseq-simple";
44		pinctrl-names = "default";
45		pinctrl-0 = <&bt_wake_h>;
46
47		/*
48		 * On the module itself this is one of these (depending
49		 * on the actual card populated):
50		 * - SDIO_RESET_L_WL_REG_ON
51		 * - SDIO_RESET_L_WL_RST
52		 * - SDIO_RESET_L_BT_EN
53		 */
54		reset-gpios = <&gpio0 RK_PD2 GPIO_ACTIVE_LOW>, /* WL_REG_ON */
55			      <&gpio0 RK_PD3 GPIO_ACTIVE_LOW>, /* WL_RST */
56			      <&gpio2 RK_PB1 GPIO_ACTIVE_LOW>; /* BT_EN */
57	};
58
59	sound {
60		compatible = "simple-audio-card";
61		simple-audio-card,format = "i2s";
62		simple-audio-card,name = "rockchip,rt5616-codec";
63		simple-audio-card,mclk-fs = <512>;
64		simple-audio-card,widgets =
65			"Microphone", "Microphone Jack",
66			"Headphone", "Headphone Jack";
67		simple-audio-card,routing =
68			"MIC1", "Microphone Jack",
69			"MIC2", "Microphone Jack",
70			"Microphone Jack", "micbias1",
71			"Headphone Jack", "HPOL",
72			"Headphone Jack", "HPOR";
73
74		simple-audio-card,cpu {
75			sound-dai = <&i2s>;
76		};
77
78		simple-audio-card,codec {
79			sound-dai = <&rt5616>;
80		};
81	};
82
83	vcc_sys: vsys-regulator {
84		compatible = "regulator-fixed";
85		regulator-name = "vcc_sys";
86		regulator-min-microvolt = <5000000>;
87		regulator-max-microvolt = <5000000>;
88		regulator-always-on;
89		regulator-boot-on;
90	};
91};
92
93&acodec {
94	status = "okay";
95};
96
97&emac {
98	phy = <&phy0>;
99	phy-reset-duration = <10>; /* millisecond */
100	phy-reset-gpios = <&gpio2 RK_PC6 GPIO_ACTIVE_LOW>; /* PHY_RST */
101	pinctrl-names = "default";
102	pinctrl-0 = <&emac_xfer>, <&emac_mdio>;
103	status = "okay";
104
105	mdio {
106		#address-cells = <1>;
107		#size-cells = <0>;
108
109		phy0: ethernet-phy@0 {
110			reg = <0>;
111		};
112	};
113};
114
115&emmc {
116	status = "okay";
117};
118
119&gpu {
120	mali-supply = <&vdd_gpu>;
121	status = "okay";
122};
123
124&hdmi {
125	status = "okay";
126};
127
128&hdmi_out {
129	hdmi_out_con: endpoint {
130		remote-endpoint = <&hdmi_con_in>;
131	};
132};
133
134&i2c1 {
135	clock-frequency = <400000>;
136
137	status = "okay";
138
139	rk808: pmic@1b {
140		compatible = "rockchip,rk808";
141		reg = <0x1b>;
142		interrupt-parent = <&gpio2>;
143		interrupts = <RK_PA2 IRQ_TYPE_LEVEL_LOW>;
144		pinctrl-names = "default";
145		pinctrl-0 = <&pmic_int &global_pwroff>;
146		rockchip,system-power-controller;
147		wakeup-source;
148		#clock-cells = <1>;
149		clock-output-names = "xin32k", "rk808-clkout2";
150
151		vcc1-supply = <&vcc_sys>;
152		vcc2-supply = <&vcc_sys>;
153		vcc3-supply = <&vcc_sys>;
154		vcc4-supply = <&vcc_sys>;
155		vcc6-supply = <&vcc_sys>;
156		vcc7-supply = <&vcc_sys>;
157		vcc8-supply = <&vcc_18>;
158		vcc9-supply = <&vcc_io>;
159		vcc10-supply = <&vcc_io>;
160		vcc11-supply = <&vcc_sys>;
161		vcc12-supply = <&vcc_io>;
162		vddio-supply = <&vccio_pmu>;
163
164		regulators {
165			vdd_cpu: DCDC_REG1 {
166				regulator-always-on;
167				regulator-boot-on;
168				regulator-min-microvolt = <750000>;
169				regulator-max-microvolt = <1350000>;
170				regulator-name = "vdd_arm";
171				regulator-state-mem {
172					regulator-off-in-suspend;
173				};
174			};
175
176			vdd_gpu: DCDC_REG2 {
177				regulator-always-on;
178				regulator-boot-on;
179				regulator-min-microvolt = <850000>;
180				regulator-max-microvolt = <1250000>;
181				regulator-name = "vdd_gpu";
182				regulator-state-mem {
183					regulator-on-in-suspend;
184					regulator-suspend-microvolt = <1000000>;
185				};
186			};
187
188			vcc_ddr: DCDC_REG3 {
189				regulator-always-on;
190				regulator-boot-on;
191				regulator-name = "vcc_ddr";
192				regulator-state-mem {
193					regulator-on-in-suspend;
194				};
195			};
196
197			vcc_io: DCDC_REG4 {
198				regulator-always-on;
199				regulator-boot-on;
200				regulator-min-microvolt = <3300000>;
201				regulator-max-microvolt = <3300000>;
202				regulator-name = "vcc_io";
203				regulator-state-mem {
204					regulator-on-in-suspend;
205					regulator-suspend-microvolt = <3300000>;
206				};
207			};
208
209			vccio_pmu: LDO_REG1 {
210				regulator-always-on;
211				regulator-boot-on;
212				regulator-min-microvolt = <3300000>;
213				regulator-max-microvolt = <3300000>;
214				regulator-name = "vccio_pmu";
215				regulator-state-mem {
216					regulator-on-in-suspend;
217					regulator-suspend-microvolt = <3300000>;
218				};
219			};
220
221			vcc_tp: LDO_REG2 {
222				regulator-always-on;
223				regulator-boot-on;
224				regulator-min-microvolt = <3300000>;
225				regulator-max-microvolt = <3300000>;
226				regulator-name = "vcc_tp";
227				regulator-state-mem {
228					regulator-off-in-suspend;
229				};
230			};
231
232			vdd_10: LDO_REG3 {
233				regulator-always-on;
234				regulator-boot-on;
235				regulator-min-microvolt = <1000000>;
236				regulator-max-microvolt = <1000000>;
237				regulator-name = "vdd_10";
238				regulator-state-mem {
239					regulator-on-in-suspend;
240					regulator-suspend-microvolt = <1000000>;
241				};
242			};
243
244			vcc18_lcd: LDO_REG4 {
245				regulator-always-on;
246				regulator-boot-on;
247				regulator-min-microvolt = <1800000>;
248				regulator-max-microvolt = <1800000>;
249				regulator-name = "vcc18_lcd";
250				regulator-state-mem {
251					regulator-on-in-suspend;
252					regulator-suspend-microvolt = <1800000>;
253				};
254			};
255
256			vccio_sd: LDO_REG5 {
257				regulator-always-on;
258				regulator-boot-on;
259				regulator-min-microvolt = <1800000>;
260				regulator-max-microvolt = <3300000>;
261				regulator-name = "vccio_sd";
262				regulator-state-mem {
263					regulator-on-in-suspend;
264					regulator-suspend-microvolt = <3300000>;
265				};
266			};
267
268			vout5: LDO_REG6 {
269				regulator-always-on;
270				regulator-boot-on;
271				regulator-min-microvolt = <1800000>;
272				regulator-max-microvolt = <2500000>;
273				regulator-name = "vout5";
274				regulator-state-mem {
275					regulator-on-in-suspend;
276					regulator-suspend-microvolt = <1800000>;
277				};
278			};
279
280			vcc_18: LDO_REG7 {
281				regulator-always-on;
282				regulator-boot-on;
283				regulator-min-microvolt = <1800000>;
284				regulator-max-microvolt = <1800000>;
285				regulator-name = "vcc_18";
286				regulator-state-mem {
287					regulator-on-in-suspend;
288					regulator-suspend-microvolt = <1800000>;
289				};
290			};
291
292			vcca_codec: LDO_REG8 {
293				regulator-always-on;
294				regulator-boot-on;
295				regulator-min-microvolt = <1800000>;
296				regulator-max-microvolt = <1800000>;
297				regulator-name = "vcca_codec";
298				regulator-state-mem {
299					regulator-on-in-suspend;
300					regulator-suspend-microvolt = <1800000>;
301				};
302			};
303
304			vcc_wl: SWITCH_REG1 {
305				regulator-always-on;
306				regulator-boot-on;
307				regulator-name = "vcc_wl";
308				regulator-state-mem {
309					regulator-on-in-suspend;
310				};
311			};
312
313			vcc_lcd: SWITCH_REG2 {
314				regulator-always-on;
315				regulator-boot-on;
316				regulator-name = "vcc_lcd";
317				regulator-state-mem {
318					regulator-on-in-suspend;
319				};
320			};
321		};
322	};
323};
324
325&i2c2 {
326	status = "okay";
327
328	rt5616: audio-codec@1b {
329		compatible = "realtek,rt5616";
330		reg = <0x1b>;
331		clocks = <&cru SCLK_I2S_OUT>;
332		clock-names = "mclk";
333		#sound-dai-cells = <0>;
334	};
335};
336
337&i2s {
338	status = "okay";
339};
340
341&sdio {
342	status = "okay";
343
344	bus-width = <4>;
345	cap-sd-highspeed;
346	cap-sdio-irq;
347	rockchip,default-sample-phase = <90>;
348	keep-power-in-suspend;
349	mmc-pwrseq = <&sdio_pwrseq>;
350	non-removable;
351	pinctrl-names = "default";
352	pinctrl-0 = <&sdio_clk &sdio_cmd &sdio_bus4>;
353	sd-uhs-sdr12;
354	sd-uhs-sdr25;
355	sd-uhs-sdr50;
356	sd-uhs-sdr104;
357};
358
359&sdmmc {
360	bus-width = <4>;
361	cap-mmc-highspeed;
362	cap-sd-highspeed;
363	card-detect-delay = <200>;
364	disable-wp;
365	pinctrl-names = "default";
366	pinctrl-0 = <&sdmmc_clk>, <&sdmmc_cmd>, <&sdmmc_cd>, <&sdmmc_bus4>;
367};
368
369&uart0 {
370	status = "okay";
371};
372
373&uart2 {
374	status = "okay";
375};
376
377&usb_host {
378	status = "okay";
379};
380
381&usb_otg {
382	status = "okay";
383};
384
385&vop {
386	status = "okay";
387};
388
389&vop_mmu {
390	status = "okay";
391};
392
393&pinctrl {
394	leds {
395		led_ctl: led-ctl {
396			rockchip,pins = <2 RK_PD6 RK_FUNC_GPIO &pcfg_pull_none>;
397		};
398	};
399
400	pmic {
401		pmic_int: pmic-int {
402			rockchip,pins = <2 RK_PA2 RK_FUNC_GPIO &pcfg_pull_default>;
403		};
404	};
405
406	sdio {
407		bt_wake_h: bt-wake-h {
408			rockchip,pins = <2 RK_PB0 RK_FUNC_GPIO &pcfg_pull_default>;
409		};
410	};
411
412	sdmmc {
413		sdmmc_pwr: sdmmc-pwr {
414			rockchip,pins = <2 RK_PD4 RK_FUNC_GPIO &pcfg_pull_none>;
415		};
416	};
417
418	suspend {
419		global_pwroff: global-pwroff {
420			rockchip,pins = <2 RK_PA7 1 &pcfg_pull_none>;
421		};
422	};
423};
424