xref: /optee_os/core/arch/arm/dts/stm32mp15xx-dhcom-pdk2.dtsi (revision 6e9896c08ac4d8e81bb95ba1afa46cf6028fd4df)
1*6e9896c0SJohann Neuhauser// SPDX-License-Identifier: GPL-2.0+ OR BSD-3-Clause
2*6e9896c0SJohann Neuhauser/*
3*6e9896c0SJohann Neuhauser * Copyright (C) 2019-2020 Marek Vasut <marex@denx.de>
4*6e9896c0SJohann Neuhauser * Copyright (C) 2022 DH electronics GmbH
5*6e9896c0SJohann Neuhauser */
6*6e9896c0SJohann Neuhauser
7*6e9896c0SJohann Neuhauser/ {
8*6e9896c0SJohann Neuhauser	aliases {
9*6e9896c0SJohann Neuhauser		serial0 = &uart4;
10*6e9896c0SJohann Neuhauser		serial1 = &usart3;
11*6e9896c0SJohann Neuhauser		serial2 = &uart8;
12*6e9896c0SJohann Neuhauser	};
13*6e9896c0SJohann Neuhauser
14*6e9896c0SJohann Neuhauser	chosen {
15*6e9896c0SJohann Neuhauser		stdout-path = "serial0:115200n8";
16*6e9896c0SJohann Neuhauser	};
17*6e9896c0SJohann Neuhauser
18*6e9896c0SJohann Neuhauser	clk_ext_audio_codec: clock-codec {
19*6e9896c0SJohann Neuhauser		compatible = "fixed-clock";
20*6e9896c0SJohann Neuhauser		#clock-cells = <0>;
21*6e9896c0SJohann Neuhauser		clock-frequency = <24000000>;
22*6e9896c0SJohann Neuhauser	};
23*6e9896c0SJohann Neuhauser
24*6e9896c0SJohann Neuhauser	display_bl: display-bl {
25*6e9896c0SJohann Neuhauser		compatible = "pwm-backlight";
26*6e9896c0SJohann Neuhauser		pwms = <&pwm2 3 500000 1>;
27*6e9896c0SJohann Neuhauser		brightness-levels = <0 16 22 30 40 55 75 102 138 188 255>;
28*6e9896c0SJohann Neuhauser		default-brightness-level = <8>;
29*6e9896c0SJohann Neuhauser		enable-gpios = <&gpioi 0 GPIO_ACTIVE_HIGH>;
30*6e9896c0SJohann Neuhauser		power-supply = <&reg_panel_bl>;
31*6e9896c0SJohann Neuhauser		status = "okay";
32*6e9896c0SJohann Neuhauser	};
33*6e9896c0SJohann Neuhauser
34*6e9896c0SJohann Neuhauser	gpio-keys-polled {
35*6e9896c0SJohann Neuhauser		compatible = "gpio-keys-polled";
36*6e9896c0SJohann Neuhauser		poll-interval = <20>;
37*6e9896c0SJohann Neuhauser
38*6e9896c0SJohann Neuhauser		/*
39*6e9896c0SJohann Neuhauser		 * The EXTi IRQ line 3 is shared with ethernet,
40*6e9896c0SJohann Neuhauser		 * so mark this as polled GPIO key.
41*6e9896c0SJohann Neuhauser		 */
42*6e9896c0SJohann Neuhauser		button-0 {
43*6e9896c0SJohann Neuhauser			label = "TA1-GPIO-A";
44*6e9896c0SJohann Neuhauser			gpios = <&gpiof 3 GPIO_ACTIVE_LOW>;
45*6e9896c0SJohann Neuhauser		};
46*6e9896c0SJohann Neuhauser
47*6e9896c0SJohann Neuhauser		/*
48*6e9896c0SJohann Neuhauser		 * The EXTi IRQ line 6 is shared with touchscreen,
49*6e9896c0SJohann Neuhauser		 * so mark this as polled GPIO key.
50*6e9896c0SJohann Neuhauser		 */
51*6e9896c0SJohann Neuhauser		button-1 {
52*6e9896c0SJohann Neuhauser			label = "TA2-GPIO-B";
53*6e9896c0SJohann Neuhauser			gpios = <&gpiod 6 GPIO_ACTIVE_LOW>;
54*6e9896c0SJohann Neuhauser		};
55*6e9896c0SJohann Neuhauser
56*6e9896c0SJohann Neuhauser		/*
57*6e9896c0SJohann Neuhauser		 * The EXTi IRQ line 0 is shared with PMIC,
58*6e9896c0SJohann Neuhauser		 * so mark this as polled GPIO key.
59*6e9896c0SJohann Neuhauser		 */
60*6e9896c0SJohann Neuhauser		button-2 {
61*6e9896c0SJohann Neuhauser			label = "TA3-GPIO-C";
62*6e9896c0SJohann Neuhauser			gpios = <&gpiog 0 GPIO_ACTIVE_LOW>;
63*6e9896c0SJohann Neuhauser		};
64*6e9896c0SJohann Neuhauser	};
65*6e9896c0SJohann Neuhauser
66*6e9896c0SJohann Neuhauser	gpio-keys {
67*6e9896c0SJohann Neuhauser		compatible = "gpio-keys";
68*6e9896c0SJohann Neuhauser
69*6e9896c0SJohann Neuhauser		button-3 {
70*6e9896c0SJohann Neuhauser			label = "TA4-GPIO-D";
71*6e9896c0SJohann Neuhauser			gpios = <&gpiod 12 GPIO_ACTIVE_LOW>;
72*6e9896c0SJohann Neuhauser			wakeup-source;
73*6e9896c0SJohann Neuhauser		};
74*6e9896c0SJohann Neuhauser	};
75*6e9896c0SJohann Neuhauser
76*6e9896c0SJohann Neuhauser	led {
77*6e9896c0SJohann Neuhauser		compatible = "gpio-leds";
78*6e9896c0SJohann Neuhauser
79*6e9896c0SJohann Neuhauser		led-0 {
80*6e9896c0SJohann Neuhauser			label = "green:led5";
81*6e9896c0SJohann Neuhauser			gpios = <&gpioc 6 GPIO_ACTIVE_HIGH>;
82*6e9896c0SJohann Neuhauser			default-state = "off";
83*6e9896c0SJohann Neuhauser			status = "disabled";
84*6e9896c0SJohann Neuhauser		};
85*6e9896c0SJohann Neuhauser
86*6e9896c0SJohann Neuhauser		led-1 {
87*6e9896c0SJohann Neuhauser			label = "green:led6";
88*6e9896c0SJohann Neuhauser			gpios = <&gpiod 11 GPIO_ACTIVE_HIGH>;
89*6e9896c0SJohann Neuhauser			default-state = "off";
90*6e9896c0SJohann Neuhauser		};
91*6e9896c0SJohann Neuhauser
92*6e9896c0SJohann Neuhauser		led-2 {
93*6e9896c0SJohann Neuhauser			label = "green:led7";
94*6e9896c0SJohann Neuhauser			gpios = <&gpioi 2 GPIO_ACTIVE_HIGH>;
95*6e9896c0SJohann Neuhauser			default-state = "off";
96*6e9896c0SJohann Neuhauser		};
97*6e9896c0SJohann Neuhauser
98*6e9896c0SJohann Neuhauser		led-3 {
99*6e9896c0SJohann Neuhauser			label = "green:led8";
100*6e9896c0SJohann Neuhauser			gpios = <&gpioi 3 GPIO_ACTIVE_HIGH>;
101*6e9896c0SJohann Neuhauser			default-state = "off";
102*6e9896c0SJohann Neuhauser		};
103*6e9896c0SJohann Neuhauser	};
104*6e9896c0SJohann Neuhauser
105*6e9896c0SJohann Neuhauser	panel {
106*6e9896c0SJohann Neuhauser		compatible = "edt,etm0700g0edh6";
107*6e9896c0SJohann Neuhauser		backlight = <&display_bl>;
108*6e9896c0SJohann Neuhauser		power-supply = <&reg_panel_bl>;
109*6e9896c0SJohann Neuhauser
110*6e9896c0SJohann Neuhauser		port {
111*6e9896c0SJohann Neuhauser			lcd_panel_in: endpoint {
112*6e9896c0SJohann Neuhauser				remote-endpoint = <&lcd_display_out>;
113*6e9896c0SJohann Neuhauser			};
114*6e9896c0SJohann Neuhauser		};
115*6e9896c0SJohann Neuhauser	};
116*6e9896c0SJohann Neuhauser
117*6e9896c0SJohann Neuhauser	reg_panel_bl: regulator-panel-bl {
118*6e9896c0SJohann Neuhauser		compatible = "regulator-fixed";
119*6e9896c0SJohann Neuhauser		regulator-name = "panel_backlight";
120*6e9896c0SJohann Neuhauser		regulator-min-microvolt = <3300000>;
121*6e9896c0SJohann Neuhauser		regulator-max-microvolt = <3300000>;
122*6e9896c0SJohann Neuhauser		vin-supply = <&reg_panel_supply>;
123*6e9896c0SJohann Neuhauser	};
124*6e9896c0SJohann Neuhauser
125*6e9896c0SJohann Neuhauser	reg_panel_supply: regulator-panel-supply {
126*6e9896c0SJohann Neuhauser		compatible = "regulator-fixed";
127*6e9896c0SJohann Neuhauser		regulator-name = "panel_supply";
128*6e9896c0SJohann Neuhauser		regulator-min-microvolt = <24000000>;
129*6e9896c0SJohann Neuhauser		regulator-max-microvolt = <24000000>;
130*6e9896c0SJohann Neuhauser	};
131*6e9896c0SJohann Neuhauser
132*6e9896c0SJohann Neuhauser	sound {
133*6e9896c0SJohann Neuhauser		compatible = "audio-graph-card";
134*6e9896c0SJohann Neuhauser		routing =
135*6e9896c0SJohann Neuhauser			"MIC_IN", "Capture",
136*6e9896c0SJohann Neuhauser			"Capture", "Mic Bias",
137*6e9896c0SJohann Neuhauser			"Playback", "HP_OUT";
138*6e9896c0SJohann Neuhauser		dais = <&sai2a_port &sai2b_port>;
139*6e9896c0SJohann Neuhauser		status = "okay";
140*6e9896c0SJohann Neuhauser	};
141*6e9896c0SJohann Neuhauser};
142*6e9896c0SJohann Neuhauser
143*6e9896c0SJohann Neuhauser&cec {
144*6e9896c0SJohann Neuhauser	pinctrl-names = "default";
145*6e9896c0SJohann Neuhauser	pinctrl-0 = <&cec_pins_a>;
146*6e9896c0SJohann Neuhauser	status = "okay";
147*6e9896c0SJohann Neuhauser};
148*6e9896c0SJohann Neuhauser
149*6e9896c0SJohann Neuhauser&i2c2 {	/* Header X22 */
150*6e9896c0SJohann Neuhauser	pinctrl-names = "default";
151*6e9896c0SJohann Neuhauser	pinctrl-0 = <&i2c2_pins_a>;
152*6e9896c0SJohann Neuhauser	i2c-scl-rising-time-ns = <185>;
153*6e9896c0SJohann Neuhauser	i2c-scl-falling-time-ns = <20>;
154*6e9896c0SJohann Neuhauser	status = "okay";
155*6e9896c0SJohann Neuhauser	/* spare dmas for other usage */
156*6e9896c0SJohann Neuhauser	/delete-property/dmas;
157*6e9896c0SJohann Neuhauser	/delete-property/dma-names;
158*6e9896c0SJohann Neuhauser};
159*6e9896c0SJohann Neuhauser
160*6e9896c0SJohann Neuhauser&i2c5 {	/* Header X21 */
161*6e9896c0SJohann Neuhauser	pinctrl-names = "default";
162*6e9896c0SJohann Neuhauser	pinctrl-0 = <&i2c5_pins_a>;
163*6e9896c0SJohann Neuhauser	i2c-scl-rising-time-ns = <185>;
164*6e9896c0SJohann Neuhauser	i2c-scl-falling-time-ns = <20>;
165*6e9896c0SJohann Neuhauser	status = "okay";
166*6e9896c0SJohann Neuhauser	/* spare dmas for other usage */
167*6e9896c0SJohann Neuhauser	/delete-property/dmas;
168*6e9896c0SJohann Neuhauser	/delete-property/dma-names;
169*6e9896c0SJohann Neuhauser
170*6e9896c0SJohann Neuhauser	sgtl5000: codec@a {
171*6e9896c0SJohann Neuhauser		compatible = "fsl,sgtl5000";
172*6e9896c0SJohann Neuhauser		reg = <0x0a>;
173*6e9896c0SJohann Neuhauser		#sound-dai-cells = <0>;
174*6e9896c0SJohann Neuhauser		clocks = <&clk_ext_audio_codec>;
175*6e9896c0SJohann Neuhauser		VDDA-supply = <&v3v3>;
176*6e9896c0SJohann Neuhauser		VDDIO-supply = <&vdd>;
177*6e9896c0SJohann Neuhauser
178*6e9896c0SJohann Neuhauser		sgtl5000_port: port {
179*6e9896c0SJohann Neuhauser			#address-cells = <1>;
180*6e9896c0SJohann Neuhauser			#size-cells = <0>;
181*6e9896c0SJohann Neuhauser
182*6e9896c0SJohann Neuhauser			sgtl5000_tx_endpoint: endpoint@0 {
183*6e9896c0SJohann Neuhauser				reg = <0>;
184*6e9896c0SJohann Neuhauser				remote-endpoint = <&sai2a_endpoint>;
185*6e9896c0SJohann Neuhauser				frame-master = <&sgtl5000_tx_endpoint>;
186*6e9896c0SJohann Neuhauser				bitclock-master = <&sgtl5000_tx_endpoint>;
187*6e9896c0SJohann Neuhauser			};
188*6e9896c0SJohann Neuhauser
189*6e9896c0SJohann Neuhauser			sgtl5000_rx_endpoint: endpoint@1 {
190*6e9896c0SJohann Neuhauser				reg = <1>;
191*6e9896c0SJohann Neuhauser				remote-endpoint = <&sai2b_endpoint>;
192*6e9896c0SJohann Neuhauser				frame-master = <&sgtl5000_rx_endpoint>;
193*6e9896c0SJohann Neuhauser				bitclock-master = <&sgtl5000_rx_endpoint>;
194*6e9896c0SJohann Neuhauser			};
195*6e9896c0SJohann Neuhauser		};
196*6e9896c0SJohann Neuhauser
197*6e9896c0SJohann Neuhauser	};
198*6e9896c0SJohann Neuhauser
199*6e9896c0SJohann Neuhauser	touchscreen@38 {
200*6e9896c0SJohann Neuhauser		compatible = "edt,edt-ft5406";
201*6e9896c0SJohann Neuhauser		reg = <0x38>;
202*6e9896c0SJohann Neuhauser		interrupt-parent = <&gpioc>;
203*6e9896c0SJohann Neuhauser		interrupts = <6 IRQ_TYPE_EDGE_FALLING>; /* GPIO E */
204*6e9896c0SJohann Neuhauser	};
205*6e9896c0SJohann Neuhauser};
206*6e9896c0SJohann Neuhauser
207*6e9896c0SJohann Neuhauser&ltdc {
208*6e9896c0SJohann Neuhauser	pinctrl-names = "default", "sleep";
209*6e9896c0SJohann Neuhauser	pinctrl-0 = <&ltdc_pins_b>;
210*6e9896c0SJohann Neuhauser	pinctrl-1 = <&ltdc_sleep_pins_b>;
211*6e9896c0SJohann Neuhauser	status = "okay";
212*6e9896c0SJohann Neuhauser
213*6e9896c0SJohann Neuhauser	port {
214*6e9896c0SJohann Neuhauser		lcd_display_out: endpoint {
215*6e9896c0SJohann Neuhauser			remote-endpoint = <&lcd_panel_in>;
216*6e9896c0SJohann Neuhauser		};
217*6e9896c0SJohann Neuhauser	};
218*6e9896c0SJohann Neuhauser};
219*6e9896c0SJohann Neuhauser
220*6e9896c0SJohann Neuhauser&sai2 {
221*6e9896c0SJohann Neuhauser	clocks = <&rcc SAI2>, <&rcc PLL3_Q>, <&rcc PLL3_R>;
222*6e9896c0SJohann Neuhauser	clock-names = "pclk", "x8k", "x11k";
223*6e9896c0SJohann Neuhauser	pinctrl-names = "default", "sleep";
224*6e9896c0SJohann Neuhauser	pinctrl-0 = <&sai2a_pins_b &sai2b_pins_b>;
225*6e9896c0SJohann Neuhauser	pinctrl-1 = <&sai2a_sleep_pins_b &sai2b_sleep_pins_b>;
226*6e9896c0SJohann Neuhauser	status = "okay";
227*6e9896c0SJohann Neuhauser
228*6e9896c0SJohann Neuhauser	sai2a: audio-controller@4400b004 {
229*6e9896c0SJohann Neuhauser		#clock-cells = <0>;
230*6e9896c0SJohann Neuhauser		dma-names = "tx";
231*6e9896c0SJohann Neuhauser		clocks = <&rcc SAI2_K>;
232*6e9896c0SJohann Neuhauser		clock-names = "sai_ck";
233*6e9896c0SJohann Neuhauser		status = "okay";
234*6e9896c0SJohann Neuhauser
235*6e9896c0SJohann Neuhauser		sai2a_port: port {
236*6e9896c0SJohann Neuhauser			sai2a_endpoint: endpoint {
237*6e9896c0SJohann Neuhauser				remote-endpoint = <&sgtl5000_tx_endpoint>;
238*6e9896c0SJohann Neuhauser				format = "i2s";
239*6e9896c0SJohann Neuhauser				mclk-fs = <512>;
240*6e9896c0SJohann Neuhauser				dai-tdm-slot-num = <2>;
241*6e9896c0SJohann Neuhauser				dai-tdm-slot-width = <16>;
242*6e9896c0SJohann Neuhauser			};
243*6e9896c0SJohann Neuhauser		};
244*6e9896c0SJohann Neuhauser	};
245*6e9896c0SJohann Neuhauser
246*6e9896c0SJohann Neuhauser	sai2b: audio-controller@4400b024 {
247*6e9896c0SJohann Neuhauser		dma-names = "rx";
248*6e9896c0SJohann Neuhauser		st,sync = <&sai2a 2>;
249*6e9896c0SJohann Neuhauser		clocks = <&rcc SAI2_K>, <&sai2a>;
250*6e9896c0SJohann Neuhauser		clock-names = "sai_ck", "MCLK";
251*6e9896c0SJohann Neuhauser		status = "okay";
252*6e9896c0SJohann Neuhauser
253*6e9896c0SJohann Neuhauser		sai2b_port: port {
254*6e9896c0SJohann Neuhauser			sai2b_endpoint: endpoint {
255*6e9896c0SJohann Neuhauser				remote-endpoint = <&sgtl5000_rx_endpoint>;
256*6e9896c0SJohann Neuhauser				format = "i2s";
257*6e9896c0SJohann Neuhauser				mclk-fs = <512>;
258*6e9896c0SJohann Neuhauser				dai-tdm-slot-num = <2>;
259*6e9896c0SJohann Neuhauser				dai-tdm-slot-width = <16>;
260*6e9896c0SJohann Neuhauser			};
261*6e9896c0SJohann Neuhauser		};
262*6e9896c0SJohann Neuhauser	};
263*6e9896c0SJohann Neuhauser};
264*6e9896c0SJohann Neuhauser
265*6e9896c0SJohann Neuhauser&timers2 {
266*6e9896c0SJohann Neuhauser	/* spare dmas for other usage (un-delete to enable pwm capture) */
267*6e9896c0SJohann Neuhauser	/delete-property/dmas;
268*6e9896c0SJohann Neuhauser	/delete-property/dma-names;
269*6e9896c0SJohann Neuhauser	status = "okay";
270*6e9896c0SJohann Neuhauser	pwm2: pwm {
271*6e9896c0SJohann Neuhauser		pinctrl-0 = <&pwm2_pins_a>;
272*6e9896c0SJohann Neuhauser		pinctrl-names = "default";
273*6e9896c0SJohann Neuhauser		status = "okay";
274*6e9896c0SJohann Neuhauser	};
275*6e9896c0SJohann Neuhauser	timer@1 {
276*6e9896c0SJohann Neuhauser		status = "okay";
277*6e9896c0SJohann Neuhauser	};
278*6e9896c0SJohann Neuhauser};
279*6e9896c0SJohann Neuhauser
280*6e9896c0SJohann Neuhauser&usart3 {
281*6e9896c0SJohann Neuhauser	pinctrl-names = "default";
282*6e9896c0SJohann Neuhauser	pinctrl-0 = <&usart3_pins_a>;
283*6e9896c0SJohann Neuhauser	/delete-property/dmas;
284*6e9896c0SJohann Neuhauser	/delete-property/dma-names;
285*6e9896c0SJohann Neuhauser	status = "okay";
286*6e9896c0SJohann Neuhauser};
287*6e9896c0SJohann Neuhauser
288*6e9896c0SJohann Neuhauser&uart8 {
289*6e9896c0SJohann Neuhauser	pinctrl-names = "default";
290*6e9896c0SJohann Neuhauser	pinctrl-0 = <&uart8_pins_a &uart8_rtscts_pins_a>;
291*6e9896c0SJohann Neuhauser	uart-has-rtscts;
292*6e9896c0SJohann Neuhauser	/delete-property/dmas;
293*6e9896c0SJohann Neuhauser	/delete-property/dma-names;
294*6e9896c0SJohann Neuhauser	status = "okay";
295*6e9896c0SJohann Neuhauser};
296*6e9896c0SJohann Neuhauser
297*6e9896c0SJohann Neuhauser&usbh_ehci {
298*6e9896c0SJohann Neuhauser	phys = <&usbphyc_port0>;
299*6e9896c0SJohann Neuhauser	status = "okay";
300*6e9896c0SJohann Neuhauser};
301*6e9896c0SJohann Neuhauser
302*6e9896c0SJohann Neuhauser&usbotg_hs {
303*6e9896c0SJohann Neuhauser	dr_mode = "otg";
304*6e9896c0SJohann Neuhauser	pinctrl-0 = <&usbotg_hs_pins_a>;
305*6e9896c0SJohann Neuhauser	pinctrl-names = "default";
306*6e9896c0SJohann Neuhauser	phy-names = "usb2-phy";
307*6e9896c0SJohann Neuhauser	phys = <&usbphyc_port1 0>;
308*6e9896c0SJohann Neuhauser	vbus-supply = <&vbus_otg>;
309*6e9896c0SJohann Neuhauser	status = "okay";
310*6e9896c0SJohann Neuhauser};
311*6e9896c0SJohann Neuhauser
312*6e9896c0SJohann Neuhauser&usbphyc {
313*6e9896c0SJohann Neuhauser	status = "okay";
314*6e9896c0SJohann Neuhauser};
315*6e9896c0SJohann Neuhauser
316*6e9896c0SJohann Neuhauser&usbphyc_port0 {
317*6e9896c0SJohann Neuhauser	phy-supply = <&vdd_usb>;
318*6e9896c0SJohann Neuhauser};
319*6e9896c0SJohann Neuhauser
320*6e9896c0SJohann Neuhauser&usbphyc_port1 {
321*6e9896c0SJohann Neuhauser	phy-supply = <&vdd_usb>;
322*6e9896c0SJohann Neuhauser};
323