File Index
Files and directories
Sign in
FILE

imx93-var-som.dtsi

File preview with syntax highlighting.

linux-6.19.14/arch/arm64/boot/dts/freescale/imx93-var-som.dtsi DEVICETREE
  1// SPDX-License-Identifier: (GPL-2.0+ OR MIT)
  2/*
  3 * Copyright 2022 NXP
  4 * Copyright 2023 Variscite Ltd.
  5 */
  6
  7/dts-v1/;
  8
  9#include "imx93.dtsi"
 10
 11/{
 12	model = "Variscite VAR-SOM-MX93 module";
 13	compatible = "variscite,var-som-mx93", "fsl,imx93";
 14
 15	sound {
 16		compatible = "simple-audio-card";
 17		simple-audio-card,bitclock-master = <&codec_dai>;
 18		simple-audio-card,format = "i2s";
 19		simple-audio-card,frame-master = <&codec_dai>;
 20		simple-audio-card,name = "wm8904-audio";
 21		simple-audio-card,routing =
 22			"Headphone Jack", "HPOUTL",
 23			"Headphone Jack", "HPOUTR",
 24			"IN2L", "Line In Jack",
 25			"IN2R", "Line In Jack",
 26			"IN1L", "Microphone Jack",
 27			"IN1R", "Microphone Jack";
 28		simple-audio-card,widgets =
 29			"Microphone", "Microphone Jack",
 30			"Headphone", "Headphone Jack",
 31			"Line", "Line In Jack";
 32		simple-audio-card,mclk-fs = <256>;
 33
 34		codec_dai: simple-audio-card,codec {
 35			sound-dai = <&wm8904>;
 36		};
 37
 38		simple-audio-card,cpu {
 39			sound-dai = <&sai1>;
 40		};
 41	};
 42
 43	usdhc3_pwrseq: mmc-pwrseq {
 44		compatible = "mmc-pwrseq-simple";
 45		post-power-on-delay-ms = <100>;
 46		power-off-delay-us = <10000>;
 47		reset-gpios = <&gpio4 14 GPIO_ACTIVE_LOW>,	/* WIFI_RESET */
 48			      <&gpio3 7 GPIO_ACTIVE_LOW>;	/* WIFI_PWR_EN */
 49	};
 50};
 51
 52&eqos {
 53	pinctrl-names = "default";
 54	pinctrl-0 = <&pinctrl_eqos>;
 55	/*
 56	 * The required RGMII TX and RX 2ns delays are implemented directly
 57	 * in hardware via passive delay elements on the SOM PCB.
 58	 * No delay configuration is needed in software via PHY driver.
 59	 */
 60	phy-mode = "rgmii";
 61	phy-handle = <&ethphy0>;
 62	snps,clk-csr = <5>;
 63	status = "okay";
 64
 65	mdio {
 66		compatible = "snps,dwmac-mdio";
 67		#address-cells = <1>;
 68		#size-cells = <0>;
 69		clock-frequency = <1000000>;
 70
 71		ethphy0: ethernet-phy@0 {
 72			compatible = "ethernet-phy-ieee802.3-c22";
 73			reg = <0>;
 74			eee-broken-1000t;
 75			reset-gpios = <&gpio1 7 GPIO_ACTIVE_LOW>;
 76			reset-assert-us = <10000>;
 77			reset-deassert-us = <100000>;
 78
 79			leds {
 80				#address-cells = <1>;
 81				#size-cells = <0>;
 82
 83				led@0 {
 84					reg = <0>;
 85					color = <LED_COLOR_ID_YELLOW>;
 86					function = LED_FUNCTION_LAN;
 87					linux,default-trigger = "netdev";
 88				};
 89
 90				led@1 {
 91					reg = <1>;
 92					color = <LED_COLOR_ID_GREEN>;
 93					function = LED_FUNCTION_LAN;
 94					linux,default-trigger = "netdev";
 95				};
 96			};
 97		};
 98	};
 99};
