xref: /OK3568_Linux_fs/kernel/arch/arm/boot/dts/rk3308-dot-v10-aarch32.dts (revision 4882a59341e53eb6f0b4789bf948001014eff981)
1*4882a593Smuzhiyun// SPDX-License-Identifier: (GPL-2.0+ OR MIT)
2*4882a593Smuzhiyun/*
3*4882a593Smuzhiyun * Copyright (c) 2018 Fuzhou Rockchip Electronics Co., Ltd
4*4882a593Smuzhiyun */
5*4882a593Smuzhiyun
6*4882a593Smuzhiyun/dts-v1/;
7*4882a593Smuzhiyun
8*4882a593Smuzhiyun#include <dt-bindings/input/input.h>
9*4882a593Smuzhiyun#include "arm64/rockchip/rk3308.dtsi"
10*4882a593Smuzhiyun
11*4882a593Smuzhiyun/ {
12*4882a593Smuzhiyun	model = "Rockchip RK3308 Dot V10 (AArch32)";
13*4882a593Smuzhiyun	compatible = "rockchip,rk3308-dot-v10-aarch32", "rockchip,rk3308";
14*4882a593Smuzhiyun
15*4882a593Smuzhiyun	chosen {
16*4882a593Smuzhiyun		bootargs = "earlycon=uart8250,mmio32,0xff0c0000 console=ttyFIQ0 root=PARTUUID=614e0000-0000 rootfstype=squashfs rootwait snd_aloop.index=7 snd_aloop.use_raw_jiffies=1";
17*4882a593Smuzhiyun	};
18*4882a593Smuzhiyun
19*4882a593Smuzhiyun	acodec_sound: acodec-sound {
20*4882a593Smuzhiyun		compatible = "rockchip,multicodecs-card";
21*4882a593Smuzhiyun		rockchip,card-name = "rockchip,rk3308-acodec";
22*4882a593Smuzhiyun		rockchip,codec-hp-det;
23*4882a593Smuzhiyun		rockchip,mclk-fs = <256>;
24*4882a593Smuzhiyun		rockchip,cpu = <&i2s_8ch_2>;
25*4882a593Smuzhiyun		rockchip,codec = <&acodec>;
26*4882a593Smuzhiyun		status = "okay";
27*4882a593Smuzhiyun	};
28*4882a593Smuzhiyun
29*4882a593Smuzhiyun	adc-keys {
30*4882a593Smuzhiyun		compatible = "adc-keys";
31*4882a593Smuzhiyun		io-channels = <&saradc 1>;
32*4882a593Smuzhiyun		io-channel-names = "buttons";
33*4882a593Smuzhiyun		poll-interval = <100>;
34*4882a593Smuzhiyun		keyup-threshold-microvolt = <1800000>;
35*4882a593Smuzhiyun
36*4882a593Smuzhiyun		esc-key {
37*4882a593Smuzhiyun			linux,code = <KEY_MICMUTE>;
38*4882a593Smuzhiyun			label = "micmute";
39*4882a593Smuzhiyun			press-threshold-microvolt = <1130000>;
40*4882a593Smuzhiyun		};
41*4882a593Smuzhiyun
42*4882a593Smuzhiyun		menu-key {
43*4882a593Smuzhiyun			linux,code = <KEY_PLAY>;
44*4882a593Smuzhiyun			label = "play";
45*4882a593Smuzhiyun			press-threshold-microvolt = <624000>;
46*4882a593Smuzhiyun		};
47*4882a593Smuzhiyun
48*4882a593Smuzhiyun		vol-down-key {
49*4882a593Smuzhiyun			linux,code = <KEY_VOLUMEDOWN>;
50*4882a593Smuzhiyun			label = "volume down";
51*4882a593Smuzhiyun			press-threshold-microvolt = <300000>;
52*4882a593Smuzhiyun		};
53*4882a593Smuzhiyun
54*4882a593Smuzhiyun		vol-up-key {
55*4882a593Smuzhiyun			linux,code = <KEY_VOLUMEUP>;
56*4882a593Smuzhiyun			label = "volume up";
57*4882a593Smuzhiyun			press-threshold-microvolt = <18000>;
58*4882a593Smuzhiyun		};
59*4882a593Smuzhiyun	};
60*4882a593Smuzhiyun
61*4882a593Smuzhiyun	dummy_codec: dummy-codec {
62*4882a593Smuzhiyun		compatible = "rockchip,dummy-codec";
63*4882a593Smuzhiyun		#sound-dai-cells = <0>;
64*4882a593Smuzhiyun	};
65*4882a593Smuzhiyun
66*4882a593Smuzhiyun	sdio_pwrseq: sdio-pwrseq {
67*4882a593Smuzhiyun		compatible = "mmc-pwrseq-simple";
68*4882a593Smuzhiyun		pinctrl-names = "default";
69*4882a593Smuzhiyun		pinctrl-0 = <&wifi_enable_h>;
70*4882a593Smuzhiyun
71*4882a593Smuzhiyun		/*
72*4882a593Smuzhiyun		 * On the module itself this is one of these (depending
73*4882a593Smuzhiyun		 * on the actual card populated):
74*4882a593Smuzhiyun		 * - SDIO_RESET_L_WL_REG_ON
75*4882a593Smuzhiyun		 * - PDN (power down when low)
76*4882a593Smuzhiyun		 */
77*4882a593Smuzhiyun		reset-gpios = <&gpio0 RK_PA2 GPIO_ACTIVE_LOW>;
78*4882a593Smuzhiyun	};
79*4882a593Smuzhiyun
80*4882a593Smuzhiyun	spdif_tx_sound: spdif-tx-sound {
81*4882a593Smuzhiyun		status = "disabled";
82*4882a593Smuzhiyun		compatible = "simple-audio-card";
83*4882a593Smuzhiyun		simple-audio-card,name = "rockchip,spdif-tx-sound";
84*4882a593Smuzhiyun		simple-audio-card,mclk-fs = <128>;
85*4882a593Smuzhiyun		simple-audio-card,cpu {
86*4882a593Smuzhiyun			sound-dai = <&spdif_tx>;
87*4882a593Smuzhiyun		};
88*4882a593Smuzhiyun		simple-audio-card,codec {
89*4882a593Smuzhiyun			sound-dai = <&dummy_codec>;
90*4882a593Smuzhiyun		};
91*4882a593Smuzhiyun	};
92*4882a593Smuzhiyun
93*4882a593Smuzhiyun	vad-sound {
94*4882a593Smuzhiyun		status = "disabled";
95*4882a593Smuzhiyun		compatible = "rockchip,multicodecs-card";
96*4882a593Smuzhiyun		rockchip,card-name = "rockchip,rk3308-vad";
97*4882a593Smuzhiyun		rockchip,codec-hp-det;
98*4882a593Smuzhiyun		rockchip,cpu = <&i2s_8ch_2>;
99*4882a593Smuzhiyun		rockchip,codec = <&acodec>, <&vad>;
100*4882a593Smuzhiyun	};
101*4882a593Smuzhiyun
102*4882a593Smuzhiyun	vdd_log: vdd_core: vdd-core {
103*4882a593Smuzhiyun		compatible = "pwm-regulator";
104*4882a593Smuzhiyun		pwms = <&pwm0 0 5000 1>;
105*4882a593Smuzhiyun		regulator-name = "vdd_core";
106*4882a593Smuzhiyun		regulator-min-microvolt = <827000>;
107*4882a593Smuzhiyun		regulator-max-microvolt = <1340000>;
108*4882a593Smuzhiyun		regulator-init-microvolt = <1015000>;
109*4882a593Smuzhiyun		regulator-always-on;
110*4882a593Smuzhiyun		regulator-boot-on;
111*4882a593Smuzhiyun		regulator-settling-time-up-us = <250>;
112*4882a593Smuzhiyun		status = "okay";
113*4882a593Smuzhiyun	};
114*4882a593Smuzhiyun
115*4882a593Smuzhiyun	vdd_1v0: vdd-1v0 {
116*4882a593Smuzhiyun		compatible = "regulator-fixed";
117*4882a593Smuzhiyun		regulator-name = "vdd_1v0";
118*4882a593Smuzhiyun		regulator-always-on;
119*4882a593Smuzhiyun		regulator-boot-on;
120*4882a593Smuzhiyun		regulator-min-microvolt = <1000000>;
121*4882a593Smuzhiyun		regulator-max-microvolt = <1000000>;
122*4882a593Smuzhiyun	};
123*4882a593Smuzhiyun
124*4882a593Smuzhiyun	vcc_1v8: vcc-1v8 {
125*4882a593Smuzhiyun		compatible = "regulator-fixed";
126*4882a593Smuzhiyun		regulator-name = "vcc_1v8";
127*4882a593Smuzhiyun		regulator-always-on;
128*4882a593Smuzhiyun		regulator-boot-on;
129*4882a593Smuzhiyun		regulator-min-microvolt = <1800000>;
130*4882a593Smuzhiyun		regulator-max-microvolt = <1800000>;
131*4882a593Smuzhiyun		vin-supply = <&vcc_io>;
132*4882a593Smuzhiyun	};
133*4882a593Smuzhiyun
134*4882a593Smuzhiyun	vcc_ddr: vcc-ddr {
135*4882a593Smuzhiyun		compatible = "regulator-fixed";
136*4882a593Smuzhiyun		regulator-name = "vcc_ddr";
137*4882a593Smuzhiyun		regulator-always-on;
138*4882a593Smuzhiyun		regulator-boot-on;
139*4882a593Smuzhiyun		regulator-min-microvolt = <1500000>;
140*4882a593Smuzhiyun		regulator-max-microvolt = <1500000>;
141*4882a593Smuzhiyun	};
142*4882a593Smuzhiyun
143*4882a593Smuzhiyun	vccio_sdio: vcc_io: vcc-io {
144*4882a593Smuzhiyun		compatible = "regulator-fixed";
145*4882a593Smuzhiyun		regulator-name = "vcc_io";
146*4882a593Smuzhiyun		regulator-always-on;
147*4882a593Smuzhiyun		regulator-boot-on;
148*4882a593Smuzhiyun		regulator-min-microvolt = <3300000>;
149*4882a593Smuzhiyun		regulator-max-microvolt = <3300000>;
150*4882a593Smuzhiyun	};
151*4882a593Smuzhiyun
152*4882a593Smuzhiyun	wireless-bluetooth {
153*4882a593Smuzhiyun		compatible = "bluetooth-platdata";
154*4882a593Smuzhiyun		uart_rts_gpios = <&gpio4 RK_PA7 GPIO_ACTIVE_LOW>;
155*4882a593Smuzhiyun		pinctrl-names = "default", "rts_gpio";
156*4882a593Smuzhiyun		pinctrl-0 = <&uart4_rts>;
157*4882a593Smuzhiyun		pinctrl-1 = <&uart4_rts_gpio>;
158*4882a593Smuzhiyun		BT,power_gpio    = <&gpio4 RK_PB3 GPIO_ACTIVE_HIGH>;
159*4882a593Smuzhiyun		BT,wake_host_irq = <&gpio4 RK_PB4 GPIO_ACTIVE_HIGH>;
160*4882a593Smuzhiyun		status = "okay";
161*4882a593Smuzhiyun	};
162*4882a593Smuzhiyun
163*4882a593Smuzhiyun	wireless-wlan {
164*4882a593Smuzhiyun		compatible = "wlan-platdata";
165*4882a593Smuzhiyun		rockchip,grf = <&grf>;
166*4882a593Smuzhiyun		clocks = <&cru SCLK_WIFI>;
167*4882a593Smuzhiyun		clock-names = "clk_wifi";
168*4882a593Smuzhiyun		ref-clock-frequency = <24000000>;
169*4882a593Smuzhiyun		pinctrl-names = "default";
170*4882a593Smuzhiyun		pinctrl-0 = <&wifi_wake_host>, <&rtc_32k>;
171*4882a593Smuzhiyun		wifi_chip_type = "rtl8723ds";
172*4882a593Smuzhiyun		WIFI,host_wake_irq = <&gpio0 RK_PA0 GPIO_ACTIVE_LOW>;
173*4882a593Smuzhiyun		status = "okay";
174*4882a593Smuzhiyun	};
175*4882a593Smuzhiyun};
176*4882a593Smuzhiyun
177*4882a593Smuzhiyun&acodec {
178*4882a593Smuzhiyun	status = "okay";
179*4882a593Smuzhiyun	rockchip,micbias1;
180*4882a593Smuzhiyun	rockchip,micbias2;
181*4882a593Smuzhiyun	rockchip,no-deep-low-power;
182*4882a593Smuzhiyun	rockchip,no-hp-det;
183*4882a593Smuzhiyun	rockchip,loopback-grp = <1>;
184*4882a593Smuzhiyun	spk-ctl-gpios = <&gpio0 RK_PA5 GPIO_ACTIVE_HIGH>;
185*4882a593Smuzhiyun	/* ADC5-8 for 4ch capture, loopback to ADC3-4 */
186*4882a593Smuzhiyun	rockchip,adc-grps-route = <2 3 1 0>;
187*4882a593Smuzhiyun};
188*4882a593Smuzhiyun
189*4882a593Smuzhiyun&cpu0 {
190*4882a593Smuzhiyun	cpu-supply = <&vdd_core>;
191*4882a593Smuzhiyun};
192*4882a593Smuzhiyun
193*4882a593Smuzhiyun&dmc {
194*4882a593Smuzhiyun	center-supply = <&vdd_log>;
195*4882a593Smuzhiyun	status = "okay";
196*4882a593Smuzhiyun};
197*4882a593Smuzhiyun
198*4882a593Smuzhiyun&fiq_debugger {
199*4882a593Smuzhiyun	status = "okay";
200*4882a593Smuzhiyun};
201*4882a593Smuzhiyun
202*4882a593Smuzhiyun&i2s_8ch_2 {
203*4882a593Smuzhiyun	status = "okay";
204*4882a593Smuzhiyun};
205*4882a593Smuzhiyun
206*4882a593Smuzhiyun&io_domains {
207*4882a593Smuzhiyun	status = "okay";
208*4882a593Smuzhiyun
209*4882a593Smuzhiyun	vccio0-supply = <&vcc_io>;
210*4882a593Smuzhiyun	vccio1-supply = <&vcc_io>;
211*4882a593Smuzhiyun	vccio2-supply = <&vcc_1v8>;
212*4882a593Smuzhiyun	vccio3-supply = <&vcc_io>;
213*4882a593Smuzhiyun	vccio4-supply = <&vccio_sdio>;
214*4882a593Smuzhiyun	vccio5-supply = <&vcc_io>;
215*4882a593Smuzhiyun};
216*4882a593Smuzhiyun
217*4882a593Smuzhiyun&nandc {
218*4882a593Smuzhiyun	status = "okay";
219*4882a593Smuzhiyun};
220*4882a593Smuzhiyun
221*4882a593Smuzhiyun&pinctrl {
222*4882a593Smuzhiyun	sdio-pwrseq {
223*4882a593Smuzhiyun		wifi_enable_h: wifi-enable-h {
224*4882a593Smuzhiyun			rockchip,pins = <0 RK_PA2 RK_FUNC_GPIO &pcfg_pull_none>;
225*4882a593Smuzhiyun		};
226*4882a593Smuzhiyun	};
227*4882a593Smuzhiyun
228*4882a593Smuzhiyun	wireless-wlan {
229*4882a593Smuzhiyun		wifi_wake_host: wifi-wake-host {
230*4882a593Smuzhiyun			rockchip,pins = <0 RK_PA0 RK_FUNC_GPIO &pcfg_pull_up>;
231*4882a593Smuzhiyun		};
232*4882a593Smuzhiyun	};
233*4882a593Smuzhiyun};
234*4882a593Smuzhiyun
235*4882a593Smuzhiyun&pwm0 {
236*4882a593Smuzhiyun	status = "okay";
237*4882a593Smuzhiyun	pinctrl-names = "active";
238*4882a593Smuzhiyun	pinctrl-0 = <&pwm0_pin_pull_down>;
239*4882a593Smuzhiyun};
240*4882a593Smuzhiyun
241*4882a593Smuzhiyun&ramoops {
242*4882a593Smuzhiyun	reg = <0x0 0x30000 0x0 0x20000>;
243*4882a593Smuzhiyun	record-size = <0x00000>;
244*4882a593Smuzhiyun	console-size = <0x20000>;
245*4882a593Smuzhiyun};
246*4882a593Smuzhiyun
247*4882a593Smuzhiyun&rockchip_suspend {
248*4882a593Smuzhiyun	rockchip,pwm-regulator-config = <
249*4882a593Smuzhiyun		(0
250*4882a593Smuzhiyun		| RKPM_PWM_REGULATOR
251*4882a593Smuzhiyun		)
252*4882a593Smuzhiyun	>;
253*4882a593Smuzhiyun
254*4882a593Smuzhiyun	status = "okay";
255*4882a593Smuzhiyun};
256*4882a593Smuzhiyun
257*4882a593Smuzhiyun&saradc {
258*4882a593Smuzhiyun	status = "okay";
259*4882a593Smuzhiyun	vref-supply = <&vcc_1v8>;
260*4882a593Smuzhiyun};
261*4882a593Smuzhiyun
262*4882a593Smuzhiyun&sdio {
263*4882a593Smuzhiyun	max-frequency = <110000000>;
264*4882a593Smuzhiyun	bus-width = <4>;
265*4882a593Smuzhiyun	cap-sd-highspeed;
266*4882a593Smuzhiyun	no-sd;
267*4882a593Smuzhiyun	no-mmc;
268*4882a593Smuzhiyun	ignore-pm-notify;
269*4882a593Smuzhiyun	keep-power-in-suspend;
270*4882a593Smuzhiyun	non-removable;
271*4882a593Smuzhiyun	mmc-pwrseq = <&sdio_pwrseq>;
272*4882a593Smuzhiyun	sd-uhs-sdr104;
273*4882a593Smuzhiyun	status = "okay";
274*4882a593Smuzhiyun};
275*4882a593Smuzhiyun
276*4882a593Smuzhiyun&sfc {
277*4882a593Smuzhiyun	status = "okay";
278*4882a593Smuzhiyun};
279*4882a593Smuzhiyun
280*4882a593Smuzhiyun&tsadc {
281*4882a593Smuzhiyun	rockchip,hw-tshut-mode = <0>; /* tshut mode 0:CRU 1:GPIO */
282*4882a593Smuzhiyun	rockchip,hw-tshut-polarity = <1>; /* tshut polarity 0:LOW 1:HIGH */
283*4882a593Smuzhiyun	status = "okay";
284*4882a593Smuzhiyun};
285*4882a593Smuzhiyun
286*4882a593Smuzhiyun&u2phy {
287*4882a593Smuzhiyun	status = "okay";
288*4882a593Smuzhiyun	u2phy_otg: otg-port {
289*4882a593Smuzhiyun		status = "okay";
290*4882a593Smuzhiyun	};
291*4882a593Smuzhiyun};
292*4882a593Smuzhiyun
293*4882a593Smuzhiyun&usb20_otg {
294*4882a593Smuzhiyun	status = "okay";
295*4882a593Smuzhiyun};
296*4882a593Smuzhiyun
297*4882a593Smuzhiyun&vad {
298*4882a593Smuzhiyun	status = "disabled";
299*4882a593Smuzhiyun	rockchip,audio-src = <&i2s_8ch_2>;
300*4882a593Smuzhiyun	rockchip,det-channel = <0>;
301*4882a593Smuzhiyun	rockchip,mode = <1>;
302*4882a593Smuzhiyun	rockchip,buffer-time-ms = <500>;
303*4882a593Smuzhiyun	#sound-dai-cells = <0>;
304*4882a593Smuzhiyun};
305