xref: /linux/arch/arm64/boot/dts/ti/k3-am62p5-var-som-symphony.dts (revision 4f38da1f027ea2c9f01bb71daa7a299c191b6940)
1// SPDX-License-Identifier: GPL-2.0
2/*
3 * Variscite Symphony carrier board for VAR-SOM-AM62P
4 *
5 * Link: https://www.variscite.it/product/single-board-computers/symphony-board/
6 *
7 * Copyright (C) 2025 Variscite Ltd. - https://www.variscite.com/
8 *
9 */
10
11/dts-v1/;
12
13#include "k3-am62p5-var-som.dtsi"
14
15/ {
16	model = "Variscite VAR-SOM-AM62P on Symphony-Board";
17	compatible = "variscite,var-som-am62p-symphony", "variscite,var-som-am62p", "ti,am62p5";
18
19	aliases {
20		ethernet0 = &cpsw_port1;
21		ethernet1 = &cpsw_port2;
22		mmc0 = &sdhci0;
23		mmc1 = &sdhci1;
24		mmc2 = &sdhci2;
25		serial0 = &main_uart0;
26		serial2 = &main_uart2;
27		serial5 = &main_uart5;
28		serial6 = &main_uart6;
29		spi5 = &main_spi2;
30		usb0 = &usb0;
31		usb1 = &usb1;
32	};
33
34	chosen {
35		stdout-path = "serial0:115200n8";
36	};
37
38	clk_ov5640_fixed: clock-24000000 {
39		#clock-cells = <0>;
40		compatible = "fixed-clock";
41		clock-frequency = <24000000>;
42	};
43
44	gpio-keys {
45		compatible = "gpio-keys";
46
47		button-back {
48			label = "Back";
49			linux,code = <KEY_BACK>;
50			gpios = <&pca9534 1 GPIO_ACTIVE_LOW>;
51		};
52
53		button-home {
54			label = "Home";
55			linux,code = <KEY_HOME>;
56			gpios = <&pca9534 2 GPIO_ACTIVE_LOW>;
57		};
58
59		button-menu {
60			label = "Menu";
61			linux,code = <KEY_MENU>;
62			gpios = <&pca9534 3 GPIO_ACTIVE_LOW>;
63		};
64	};
65
66	gpio-leds {
67		compatible = "gpio-leds";
68
69		led-heartbeat {
70			label = "Heartbeat";
71			linux,default-trigger = "heartbeat";
72			gpios = <&pca9534 0 GPIO_ACTIVE_LOW>;
73		};
74	};
75
76	reg_2p8v: regulator-2p8v {
77		compatible = "regulator-fixed";
78		regulator-name = "2P8V";
79		regulator-min-microvolt = <2800000>;
80		regulator-max-microvolt = <2800000>;
81		vin-supply = <&reg_3v3>;
82		regulator-always-on;
83	};
84
85	reg_1p8v: regulator-1p8v {
86		compatible = "regulator-fixed";
87		regulator-name = "1P8V";
88		regulator-min-microvolt = <1800000>;
89		regulator-max-microvolt = <1800000>;
90		vin-supply = <&reg_3v3>;
91		regulator-always-on;
92	};
93
94	reg_1p5v: regulator-1p5v {
95		compatible = "regulator-fixed";
96		regulator-name = "1P5V";
97		regulator-min-microvolt = <1500000>;
98		regulator-max-microvolt = <1500000>;
99		vin-supply = <&reg_3v3>;
100		regulator-always-on;
101	};
102
103	reg_sdhc1_vmmc: regulator-sdhc1 {
104		compatible = "regulator-fixed";
105		regulator-name = "+V3.3_SD";
106		vin-supply = <&reg_sdhc1_vmmc_int>;
107		regulator-min-microvolt = <3300000>;
108		regulator-max-microvolt = <3300000>;
109		regulator-boot-on;
110		enable-active-high;
111		gpio = <&main_gpio0 30 GPIO_ACTIVE_HIGH>;
112		bootph-all;
113	};
114
115	reg_sdhc1_vmmc_int: regulator-sdhc1-int {
116		compatible = "regulator-fixed";
117		regulator-name = "+V3.3_SD_INT";
118		pinctrl-names = "default";
119		pinctrl-0 = <&pinctrl_sd1_vmmc>;
120		regulator-min-microvolt = <3300000>;
121		regulator-max-microvolt = <3300000>;
122		regulator-boot-on;
123		enable-active-high;
124		gpio = <&main_gpio0 53 GPIO_ACTIVE_HIGH>;
125		bootph-all;
126	};
127
128	reg_sdhc1_vqmmc: regulator-sdhci1-vqmmc {
129		compatible = "regulator-gpio";
130		regulator-name = "+V3.3_SD_VQMMC";
131		pinctrl-names = "default";
132		pinctrl-0 = <&pinctrl_sd1_vqmmc>;
133		regulator-min-microvolt = <1800000>;
134		regulator-max-microvolt = <3300000>;
135		regulator-boot-on;
136		gpios = <&main_gpio0 56 GPIO_ACTIVE_HIGH>;
137		states = <1800000 0x0>,
138			 <3300000 0x1>;
139		bootph-all;
140	};
141
142	reg_ov5640_buf_en: regulator-camera-buf-en {
143		compatible = "regulator-fixed";
144		regulator-name = "ov5640_buf_en";
145		gpios = <&main_gpio0 21 GPIO_ACTIVE_HIGH>;
146		regulator-always-on;
147		regulator-boot-on;
148	};
149
150	transceiver1: can-phy {
151		compatible = "ti,tcan1042";
152		#phy-cells = <0>;
153		max-bitrate = <5000000>;
154	};
155
156	connector {
157		compatible = "gpio-usb-b-connector", "usb-b-connector";
158		pinctrl-names = "default";
159		pinctrl-0 = <&pinctrl_extcon>;
160		label = "USB-C";
161		id-gpios = <&main_gpio1 12 GPIO_ACTIVE_HIGH>;
162		status = "okay";
163
164		port {
165			usb_con_hs: endpoint {
166				remote-endpoint = <&typec_hs>;
167			};
168		};
169	};
170};
171
172&cdns_csi2rx0 {
173	ports {
174		#address-cells = <1>;
175		#size-cells = <0>;
176
177		csi0_port0: port@0 {
178			reg = <0>;
179			status = "okay";
180
181			csi2rx0_in_sensor: endpoint {
182				remote-endpoint = <&csi2_cam0>;
183				bus-type = <4>; /* CSI2 DPHY. */
184				clock-lanes = <0>;
185				data-lanes = <1 2>;
186			};
187		};
188	};
189};
190
191&cpsw3g {
192	pinctrl-names = "default";
193	pinctrl-0 = <&pinctrl_rgmii1>,
194		    <&pinctrl_rgmii2>;
195	status = "okay";
196};
197
198&cpsw3g_mdio {
199	pinctrl-names = "default";
200	pinctrl-0 = <&pinctrl_mdio1>;
201	status = "okay";
202
203	cpsw3g_phy1: ethernet-phy@5 {
204		compatible = "ethernet-phy-id0283.bc30";
205		reg = <5>;
206		reset-gpios = <&pca9534 5 GPIO_ACTIVE_LOW>;
207		reset-assert-us = <10000>;
208		reset-deassert-us = <100000>;
209	};
210};
211
212&cpsw_port2 {
213	/*
214	 * The required RGMII TX and RX 2ns delays are implemented directly
215	 * in hardware via passive delay elements on the Symphony PCB.
216	 * No delay configuration is needed in software via PHY driver.
217	 */
218	phy-mode = "rgmii";
219	phy-handle = <&cpsw3g_phy1>;
220	status = "okay";
221};
222
223&dphy0 {
224	status = "okay";
225};
226
227&main_i2c0{
228	pinctrl-names = "default";
229	pinctrl-0 = <&pinctrl_i2c0>;
230	clock-frequency = <400000>;
231	status = "okay";
232
233	ov5640: camera@3c {
234		compatible = "ovti,ov5640";
235		reg = <0x3c>;
236		clocks = <&clk_ov5640_fixed>;
237		clock-names = "xclk";
238		AVDD-supply = <&reg_2p8v>;
239		DOVDD-supply = <&reg_1p8v>;
240		DVDD-supply = <&reg_1p5v>;
241		powerdown-gpios = <&main_gpio0 10 GPIO_ACTIVE_HIGH>;
242		reset-gpios = <&main_gpio0 22 GPIO_ACTIVE_LOW>;
243		pinctrl-names = "default";
244		pinctrl-0 = <&pinctrl_ov5640>;
245
246		port {
247			csi2_cam0: endpoint {
248				remote-endpoint = <&csi2rx0_in_sensor>;
249				clock-lanes = <0>;
250				data-lanes = <1 2>;
251			};
252		};
253	};
254
255	/* GPIO expander */
256	pca9534: gpio@20 {
257		compatible = "nxp,pca9534";
258		reg = <0x20>;
259		gpio-controller;
260		pinctrl-names = "default";
261		pinctrl-0 = <&pinctrl_pca9534>;
262		interrupt-parent = <&main_gpio1>;
263		interrupts = <30 IRQ_TYPE_EDGE_FALLING>;
264		#gpio-cells = <2>;
265		status = "okay";
266
267		usb3-sel-hog {
268			gpio-hog;
269			gpios = <4 0>;
270			output-low;
271			line-name = "usb3_sel";
272		};
273
274		eth-som-vselect-hog {
275			gpio-hog;
276			gpios = <6 0>;
277			output-low;
278			line-name = "eth-vselect";
279		};
280
281		eth-mdio-enable-hog {
282			gpio-hog;
283			gpios = <7 0>;
284			output-high;
285			line-name = "eth-mdio-enable";
286		};
287	};
288};
289
290&main_i2c1 {
291	pinctrl-names = "default";
292	pinctrl-0 = <&pinctrl_i2c1>;
293	clock-frequency = <400000>;
294	status = "okay";
295
296	rtc@68 {
297		compatible = "dallas,ds1337";
298		reg = <0x68>;
299	};
300};
301
302&main_mcan0 {
303	pinctrl-names = "default";
304	pinctrl-0 = <&pinctrl_mcan0>;
305	phys = <&transceiver1>;
306	status = "okay";
307};
308
309&main_pmx0 {
310	pinctrl_extcon: main-extcon-pins {
311		pinctrl-single,pins = <
312			AM62PX_IOPAD(0x01a8, PIN_INPUT, 7) /* (F25) MCASP0_AFSX.GPIO1_12 */
313		>;
314	};
315
316	pinctrl_i2c0: main-i2c0-default-pins {
317		pinctrl-single,pins = <
318			AM62PX_IOPAD(0x01e0, PIN_INPUT_PULLUP, 0) /* (B25) I2C0_SCL */
319			AM62PX_IOPAD(0x01e4, PIN_INPUT_PULLUP, 0) /* (A24) I2C0_SDA */
320		>;
321	};
322
323	pinctrl_i2c1: main-i2c1-default-pins {
324		pinctrl-single,pins = <
325			AM62PX_IOPAD(0x01e8, PIN_INPUT_PULLUP, 0) /* (C24) I2C1_SCL */
326			AM62PX_IOPAD(0x01ec, PIN_INPUT_PULLUP, 0) /* (B24) I2C1_SDA */
327		>;
328		bootph-all;
329	};
330
331	pinctrl_mcan0: main-mcan0-default-pins {
332		pinctrl-single,pins = <
333			AM62PX_IOPAD(0x01dc, PIN_INPUT, 0) /* (F20) MCAN0_RX */
334			AM62PX_IOPAD(0x01d8, PIN_OUTPUT, 0) /* (B23) MCAN0_TX */
335		>;
336	};
337
338	pinctrl_mmc1: main-mmc1-default-pins {
339		pinctrl-single,pins = <
340			AM62PX_IOPAD(0x023c, PIN_INPUT, 0) /* (H20) MMC1_CMD */
341			AM62PX_IOPAD(0x0234, PIN_OUTPUT, 0) /* (J24) MMC1_CLK */
342			AM62PX_IOPAD(0x0230, PIN_INPUT, 0) /* (H21) MMC1_DAT0 */
343			AM62PX_IOPAD(0x022c, PIN_INPUT, 0) /* (H23) MMC1_DAT1 */
344			AM62PX_IOPAD(0x0228, PIN_INPUT, 0) /* (H22) MMC1_DAT2 */
345			AM62PX_IOPAD(0x0224, PIN_INPUT, 0) /* (H25) MMC1_DAT3 */
346			AM62PX_IOPAD(0x0240, PIN_INPUT, 0) /* (D23) MMC1_SDCD */
347		>;
348		bootph-all;
349	};
350
351	pinctrl_rgmii2: main-rgmii2-default-pins {
352		pinctrl-single,pins = <
353			AM62PX_IOPAD(0x0184, PIN_INPUT, 0) /* (E19) RGMII2_RD0 */
354			AM62PX_IOPAD(0x0188, PIN_INPUT, 0) /* (E16) RGMII2_RD1 */
355			AM62PX_IOPAD(0x018c, PIN_INPUT, 0) /* (E17) RGMII2_RD2 */
356			AM62PX_IOPAD(0x0190, PIN_INPUT, 0) /* (C19) RGMII2_RD3 */
357			AM62PX_IOPAD(0x0180, PIN_INPUT, 0) /* (D19) RGMII2_RXC */
358			AM62PX_IOPAD(0x017c, PIN_INPUT, 0) /* (F19) RGMII2_RX_CTL */
359			AM62PX_IOPAD(0x016c, PIN_INPUT, 0) /* (B19) RGMII2_TD0 */
360			AM62PX_IOPAD(0x0170, PIN_INPUT, 0) /* (A21) RGMII2_TD1 */
361			AM62PX_IOPAD(0x0174, PIN_INPUT, 0) /* (D17) RGMII2_TD2 */
362			AM62PX_IOPAD(0x0178, PIN_INPUT, 0) /* (A19) RGMII2_TD3 */
363			AM62PX_IOPAD(0x0168, PIN_INPUT_PULLDOWN, 0) /* (D16) RGMII2_TXC */
364			AM62PX_IOPAD(0x0164, PIN_INPUT, 0) /* (A20) RGMII2_TX_CTL */
365		>;
366	};
367
368	pinctrl_spi2: main-spi2-default-pins {
369		pinctrl-single,pins = <
370			AM62PX_IOPAD(0x01b0, PIN_INPUT, 1) /* (G20) MCASP0_ACLKR.SPI2_CLK */
371			AM62PX_IOPAD(0x0194, PIN_OUTPUT, 1) /* (D25) MCASP0_AXR3.SPI2_D0 */
372			AM62PX_IOPAD(0x0198, PIN_INPUT, 1) /* (E25) MCASP0_AXR2.SPI2_D1 */
373			AM62PX_IOPAD(0x01ac, PIN_OUTPUT, 7) /* (G23) MCASP0_AFSR.GPIO1_13 */
374		>;
375	};
376
377	pinctrl_uart0: main-uart0-default-pins {
378		pinctrl-single,pins = <
379			AM62PX_IOPAD(0x1c8, PIN_INPUT, 0)	/* (A22) UART0_RXD */
380			AM62PX_IOPAD(0x1cc, PIN_OUTPUT, 0)	/* (B22) UART0_TXD */
381		>;
382		bootph-all;
383	};
384
385	pinctrl_uart2: main-uart2-default-pins {
386		pinctrl-single,pins = <
387			AM62PX_IOPAD(0x005c, PIN_INPUT_PULLUP, 2) /* (AC25) GPMC0_AD8.UART2_RXD */
388			AM62PX_IOPAD(0x0060, PIN_OUTPUT, 2) /* (AB25) GPMC0_AD9.UART2_TXD */
389		>;
390	};
391
392	pinctrl_uart6: main-uart6-default-pins {
393		pinctrl-single,pins = <
394			AM62PX_IOPAD(0x009c, PIN_INPUT_PULLUP, 3) /* (AD24) GPMC0_WAIT1.UART6_RXD */
395			AM62PX_IOPAD(0x0244, PIN_OUTPUT, 1) /* (D24) MMC1_SDWP.UART6_TXD */
396		>;
397	};
398
399	pinctrl_usb1: main-usb1-default-pins {
400		pinctrl-single,pins = <
401			AM62PX_IOPAD(0x0258, PIN_OUTPUT, 0) /* (G21) USB1_DRVVBUS */
402		>;
403	};
404
405	pinctrl_ov5640: main-ov5640-pins {
406		pinctrl-single,pins = <
407			AM62PX_IOPAD(0x0028, PIN_OUTPUT, 7) /* (N20) OSPI0_D7.GPIO0_10 */
408			AM62PX_IOPAD(0x0054, PIN_OUTPUT, 7) /* (V24) GPMC0_AD6.GPIO0_21 */
409			AM62PX_IOPAD(0x0058, PIN_OUTPUT, 7) /* (W25) GPMC0_AD7.GPIO0_22 */
410		>;
411	};
412
413	pinctrl_pca9534: main-pca9534-pins {
414		pinctrl-single,pins = <
415			AM62PX_IOPAD(0x01f0, PIN_INPUT, 7) /* (C25) EXT_REFCLK1.GPIO1_30 */
416		>;
417	};
418
419	pinctrl_sd1_vmmc: main-sd1-vmmc-pins {
420		pinctrl-single,pins = <
421			AM62PX_IOPAD(0x0078, PIN_OUTPUT, 7) /* (AC24) GPMC0_AD15.GPIO0_30 */
422			AM62PX_IOPAD(0x00d8, PIN_OUTPUT, 7) /* (AE22) VOUT0_DATA8.GPIO0_53 */
423		>;
424		bootph-all;
425	};
426
427	pinctrl_sd1_vqmmc: main-sd1-vqmmc-pins {
428		pinctrl-single,pins = <
429			AM62PX_IOPAD(0x00e4, PIN_OUTPUT, 7) /* (AE21) VOUT0_DATA11.GPIO0_56 */
430		>;
431		bootph-all;
432	};
433};
434
435&main_spi2 {
436	pinctrl-names = "default";
437	pinctrl-0 = <&pinctrl_spi2>;
438	ti,pindir-d0-out-d1-in;
439	cs-gpios = <&main_gpio1 13 GPIO_ACTIVE_HIGH>;
440	status = "okay";
441};
442
443&main_uart0 {
444	pinctrl-names = "default";
445	pinctrl-0 = <&pinctrl_uart0>;
446	status = "okay";
447};
448
449&main_uart2 {
450	pinctrl-names = "default";
451	pinctrl-0 = <&pinctrl_uart2>;
452	status = "okay";
453};
454
455&main_uart6 {
456	pinctrl-names = "default";
457	pinctrl-0 = <&pinctrl_uart6>;
458	status = "okay";
459};
460
461&sdhci1 {
462	/* SD Card */
463	vmmc-supply = <&reg_sdhc1_vmmc>;
464	vqmmc-supply = <&reg_sdhc1_vqmmc>;
465	pinctrl-names = "default";
466	pinctrl-0 = <&pinctrl_mmc1>;
467	disable-wp;
468	bootph-all;
469	status="okay";
470};
471
472&ti_csi2rx0 {
473	status = "okay";
474};
475
476&usb0 {
477	usb-role-switch;
478	status = "okay";
479
480	port {
481		typec_hs: endpoint {
482			remote-endpoint = <&usb_con_hs>;
483		};
484	};
485};
486
487&usb1 {
488	dr_mode = "host";
489	pinctrl-names = "default";
490	pinctrl-0 = <&pinctrl_usb1>;
491	status = "okay";
492};
493
494&usbss0 {
495	status = "okay";
496};
497
498&usbss1 {
499	status = "okay";
500};
501