100
101&lpi2c3 {
102	clock-frequency = <400000>;
103	pinctrl-names = "default", "sleep", "gpio";
104	pinctrl-0 = <&pinctrl_lpi2c3>;
105	pinctrl-1 = <&pinctrl_lpi2c3_gpio>;
106	pinctrl-2 = <&pinctrl_lpi2c3_gpio>;
107	scl-gpios = <&gpio2 29 GPIO_ACTIVE_HIGH>;
108	sda-gpios = <&gpio2 28 GPIO_ACTIVE_HIGH>;
109	status = "okay";
110
111	pmic@25 {
112		compatible = "nxp,pca9451a";
113		reg = <0x25>;
114
115		regulators {
116			buck1: BUCK1 {
117				regulator-name = "BUCK1";
118				regulator-min-microvolt = <650000>;
119				regulator-max-microvolt = <2237500>;
120				regulator-boot-on;
121				regulator-always-on;
122				regulator-ramp-delay = <3125>;
123			};
124
125			buck2: BUCK2 {
126				regulator-name = "BUCK2";
127				regulator-min-microvolt = <600000>;
128				regulator-max-microvolt = <2187500>;
129				regulator-boot-on;
130				regulator-always-on;
131				regulator-ramp-delay = <3125>;
132			};
133
134			buck4: BUCK4{
135				regulator-name = "BUCK4";
136				regulator-min-microvolt = <600000>;
137				regulator-max-microvolt = <3400000>;
138				regulator-boot-on;
139				regulator-always-on;
140			};
141
142			buck5: BUCK5{
143				regulator-name = "BUCK5";
144				regulator-min-microvolt = <600000>;
145				regulator-max-microvolt = <3400000>;
146				regulator-boot-on;
147				regulator-always-on;
148			};
149
150			buck6: BUCK6 {
151				regulator-name = "BUCK6";
152				regulator-min-microvolt = <600000>;
153				regulator-max-microvolt = <3400000>;
154				regulator-boot-on;
155				regulator-always-on;
156			};
157
158			ldo1: LDO1 {
159				regulator-name = "LDO1";
160				regulator-min-microvolt = <1600000>;
161				regulator-max-microvolt = <3300000>;
162				regulator-boot-on;
163				regulator-always-on;
164			};
165
166			ldo4: LDO4 {
167				regulator-name = "LDO4";
168				regulator-min-microvolt = <800000>;
169				regulator-max-microvolt = <3300000>;
170				regulator-boot-on;
171				regulator-always-on;
172			};
173
174			ldo5: LDO5 {
175				regulator-name = "LDO5";
176				regulator-min-microvolt = <1800000>;
177				regulator-max-microvolt = <3300000>;
178				regulator-boot-on;
179				regulator-always-on;
180			};
181		};
182	};
183
184	wm8904: audio-codec@1a {
185		compatible = "wlf,wm8904";
186		reg = <0x1a>;
187		#sound-dai-cells = <0>;
188		clocks = <&clk IMX93_CLK_SAI1_GATE>;
189		clock-names = "mclk";
190		AVDD-supply = <&buck5>;
191		CPVDD-supply = <&buck5>;
192		DBVDD-supply = <&buck4>;
193		DCVDD-supply = <&buck5>;
194		MICVDD-supply = <&buck5>;
195		wlf,drc-cfg-names = "default", "peaklimiter", "tradition",
196				    "soft", "music";
197		/*
198		 * Config registers per name, respectively:
199		 * KNEE_IP = 0,   KNEE_OP = 0,     HI_COMP = 1,   LO_COMP = 1
200		 * KNEE_IP = -24, KNEE_OP = -6,    HI_COMP = 1/4, LO_COMP = 1
201		 * KNEE_IP = -42, KNEE_OP = -3,    HI_COMP = 0,   LO_COMP = 1
202		 * KNEE_IP = -45, KNEE_OP = -9,    HI_COMP = 1/8, LO_COMP = 1
203		 * KNEE_IP = -30, KNEE_OP = -10.5, HI_COMP = 1/4, LO_COMP = 1
204		 */
205		wlf,drc-cfg-regs = /bits/ 16 <0x01af 0x3248 0x0000 0x0000>,
206				   /bits/ 16 <0x04af 0x324b 0x0010 0x0408>,
207				   /bits/ 16 <0x04af 0x324b 0x0028 0x0704>,
208				   /bits/ 16 <0x04af 0x324b 0x0018 0x078c>,
209				   /bits/ 16 <0x04af 0x324b 0x0010 0x050e>;
210		/* GPIO1 = DMIC_CLK, don't touch others */
211		wlf,gpio-cfg = <0x0018>, <0xffff>, <0xffff>, <0xffff>;
212	};
213};
214
215&lpspi8 {
216	pinctrl-names = "default";
217	pinctrl-0 = <&pinctrl_lpspi8>;
218	cs-gpios = <&gpio2 12 GPIO_ACTIVE_LOW>;
219	status = "okay";
220
221	/* Resistive touch controller */
222	ads7846: touchscreen@0 {
223		compatible = "ti,ads7846";
224		reg = <0>;
225		pinctrl-names = "default";
226		pinctrl-0 = <&pinctrl_restouch>;
227		interrupt-parent = <&gpio4>;
228		interrupts = <29 IRQ_TYPE_EDGE_FALLING>;
229		spi-max-frequency = <1000000>;
230		pendown-gpio = <&gpio4 29 0>;
231		vcc-supply = <&buck5>;
232		ti,x-min = /bits/ 16 <125>;
233		ti,x-max = /bits/ 16 <4008>;
234		ti,y-min = /bits/ 16 <282>;
235		ti,y-max = /bits/ 16 <3864>;
236		ti,x-plate-ohms = /bits/ 16 <180>;
237		ti,pressure-max = /bits/ 16 <255>;
238		ti,debounce-max = /bits/ 16 <10>;
239		ti,debounce-tol = /bits/ 16 <3>;
240		ti,debounce-rep = /bits/ 16 <1>;
241		ti,settle-delay-usec = /bits/ 16 <150>;
242		ti,keep-vref-on;
243		wakeup-source;
244	};
245};
246
247/* BT module */
248&lpuart5 {
249	pinctrl-names = "default";
250	pinctrl-0 = <&pinctrl_lpuart5>, <&pinctrl_bluetooth>;
251	uart-has-rtscts;
252	status = "okay";
253
254	bluetooth {
255		compatible = "nxp,88w8987-bt";
256	};
257};
258
259&sai1 {
260	pinctrl-names = "default", "sleep";
261	pinctrl-0 = <&pinctrl_sai1>;
262	pinctrl-1 = <&pinctrl_sai1_sleep>;
263	assigned-clocks = <&clk IMX93_CLK_SAI1>;
264	assigned-clock-parents = <&clk IMX93_CLK_AUDIO_PLL>;
265	assigned-clock-rates = <12288000>;
266	fsl,sai-mclk-direction-output;
267	status = "okay";
268};
269
270/* eMMC */
271&usdhc1 {
272	pinctrl-names = "default", "state_100mhz", "state_200mhz";
273	pinctrl-0 = <&pinctrl_usdhc1>;
274	pinctrl-1 = <&pinctrl_usdhc1>;
275	pinctrl-2 = <&pinctrl_usdhc1>;
276	bus-width = <8>;
277	non-removable;
278	status = "okay";
279};
280
281/* WiFi */
282&usdhc3 {
283	pinctrl-names = "default", "state_100mhz", "state_200mhz", "sleep";
284	pinctrl-0 = <&pinctrl_usdhc3>, <&pinctrl_usdhc3_wlan>;
285	pinctrl-1 = <&pinctrl_usdhc3_100mhz>, <&pinctrl_usdhc3_wlan>;
286	pinctrl-2 = <&pinctrl_usdhc3_200mhz>, <&pinctrl_usdhc3_wlan>;
287	pinctrl-3 = <&pinctrl_usdhc3_sleep>, <&pinctrl_usdhc3_wlan>;
288	bus-width = <4>;
289	mmc-pwrseq = <&usdhc3_pwrseq>;
290	non-removable;
291	wakeup-source;
292	status = "okay";
293};
294
295&iomuxc {
296	pinctrl_bluetooth: bluetoothgrp {
297		fsl,pins = <
298			MX93_PAD_ENET2_MDIO__GPIO4_IO15		0x51e
299		>;
300	};
301
302	pinctrl_eqos: eqosgrp {
303		fsl,pins = <
304			MX93_PAD_ENET1_MDC__ENET_QOS_MDC			0x57e
305			MX93_PAD_ENET1_MDIO__ENET_QOS_MDIO			0x57e
306			MX93_PAD_ENET1_RD0__ENET_QOS_RGMII_RD0			0x57e
307			MX93_PAD_ENET1_RD1__ENET_QOS_RGMII_RD1			0x57e
308			MX93_PAD_ENET1_RD2__ENET_QOS_RGMII_RD2			0x57e
309			MX93_PAD_ENET1_RD3__ENET_QOS_RGMII_RD3			0x57e
310			MX93_PAD_ENET1_RXC__CCM_ENET_QOS_CLOCK_GENERATE_RX_CLK	0x58e
311			MX93_PAD_ENET1_RX_CTL__ENET_QOS_RGMII_RX_CTL		0x57e
312			MX93_PAD_ENET1_TD0__ENET_QOS_RGMII_TD0			0x57e
313			MX93_PAD_ENET1_TD1__ENET_QOS_RGMII_TD1			0x57e
314			MX93_PAD_ENET1_TD2__ENET_QOS_RGMII_TD2			0x57e
315			MX93_PAD_ENET1_TD3__ENET_QOS_RGMII_TD3			0x57e
316			MX93_PAD_ENET1_TXC__CCM_ENET_QOS_CLOCK_GENERATE_TX_CLK	0x58e
317			MX93_PAD_ENET1_TX_CTL__ENET_QOS_RGMII_TX_CTL		0x57e
318			MX93_PAD_UART2_TXD__GPIO1_IO07				0x51e
319		>;
320	};
321
322	pinctrl_reg_eqos_phy: regeqosgrp {
323		fsl,pins = <
324			MX93_PAD_UART2_TXD__GPIO1_IO07			0x51e
325		>;
326	};
327
328	pinctrl_lpi2c3: lpi2c3grp {
329		fsl,pins = <
330			MX93_PAD_GPIO_IO28__LPI2C3_SDA		0x40000b9e
331			MX93_PAD_GPIO_IO29__LPI2C3_SCL		0x40000b9e
332		>;
333	};
334
335	pinctrl_lpi2c3_gpio: lpi2c3-gpiogrp {
336		fsl,pins = <
337			MX93_PAD_GPIO_IO28__GPIO2_IO28		0x40000b9e
338			MX93_PAD_GPIO_IO29__GPIO2_IO29		0x40000b9e
339		>;
340	};
341
342	pinctrl_lpspi8: lpspi8grp {
343		fsl,pins = <
344			MX93_PAD_GPIO_IO12__GPIO2_IO12		0x31e
345			MX93_PAD_GPIO_IO13__LPSPI8_SIN		0x31e
346			MX93_PAD_GPIO_IO14__LPSPI8_SOUT		0x31e
347			MX93_PAD_GPIO_IO15__LPSPI8_SCK		0x31e
348		>;
349	};
350
351	pinctrl_lpuart5: lpuart5grp {
352		fsl,pins = <
353			MX93_PAD_DAP_TDO_TRACESWO__LPUART5_TX   0x31e
354			MX93_PAD_DAP_TDI__LPUART5_RX            0x31e
355			MX93_PAD_DAP_TMS_SWDIO__LPUART5_RTS_B   0x31e
356			MX93_PAD_DAP_TCLK_SWCLK__LPUART5_CTS_B  0x31e
357		>;
358	};
359
360	pinctrl_restouch: restouchgrp {
361		fsl,pins = <
362			MX93_PAD_CCM_CLKO4__GPIO4_IO29		0x31e
363		>;
364	};
365
366	pinctrl_sai1: sai1grp {
367		fsl,pins = <
368			MX93_PAD_SAI1_TXC__SAI1_TX_BCLK		0x31e
369			MX93_PAD_SAI1_TXFS__SAI1_TX_SYNC	0x31e
370			MX93_PAD_SAI1_TXD0__SAI1_TX_DATA00	0x31e
371			MX93_PAD_SAI1_RXD0__SAI1_RX_DATA00	0x31e
372			MX93_PAD_I2C2_SDA__SAI1_RX_BCLK		0x31e
373			MX93_PAD_I2C2_SCL__SAI1_RX_SYNC		0x31e
374			MX93_PAD_UART2_RXD__SAI1_MCLK		0x31e
375		>;
376	};
377
378	pinctrl_sai1_sleep: sai1-sleepgrp {
379		fsl,pins = <
380			MX93_PAD_SAI1_TXC__GPIO1_IO12		0x31e
381			MX93_PAD_SAI1_TXFS__GPIO1_IO11		0x31e
382			MX93_PAD_SAI1_TXD0__GPIO1_IO13		0x31e
383			MX93_PAD_SAI1_RXD0__GPIO1_IO14		0x31e
384			MX93_PAD_UART2_RXD__GPIO1_IO06		0x31e
385			MX93_PAD_I2C2_SDA__GPIO1_IO03		0x31e
386			MX93_PAD_I2C2_SCL__GPIO1_IO02		0x31e
387		>;
388	};
389
390	pinctrl_usdhc1: usdhc1grp {
391		fsl,pins = <
392			MX93_PAD_SD1_CLK__USDHC1_CLK		0x15fe
393			MX93_PAD_SD1_CMD__USDHC1_CMD		0x13fe
394			MX93_PAD_SD1_DATA0__USDHC1_DATA0	0x13fe
395			MX93_PAD_SD1_DATA1__USDHC1_DATA1	0x13fe
396			MX93_PAD_SD1_DATA2__USDHC1_DATA2	0x13fe
397			MX93_PAD_SD1_DATA3__USDHC1_DATA3	0x13fe
398			MX93_PAD_SD1_DATA4__USDHC1_DATA4	0x13fe
399			MX93_PAD_SD1_DATA5__USDHC1_DATA5	0x13fe
400			MX93_PAD_SD1_DATA6__USDHC1_DATA6	0x13fe
401			MX93_PAD_SD1_DATA7__USDHC1_DATA7	0x13fe
402			MX93_PAD_SD1_STROBE__USDHC1_STROBE	0x15fe
403		>;
404	};
405
406	pinctrl_usdhc3: usdhc3grp {
407		fsl,pins = <
408			MX93_PAD_SD3_CLK__USDHC3_CLK		0x1582 /* SDIO_B_CLK */
409			MX93_PAD_SD3_CMD__USDHC3_CMD		0x40001382 /* SDIO_B_CMD */
410			MX93_PAD_SD3_DATA0__USDHC3_DATA0	0x40001382 /* SDIO_B_D0 */
411			MX93_PAD_SD3_DATA1__USDHC3_DATA1	0x40001382 /* SDIO_B_D1 */
412			MX93_PAD_SD3_DATA2__USDHC3_DATA2	0x40001382 /* SDIO_B_D2 */
413			MX93_PAD_SD3_DATA3__USDHC3_DATA3	0x40001382 /* SDIO_B_D3 */
414		>;
415	};
416
417	pinctrl_usdhc3_100mhz: usdhc3-100mhzgrp {
418		fsl,pins = <
419			MX93_PAD_SD3_CLK__USDHC3_CLK		0x158e /* SDIO_B_CLK */
420			MX93_PAD_SD3_CMD__USDHC3_CMD		0x4000138e /* SDIO_B_CMD */
421			MX93_PAD_SD3_DATA0__USDHC3_DATA0	0x4000138e /* SDIO_B_D0 */
422			MX93_PAD_SD3_DATA1__USDHC3_DATA1	0x4000138e /* SDIO_B_D1 */
423			MX93_PAD_SD3_DATA2__USDHC3_DATA2	0x4000138e /* SDIO_B_D2 */
424			MX93_PAD_SD3_DATA3__USDHC3_DATA3	0x4000138e /* SDIO_B_D3 */
425		>;
426	};
427
428	pinctrl_usdhc3_200mhz: usdhc3-200mhzgrp {
429		fsl,pins = <
430			MX93_PAD_SD3_CLK__USDHC3_CLK		0x15fe /* SDIO_B_CLK */
431			MX93_PAD_SD3_CMD__USDHC3_CMD		0x400013fe /* SDIO_B_CMD */
432			MX93_PAD_SD3_DATA0__USDHC3_DATA0	0x400013fe /* SDIO_B_D0 */
433			MX93_PAD_SD3_DATA1__USDHC3_DATA1	0x400013fe /* SDIO_B_D1 */
434			MX93_PAD_SD3_DATA2__USDHC3_DATA2	0x400013fe /* SDIO_B_D2 */
435			MX93_PAD_SD3_DATA3__USDHC3_DATA3	0x400013fe /* SDIO_B_D3 */
436		>;
437	};
438
439	pinctrl_usdhc3_sleep: usdhc3-sleepgrp {
440		fsl,pins = <
441			MX93_PAD_SD3_CLK__GPIO3_IO20		0x400
442			MX93_PAD_SD3_CMD__GPIO3_IO21		0x400
443			MX93_PAD_SD3_DATA0__GPIO3_IO22		0x400
444			MX93_PAD_SD3_DATA1__GPIO3_IO23		0x400
445			MX93_PAD_SD3_DATA2__GPIO3_IO24		0x400
446			MX93_PAD_SD3_DATA3__GPIO3_IO25		0x400
447		>;
448	};
449
450	pinctrl_usdhc3_wlan: usdhc3-wlangrp {
451		fsl,pins = <
452			MX93_PAD_ENET2_MDC__GPIO4_IO14		0x51e /* WIFI_REG_ON     */
453			MX93_PAD_SD2_RESET_B__GPIO3_IO07	0x51e /* WIFI_PWR_EN     */
454		>;
455	};
456};
~/ Read-only file preview.