xref: /linux/arch/arm/boot/dts/nxp/ls/ls1021a-tqmls1021a-mbls1021a.dts (revision ec71f661a572a770d7c861cd52a50cbbb0e1a8d1)
1// SPDX-License-Identifier: (GPL-2.0-or-later OR MIT)
2/*
3 * Copyright 2013-2014 Freescale Semiconductor, Inc.
4 * Copyright 2018-2023 TQ-Systems GmbH <linux@ew.tq-group.com>,
5 * D-82229 Seefeld, Germany.
6 * Author: Alexander Stein
7 */
8
9/dts-v1/;
10
11#include <dt-bindings/gpio/gpio.h>
12#include <dt-bindings/input/linux-event-codes.h>
13#include <dt-bindings/leds/common.h>
14#include <dt-bindings/leds/leds-pca9532.h>
15#include <dt-bindings/net/ti-dp83867.h>
16
17#include "ls1021a-tqmls1021a.dtsi"
18
19/ {
20	model = "TQMLS102xA SOM on MBLS102xA";
21	compatible = "tq,ls1021a-tqmls1021a-mbls102xa", "tq,ls1021a-tqmls1021a", "fsl,ls1021a";
22
23	audio_mclk: audio-clock {
24		compatible = "fixed-clock";
25		#clock-cells = <0>;
26		clock-frequency = <25000000>;
27	};
28
29	backlight_dcu: backlight {
30		compatible = "gpio-backlight";
31		gpios = <&pca9530 0 GPIO_ACTIVE_LOW>;
32		status = "disabled";
33	};
34
35	gpio-keys {
36		compatible = "gpio-keys";
37		autorepeat;
38
39		switch-1 {
40			label = "S6";
41			linux,code = <BTN_0>;
42			gpios = <&pca9554_0 0 GPIO_ACTIVE_LOW>;
43		};
44
45		btn2: switch-2 {
46			label = "S7";
47			linux,code = <BTN_1>;
48			gpios = <&pca9554_0 1 GPIO_ACTIVE_LOW>;
49		};
50
51		switch-3 {
52			label = "S8";
53			linux,code = <BTN_2>;
54			gpios = <&pca9554_0 2 GPIO_ACTIVE_LOW>;
55		};
56	};
57
58	gpio_leds: gpio-leds {
59		compatible = "gpio-leds";
60
61		led-0 {
62			color = <LED_COLOR_ID_GREEN>;
63			function = LED_FUNCTION_STATUS;
64			function-enumerator = <0>;
65			gpios = <&pca9554_2 4 GPIO_ACTIVE_LOW>;
66			linux,default-trigger = "default-on";
67		};
68
69		led-1 {
70			color = <LED_COLOR_ID_GREEN>;
71			function = LED_FUNCTION_STATUS;
72			function-enumerator = <1>;
73			gpios = <&pca9554_2 5 GPIO_ACTIVE_LOW>;
74			linux,default-trigger = "default-on";
75		};
76
77		led-2 {
78			color = <LED_COLOR_ID_GREEN>;
79			function = LED_FUNCTION_STATUS;
80			function-enumerator = <2>;
81			gpios = <&pca9554_2 6 GPIO_ACTIVE_LOW>;
82			linux,default-trigger = "default-on";
83		};
84
85		led-3 {
86			color = <LED_COLOR_ID_GREEN>;
87			function = LED_FUNCTION_HEARTBEAT;
88			function-enumerator = <0>;
89			gpios = <&pca9554_2 7 GPIO_ACTIVE_LOW>;
90			linux,default-trigger = "heartbeat";
91		};
92	};
93
94	lvds_encoder: lvds-encoder {
95		compatible = "ti,sn75lvds83", "lvds-encoder";
96		power-supply = <&reg_3p3v>;
97		status = "disabled";
98
99		ports {
100			#address-cells = <1>;
101			#size-cells = <0>;
102
103			port@0 {
104				reg = <0>;
105
106				lvds_encoder_in: endpoint {};
107			};
108
109			port@1 {
110				reg = <1>;
111
112				lvds_encoder_out: endpoint {};
113			};
114		};
115	};
116
117	reg_1p2v: regulator-1p2v {
118		compatible = "regulator-fixed";
119		regulator-name = "1P2V";
120		regulator-min-microvolt = <1200000>;
121		regulator-max-microvolt = <1200000>;
122		regulator-always-on;
123		vin-supply = <&reg_3p3v>;
124	};
125
126	reg_3p3v: regulator-3p3v {
127		compatible = "regulator-fixed";
128		regulator-name = "3P3V";
129		regulator-min-microvolt = <3300000>;
130		regulator-max-microvolt = <3300000>;
131		regulator-always-on;
132	};
133
134	hdmi_out: hdmi {
135		compatible = "hdmi-connector";
136		type = "a";
137		ddc-i2c-bus = <&i2c0>;
138		status = "disabled";
139
140		port {
141			hdmi_in: endpoint {
142				remote-endpoint = <&sii9022a_out>;
143			};
144		};
145	};
146
147	display: panel {
148		backlight = <&backlight_dcu>;
149		enable-gpios = <&pca9554_1 3 GPIO_ACTIVE_HIGH>;
150		power-supply = <&reg_3p3v>;
151		status = "disabled";
152
153		port {
154			panel_in: endpoint {};
155		};
156	};
157
158	sound {
159		compatible = "fsl,imx-audio-tlv320aic32x4";
160		model = "tqm-tlv320aic32";
161		ssi-controller = <&sai1>;
162		audio-codec = <&tlv320aic32x4>;
163	};
164
165};
166
167&can0 {
168	xceiver-supply = <&reg_3p3v>;
169	status = "okay";
170};
171
172&can1 {
173	xceiver-supply = <&reg_3p3v>;
174	status = "okay";
175};
176
177&dspi0 {
178	status = "okay";
179};
180
181&enet0 {
182	phy-handle = <&rgmii_phy0c>;
183	phy-mode = "rgmii-id";
184	mac-address = [ 00 00 00 00 00 00 ];
185	status = "okay";
186};
187
188&enet1 {
189	tbi-handle = <&tbi1>;
190	phy-handle = <&sgmii_phy03>;
191	phy-mode = "sgmii";
192	mac-address = [ 00 00 00 00 00 00 ];
193	status = "okay";
194};
195
196&enet2 {
197	phy-handle = <&rgmii_phy04>;
198	phy-mode = "rgmii-id";
199	mac-address = [ 00 00 00 00 00 00 ];
200	status = "okay";
201};
202
203&i2c0 {
204	status = "okay";
205
206	tlv320aic32x4: audio-codec@18 {
207		compatible = "ti,tlv320aic32x4";
208		reg = <0x18>;
209		clocks = <&audio_mclk>;
210		clock-names = "mclk";
211		ldoin-supply = <&reg_3p3v>;
212		iov-supply = <&reg_3p3v>;
213	};
214
215	pca9554_0: gpio-expander@20 {
216		compatible = "nxp,pca9554";
217		reg = <0x20>;
218		gpio-controller;
219		#gpio-cells = <2>;
220		interrupt-parent = <&gpio0>;
221		interrupts = <24 IRQ_TYPE_EDGE_FALLING>;
222		interrupt-controller;
223		#interrupt-cells = <2>;
224		vcc-supply = <&reg_3p3v>;
225		gpio-line-names = "BUTTON0", "BUTTON1",
226				  "BUTTON2", "EMMC_SEL",
227				  "DIP2", "DIP3",
228				  "EXT_TOUCH_INT", "GPIO_1";
229	};
230
231	pca9554_1: gpio-expander@21 {
232		compatible = "nxp,pca9554";
233		reg = <0x21>;
234		gpio-controller;
235		#gpio-cells = <2>;
236		interrupt-parent = <&gpio0>;
237		interrupts = <25 IRQ_TYPE_EDGE_FALLING>;
238		interrupt-controller;
239		#interrupt-cells = <2>;
240		vcc-supply = <&reg_3p3v>;
241		gpio-line-names = "PCIE_PWR_EN", "MPCIE_DISABLE#",
242				  "MPCIE_WAKE#", "LCD_BLT_EN",
243				  "LCD_PWR_EN", "EC1_PHY_PWDN",
244				  "EC3_PHY_PWDN", "SGMII_PHY_PWDN";
245	};
246
247	pca9554_2: gpio-expander@22 {
248		compatible = "nxp,pca9554";
249		reg = <0x22>;
250		gpio-controller;
251		#gpio-cells = <2>;
252		interrupt-parent = <&extirq>;
253		interrupts = <2 IRQ_TYPE_EDGE_FALLING>;
254		interrupt-controller;
255		#interrupt-cells = <2>;
256		vcc-supply = <&reg_3p3v>;
257		gpio-line-names = "MUX_SEL0", "MUX_SEL1",
258				  "MUX_SEL2", "MUX_SEL3",
259				  "V95", "V96", "V97", "V98";
260	};
261
262	sii9022a: hdmi-transmitter@3b {
263		compatible = "sil,sii9022";
264		reg = <0x3b>;
265		iovcc-supply = <&reg_3p3v>;
266		cvcc12-supply = <&reg_1p2v>;
267		interrupts = <GIC_SPI 167 IRQ_TYPE_EDGE_RISING>;
268		#sound-dai-cells = <0>;
269		sil,i2s-data-lanes = <0>;
270		status = "disabled";
271
272		ports {
273			#address-cells = <1>;
274			#size-cells = <0>;
275
276			port@0 {
277				reg = <0>;
278
279				sii9022a_in: endpoint {};
280			};
281
282			port@1 {
283				reg = <1>;
284
285				sii9022a_out: endpoint {
286					remote-endpoint = <&hdmi_in>;
287				};
288			};
289		};
290	};
291
292	stmpe811: port-expander@41 {
293		compatible = "st,stmpe811";
294		reg = <0x41>;
295		interrupt-parent = <&gpio0>;
296		interrupts = <23 IRQ_TYPE_EDGE_FALLING>;
297		vcc-supply = <&reg_3p3v>;
298		vio-supply = <&reg_3p3v>;
299
300		gpio {
301			compatible = "st,stmpe-gpio";
302			gpio-controller;
303			#gpio-cells = <2>;
304			interrupt-controller;
305			#interrupt-cells = <2>;
306			/* GPIO 5-7 used for touch */
307			st,norequest-mask = <0xf0>;
308			gpio-line-names = "GPIO_ADC_I2C1_1",
309					  "GPIO_ADC_I2C1_2",
310					  "GPIO_ADC_I2C1_3",
311					  "GPIO_ADC_I2C1_4";
312		};
313
314		touchscreen {
315			compatible = "st,stmpe-ts";
316			status = "disabled";
317		};
318	};
319
320	pca9530: leds@60 {
321		compatible = "nxp,pca9530";
322		reg = <0x60>;
323		gpio-controller;
324		#gpio-cells = <2>;
325		gpio-line-names = "PWM_0", "PWM_1";
326
327		led-0 {
328			type = <PCA9532_TYPE_GPIO>;
329		};
330
331		led-1 {
332			type = <PCA9532_TYPE_GPIO>;
333		};
334	};
335
336};
337
338&i2c1 {
339	status = "okay";
340};
341
342&lpuart0 {
343	linux,rs485-enabled-at-boot-time;
344	status = "okay";
345};
346
347&mdio0 {
348	sgmii_phy03: ethernet-phy@3 {
349		compatible = "ethernet-phy-ieee802.3-c22";
350		reg = <0x03>;
351		ti,fifo-depth = <DP83867_PHYCR_FIFO_DEPTH_4_B_NIB>;
352		ti,clk-output-sel = <DP83867_CLK_O_SEL_OFF>;
353		ti,dp83867-rxctrl-strap-quirk;
354	};
355
356	rgmii_phy04: ethernet-phy@4 {
357		compatible = "ethernet-phy-ieee802.3-c22";
358		reg = <0x04>;
359		ti,rx-internal-delay = <DP83867_RGMIIDCTL_2_50_NS>;
360		ti,tx-internal-delay = <DP83867_RGMIIDCTL_2_00_NS>;
361		ti,fifo-depth = <DP83867_PHYCR_FIFO_DEPTH_4_B_NIB>;
362		ti,clk-output-sel = <DP83867_CLK_O_SEL_OFF>;
363	};
364
365	rgmii_phy0c: ethernet-phy@c {
366		compatible = "ethernet-phy-ieee802.3-c22";
367		reg = <0x0c>;
368		ti,rx-internal-delay = <DP83867_RGMIIDCTL_2_50_NS>;
369		ti,tx-internal-delay = <DP83867_RGMIIDCTL_2_00_NS>;
370		ti,fifo-depth = <DP83867_PHYCR_FIFO_DEPTH_4_B_NIB>;
371		ti,clk-output-sel = <DP83867_CLK_O_SEL_OFF>;
372	};
373};
374
375&pwm6 {
376	status = "okay";
377};
378
379&pwm7 {
380	status = "okay";
381};
382
383&sai1 {
384	status = "okay";
385};
386
387&sata {
388	status = "okay";
389};
390
391&uart0 {
392	status = "okay";
393};
394
395&uart1 {
396	status = "okay";
397};
398
399&usb3 {
400	/*
401	 * Although DR connector, VBUS is always driven, so
402	 * restrict to host mode.
403	 */
404	dr_mode = "host";
405	status = "okay";
406};
407