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 = <®_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 = <®_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 = <®_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 = <®_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 = <®_2p8v>; 239 DOVDD-supply = <®_1p8v>; 240 DVDD-supply = <®_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 = <®_sdhc1_vmmc>; 464 vqmmc-supply = <®_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