xref: /OK3568_Linux_fs/kernel/arch/arm64/boot/dts/rockchip/rk3399-excavator-sapphire.dtsi (revision 4882a59341e53eb6f0b4789bf948001014eff981)
1*4882a593Smuzhiyun// SPDX-License-Identifier: (GPL-2.0+ OR MIT)
2*4882a593Smuzhiyun/*
3*4882a593Smuzhiyun * Copyright (c) 2022 Rockchip Electronics Co., Ltd.
4*4882a593Smuzhiyun *
5*4882a593Smuzhiyun */
6*4882a593Smuzhiyun
7*4882a593Smuzhiyun#include "rk3399-sapphire.dtsi"
8*4882a593Smuzhiyun#include <dt-bindings/sensor-dev.h>
9*4882a593Smuzhiyun/ {
10*4882a593Smuzhiyun	compatible = "rockchip,rk3399-sapphire-excavator", "rockchip,rk3399";
11*4882a593Smuzhiyun
12*4882a593Smuzhiyun	rt5651_sound: rt5651-sound {
13*4882a593Smuzhiyun		compatible = "simple-audio-card";
14*4882a593Smuzhiyun		simple-audio-card,format = "i2s";
15*4882a593Smuzhiyun		simple-audio-card,name = "realtek,rt5651-codec";
16*4882a593Smuzhiyun		simple-audio-card,mclk-fs = <256>;
17*4882a593Smuzhiyun		simple-audio-card,widgets =
18*4882a593Smuzhiyun			"Microphone", "Mic Jack",
19*4882a593Smuzhiyun			"Headphone", "Headphone Jack";
20*4882a593Smuzhiyun		simple-audio-card,routing =
21*4882a593Smuzhiyun			"Mic Jack", "MICBIAS1",
22*4882a593Smuzhiyun			"IN1P", "Mic Jack",
23*4882a593Smuzhiyun			"Headphone Jack", "HPOL",
24*4882a593Smuzhiyun			"Headphone Jack", "HPOR";
25*4882a593Smuzhiyun		simple-audio-card,cpu {
26*4882a593Smuzhiyun			sound-dai = <&i2s0>;
27*4882a593Smuzhiyun		};
28*4882a593Smuzhiyun		simple-audio-card,codec {
29*4882a593Smuzhiyun			sound-dai = <&rt5651>;
30*4882a593Smuzhiyun		};
31*4882a593Smuzhiyun	};
32*4882a593Smuzhiyun
33*4882a593Smuzhiyun	spdif-sound {
34*4882a593Smuzhiyun		status = "okay";
35*4882a593Smuzhiyun		compatible = "simple-audio-card";
36*4882a593Smuzhiyun		simple-audio-card,name = "ROCKCHIP,SPDIF";
37*4882a593Smuzhiyun		simple-audio-card,cpu {
38*4882a593Smuzhiyun			sound-dai = <&spdif>;
39*4882a593Smuzhiyun		};
40*4882a593Smuzhiyun		simple-audio-card,codec {
41*4882a593Smuzhiyun			sound-dai = <&spdif_out>;
42*4882a593Smuzhiyun		};
43*4882a593Smuzhiyun	};
44*4882a593Smuzhiyun
45*4882a593Smuzhiyun	spdif_out: spdif-out {
46*4882a593Smuzhiyun		status = "okay";
47*4882a593Smuzhiyun		compatible = "linux,spdif-dit";
48*4882a593Smuzhiyun		#sound-dai-cells = <0>;
49*4882a593Smuzhiyun	};
50*4882a593Smuzhiyun
51*4882a593Smuzhiyun	sdio_pwrseq: sdio-pwrseq {
52*4882a593Smuzhiyun		compatible = "mmc-pwrseq-simple";
53*4882a593Smuzhiyun		clocks = <&rk808 1>;
54*4882a593Smuzhiyun		clock-names = "ext_clock";
55*4882a593Smuzhiyun		pinctrl-names = "default";
56*4882a593Smuzhiyun		pinctrl-0 = <&wifi_enable_h>;
57*4882a593Smuzhiyun
58*4882a593Smuzhiyun		/*
59*4882a593Smuzhiyun		 * On the module itself this is one of these (depending
60*4882a593Smuzhiyun		 * on the actual card populated):
61*4882a593Smuzhiyun		 * - SDIO_RESET_L_WL_REG_ON
62*4882a593Smuzhiyun		 * - PDN (power down when low)
63*4882a593Smuzhiyun		 */
64*4882a593Smuzhiyun		reset-gpios = <&gpio0 10 GPIO_ACTIVE_LOW>; /* GPIO0_B2 */
65*4882a593Smuzhiyun	};
66*4882a593Smuzhiyun
67*4882a593Smuzhiyun	wireless-wlan {
68*4882a593Smuzhiyun		compatible = "wlan-platdata";
69*4882a593Smuzhiyun		rockchip,grf = <&grf>;
70*4882a593Smuzhiyun		wifi_chip_type = "ap6354";
71*4882a593Smuzhiyun		sdio_vref = <1800>;
72*4882a593Smuzhiyun		WIFI,host_wake_irq = <&gpio0 3 GPIO_ACTIVE_HIGH>; /* GPIO0_a3 */
73*4882a593Smuzhiyun		WIFI,poweren_gpio = <&gpio0 10 GPIO_ACTIVE_HIGH>;
74*4882a593Smuzhiyun		status = "okay";
75*4882a593Smuzhiyun	};
76*4882a593Smuzhiyun
77*4882a593Smuzhiyun	wireless-bluetooth {
78*4882a593Smuzhiyun		compatible = "bluetooth-platdata";
79*4882a593Smuzhiyun		clocks = <&rk808 1>;
80*4882a593Smuzhiyun		clock-names = "ext_clock";
81*4882a593Smuzhiyun		//wifi-bt-power-toggle;
82*4882a593Smuzhiyun		uart_rts_gpios = <&gpio2 19 GPIO_ACTIVE_LOW>; /* GPIO2_C3 */
83*4882a593Smuzhiyun		pinctrl-names = "default", "rts_gpio";
84*4882a593Smuzhiyun		pinctrl-0 = <&uart0_rts>, <&bt_reset_gpio>, <&bt_wake_gpio>, <&bt_irq_gpio>;
85*4882a593Smuzhiyun		pinctrl-1 = <&uart0_gpios>;
86*4882a593Smuzhiyun		//BT,power_gpio  = <&gpio3 19 GPIO_ACTIVE_HIGH>; /* GPIOx_xx */
87*4882a593Smuzhiyun		BT,reset_gpio    = <&gpio0 9 GPIO_ACTIVE_HIGH>; /* GPIO0_B1 */
88*4882a593Smuzhiyun		BT,wake_gpio     = <&gpio2 26 GPIO_ACTIVE_HIGH>; /* GPIO2_D2 */
89*4882a593Smuzhiyun		BT,wake_host_irq = <&gpio0 4 GPIO_ACTIVE_HIGH>; /* GPIO0_A4 */
90*4882a593Smuzhiyun		status = "okay";
91*4882a593Smuzhiyun	};
92*4882a593Smuzhiyun};
93*4882a593Smuzhiyun
94*4882a593Smuzhiyun&dfi {
95*4882a593Smuzhiyun	status = "okay";
96*4882a593Smuzhiyun};
97*4882a593Smuzhiyun
98*4882a593Smuzhiyun&dmc {
99*4882a593Smuzhiyun	status = "okay";
100*4882a593Smuzhiyun	center-supply = <&vdd_center>;
101*4882a593Smuzhiyun	upthreshold = <40>;
102*4882a593Smuzhiyun	downdifferential = <20>;
103*4882a593Smuzhiyun	system-status-freq = <
104*4882a593Smuzhiyun		/*system status         freq(KHz)*/
105*4882a593Smuzhiyun		SYS_STATUS_NORMAL       800000
106*4882a593Smuzhiyun		SYS_STATUS_REBOOT       528000
107*4882a593Smuzhiyun		SYS_STATUS_SUSPEND      200000
108*4882a593Smuzhiyun		SYS_STATUS_VIDEO_1080P  200000
109*4882a593Smuzhiyun		SYS_STATUS_VIDEO_4K     600000
110*4882a593Smuzhiyun		SYS_STATUS_VIDEO_4K_10B 800000
111*4882a593Smuzhiyun		SYS_STATUS_PERFORMANCE  800000
112*4882a593Smuzhiyun		SYS_STATUS_BOOST        600000
113*4882a593Smuzhiyun		SYS_STATUS_DUALVIEW     600000
114*4882a593Smuzhiyun		SYS_STATUS_ISP          600000
115*4882a593Smuzhiyun	>;
116*4882a593Smuzhiyun	vop-bw-dmc-freq = <
117*4882a593Smuzhiyun	/* min_bw(MB/s) max_bw(MB/s) freq(KHz) */
118*4882a593Smuzhiyun		0       762      200000
119*4882a593Smuzhiyun		763     1893     400000
120*4882a593Smuzhiyun		1894    3012     528000
121*4882a593Smuzhiyun		3013    99999    800000
122*4882a593Smuzhiyun	>;
123*4882a593Smuzhiyun	auto-freq-en = <1>;
124*4882a593Smuzhiyun	auto-min-freq = <200000>;
125*4882a593Smuzhiyun};
126*4882a593Smuzhiyun
127*4882a593Smuzhiyun&spdif {
128*4882a593Smuzhiyun	status = "okay";
129*4882a593Smuzhiyun	pinctrl-0 = <&spdif_bus>;
130*4882a593Smuzhiyun	i2c-scl-rising-time-ns = <450>;
131*4882a593Smuzhiyun	i2c-scl-falling-time-ns = <15>;
132*4882a593Smuzhiyun	#sound-dai-cells = <0>;
133*4882a593Smuzhiyun};
134*4882a593Smuzhiyun
135*4882a593Smuzhiyun&i2s0 {
136*4882a593Smuzhiyun	status = "okay";
137*4882a593Smuzhiyun	rockchip,playback-channels = <8>;
138*4882a593Smuzhiyun	rockchip,capture-channels = <8>;
139*4882a593Smuzhiyun	#sound-dai-cells = <0>;
140*4882a593Smuzhiyun};
141*4882a593Smuzhiyun
142*4882a593Smuzhiyun&i2c1 {
143*4882a593Smuzhiyun	status = "okay";
144*4882a593Smuzhiyun	i2c-scl-rising-time-ns = <300>;
145*4882a593Smuzhiyun	i2c-scl-falling-time-ns = <15>;
146*4882a593Smuzhiyun
147*4882a593Smuzhiyun	rt5651: rt5651@1a {
148*4882a593Smuzhiyun		#sound-dai-cells = <0>;
149*4882a593Smuzhiyun		compatible = "rockchip,rt5651";
150*4882a593Smuzhiyun		reg = <0x1a>;
151*4882a593Smuzhiyun		clocks = <&cru SCLK_I2S_8CH_OUT>;
152*4882a593Smuzhiyun		clock-names = "mclk";
153*4882a593Smuzhiyun		pinctrl-names = "default";
154*4882a593Smuzhiyun		pinctrl-0 = <&i2s_8ch_mclk>;
155*4882a593Smuzhiyun		spk-con-gpio = <&gpio0 11 GPIO_ACTIVE_HIGH>;
156*4882a593Smuzhiyun		hp-det-gpio = <&gpio4 28 GPIO_ACTIVE_LOW>;
157*4882a593Smuzhiyun	};
158*4882a593Smuzhiyun};
159*4882a593Smuzhiyun
160*4882a593Smuzhiyun&i2c4 {
161*4882a593Smuzhiyun	status = "okay";
162*4882a593Smuzhiyun	i2c-scl-rising-time-ns = <600>;
163*4882a593Smuzhiyun	i2c-scl-falling-time-ns = <20>;
164*4882a593Smuzhiyun
165*4882a593Smuzhiyun	mpu6500@68 {
166*4882a593Smuzhiyun		status = "disabled";
167*4882a593Smuzhiyun		compatible = "invensense,mpu6500";
168*4882a593Smuzhiyun		reg = <0x68>;
169*4882a593Smuzhiyun		irq-gpio = <&gpio1 22 IRQ_TYPE_EDGE_RISING>;
170*4882a593Smuzhiyun		mpu-int_config = <0x10>;
171*4882a593Smuzhiyun		mpu-level_shifter = <0>;
172*4882a593Smuzhiyun		mpu-orientation = <0 1 0 1 0 0 0 0 1>;
173*4882a593Smuzhiyun		orientation-x= <1>;
174*4882a593Smuzhiyun		orientation-y= <0>;
175*4882a593Smuzhiyun		orientation-z= <0>;
176*4882a593Smuzhiyun		mpu-debug = <1>;
177*4882a593Smuzhiyun	};
178*4882a593Smuzhiyun
179*4882a593Smuzhiyun	mpu6500_acc: mpu_acc@68 {
180*4882a593Smuzhiyun		compatible = "mpu6500_acc";
181*4882a593Smuzhiyun		reg = <0x68>;
182*4882a593Smuzhiyun		irq-gpio = <&gpio1 22 IRQ_TYPE_EDGE_RISING>;
183*4882a593Smuzhiyun		irq_enable = <0>;
184*4882a593Smuzhiyun		poll_delay_ms = <30>;
185*4882a593Smuzhiyun		type = <SENSOR_TYPE_ACCEL>;
186*4882a593Smuzhiyun		layout = <2>;
187*4882a593Smuzhiyun	};
188*4882a593Smuzhiyun
189*4882a593Smuzhiyun	mpu6500_gyro: mpu_gyro@68 {
190*4882a593Smuzhiyun		compatible = "mpu6500_gyro";
191*4882a593Smuzhiyun		reg = <0x68>;
192*4882a593Smuzhiyun		irq_enable = <0>;
193*4882a593Smuzhiyun		poll_delay_ms = <30>;
194*4882a593Smuzhiyun		type = <SENSOR_TYPE_GYROSCOPE>;
195*4882a593Smuzhiyun		layout = <2>;
196*4882a593Smuzhiyun	};
197*4882a593Smuzhiyun};
198*4882a593Smuzhiyun
199*4882a593Smuzhiyun&pcie0 {
200*4882a593Smuzhiyun	ep-gpios = <&gpio2 4 GPIO_ACTIVE_HIGH>;
201*4882a593Smuzhiyun	num-lanes = <4>;
202*4882a593Smuzhiyun	pinctrl-names = "default";
203*4882a593Smuzhiyun	pinctrl-0 = <&pcie_clkreqn_cpm>;
204*4882a593Smuzhiyun};
205*4882a593Smuzhiyun
206*4882a593Smuzhiyun&uart0 {
207*4882a593Smuzhiyun	pinctrl-names = "default";
208*4882a593Smuzhiyun	pinctrl-0 = <&uart0_xfer &uart0_cts>;
209*4882a593Smuzhiyun	status = "okay";
210*4882a593Smuzhiyun};
211*4882a593Smuzhiyun
212*4882a593Smuzhiyun&saradc {
213*4882a593Smuzhiyun	status = "okay";
214*4882a593Smuzhiyun};
215*4882a593Smuzhiyun
216*4882a593Smuzhiyun&sdio0 {
217*4882a593Smuzhiyun	max-frequency = <100000000>;
218*4882a593Smuzhiyun	no-sd;
219*4882a593Smuzhiyun	no-mmc;
220*4882a593Smuzhiyun	bus-width = <4>;
221*4882a593Smuzhiyun	disable-wp;
222*4882a593Smuzhiyun	cap-sd-highspeed;
223*4882a593Smuzhiyun	cap-sdio-irq;
224*4882a593Smuzhiyun	keep-power-in-suspend;
225*4882a593Smuzhiyun	mmc-pwrseq = <&sdio_pwrseq>;
226*4882a593Smuzhiyun	non-removable;
227*4882a593Smuzhiyun	num-slots = <1>;
228*4882a593Smuzhiyun	pinctrl-names = "default";
229*4882a593Smuzhiyun	pinctrl-0 = <&sdio0_bus4 &sdio0_cmd &sdio0_clk>;
230*4882a593Smuzhiyun	sd-uhs-sdr104;
231*4882a593Smuzhiyun	status = "okay";
232*4882a593Smuzhiyun};
233*4882a593Smuzhiyun
234*4882a593Smuzhiyun&rockchip_suspend {
235*4882a593Smuzhiyun	status = "okay";
236*4882a593Smuzhiyun	rockchip,sleep-debug-en = <1>;
237*4882a593Smuzhiyun	rockchip,sleep-mode-config = <
238*4882a593Smuzhiyun		(0
239*4882a593Smuzhiyun		| RKPM_SLP_ARMPD
240*4882a593Smuzhiyun		| RKPM_SLP_PERILPPD
241*4882a593Smuzhiyun		| RKPM_SLP_DDR_RET
242*4882a593Smuzhiyun		| RKPM_SLP_PLLPD
243*4882a593Smuzhiyun		| RKPM_SLP_CENTER_PD
244*4882a593Smuzhiyun		| RKPM_SLP_AP_PWROFF
245*4882a593Smuzhiyun		)
246*4882a593Smuzhiyun		>;
247*4882a593Smuzhiyun	rockchip,wakeup-config = <
248*4882a593Smuzhiyun		(0
249*4882a593Smuzhiyun		| RKPM_GPIO_WKUP_EN
250*4882a593Smuzhiyun		| RKPM_PWM_WKUP_EN
251*4882a593Smuzhiyun		)
252*4882a593Smuzhiyun		>;
253*4882a593Smuzhiyun		rockchip,pwm-regulator-config = <
254*4882a593Smuzhiyun		(0
255*4882a593Smuzhiyun		| PWM2_REGULATOR_EN
256*4882a593Smuzhiyun		)
257*4882a593Smuzhiyun		>;
258*4882a593Smuzhiyun		rockchip,power-ctrl =
259*4882a593Smuzhiyun		<&gpio1 17 GPIO_ACTIVE_HIGH>,
260*4882a593Smuzhiyun		<&gpio1 14 GPIO_ACTIVE_HIGH>;
261*4882a593Smuzhiyun};
262*4882a593Smuzhiyun
263*4882a593Smuzhiyun&pinctrl {
264*4882a593Smuzhiyun	sdio-pwrseq {
265*4882a593Smuzhiyun		wifi_enable_h: wifi-enable-h {
266*4882a593Smuzhiyun			rockchip,pins =
267*4882a593Smuzhiyun				<0 RK_PB2 RK_FUNC_GPIO &pcfg_pull_none>;
268*4882a593Smuzhiyun		};
269*4882a593Smuzhiyun	};
270*4882a593Smuzhiyun
271*4882a593Smuzhiyun	wireless-bluetooth {
272*4882a593Smuzhiyun		uart0_gpios: uart0-gpios {
273*4882a593Smuzhiyun			rockchip,pins =
274*4882a593Smuzhiyun				<2 RK_PC3 RK_FUNC_GPIO &pcfg_pull_none>;
275*4882a593Smuzhiyun		};
276*4882a593Smuzhiyun		bt_reset_gpio: bt-reset-gpio {
277*4882a593Smuzhiyun			rockchip,pins =
278*4882a593Smuzhiyun				<0 RK_PB1 RK_FUNC_GPIO &pcfg_pull_none>;
279*4882a593Smuzhiyun		};
280*4882a593Smuzhiyun		bt_wake_gpio: bt-wake-gpio {
281*4882a593Smuzhiyun			rockchip,pins =
282*4882a593Smuzhiyun				<2 RK_PD2 RK_FUNC_GPIO &pcfg_pull_none>;
283*4882a593Smuzhiyun		};
284*4882a593Smuzhiyun		bt_irq_gpio: bt-irq-gpio {
285*4882a593Smuzhiyun			rockchip,pins =
286*4882a593Smuzhiyun				<0 RK_PA4 RK_FUNC_GPIO &pcfg_pull_down>;
287*4882a593Smuzhiyun		};
288*4882a593Smuzhiyun	};
289*4882a593Smuzhiyun};
290