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