1// SPDX-License-Identifier: GPL-2.0-or-later OR MIT 2/* 3 * Copyright (C) 2025 Toradex 4 * 5 * https://www.toradex.com/computer-on-modules/aquila-arm-family/ti-am69 6 * https://www.toradex.com/products/carrier-board/clover 7 */ 8 9/dts-v1/; 10 11#include <dt-bindings/pwm/pwm.h> 12#include "k3-am69-aquila.dtsi" 13 14/ { 15 model = "Toradex Aquila AM69 on Clover Board"; 16 compatible = "toradex,aquila-am69-clover", 17 "toradex,aquila-am69", 18 "ti,j784s4"; 19 20 aliases { 21 eeprom1 = &carrier_eeprom; 22 }; 23 24 reg_3v3_dp: regulator-3v3-dp { 25 compatible = "regulator-fixed"; 26 pinctrl-names = "default"; 27 pinctrl-0 = <&pinctrl_gpio_21_dp>; 28 /* Aquila GPIO_21_DP (AQUILA B57) */ 29 gpio = <&main_gpio0 37 GPIO_ACTIVE_HIGH>; 30 enable-active-high; 31 regulator-max-microvolt = <3300000>; 32 regulator-min-microvolt = <3300000>; 33 regulator-name = "DP_3V3"; 34 startup-delay-us = <10000>; 35 }; 36 37 /* Aquila DP_1 */ 38 dp-connector { 39 compatible = "dp-connector"; 40 dp-pwr-supply = <®_3v3_dp>; 41 label = "Display Port"; 42 type = "full-size"; 43 44 port { 45 dp_connector_in: endpoint { 46 remote-endpoint = <&dp0_out>; 47 }; 48 }; 49 }; 50}; 51 52/* On-module ETH_1 MDIO */ 53&davinci_mdio { 54 status = "okay"; 55}; 56 57&dp0_ports { 58 port@4 { 59 reg = <4>; 60 dp0_out: endpoint { 61 remote-endpoint = <&dp_connector_in>; 62 }; 63 }; 64}; 65 66&dss { 67 status = "okay"; 68}; 69 70&main0_thermal { 71 cooling-maps { 72 map0 { 73 cooling-device = <&fan 1 1>; 74 trip = <&main0_alert0>; 75 }; 76 77 map1 { 78 cooling-device = <&fan 2 2>; 79 trip = <&main0_alert1>; 80 }; 81 }; 82}; 83 84&main1_thermal { 85 cooling-maps { 86 map0 { 87 cooling-device = <&fan 1 1>; 88 trip = <&main1_alert0>; 89 }; 90 91 map1 { 92 cooling-device = <&fan 2 2>; 93 trip = <&main1_alert1>; 94 }; 95 }; 96}; 97 98&main2_thermal { 99 cooling-maps { 100 map0 { 101 cooling-device = <&fan 1 1>; 102 trip = <&main2_alert0>; 103 }; 104 105 map1 { 106 cooling-device = <&fan 2 2>; 107 trip = <&main2_alert1>; 108 }; 109 }; 110}; 111 112&main3_thermal { 113 cooling-maps { 114 map0 { 115 cooling-device = <&fan 1 1>; 116 trip = <&main3_alert0>; 117 }; 118 119 map1 { 120 cooling-device = <&fan 2 2>; 121 trip = <&main3_alert1>; 122 }; 123 }; 124}; 125 126&main4_thermal { 127 cooling-maps { 128 map0 { 129 cooling-device = <&fan 1 1>; 130 trip = <&main4_alert0>; 131 }; 132 133 map1 { 134 cooling-device = <&fan 2 2>; 135 trip = <&main4_alert1>; 136 }; 137 }; 138}; 139 140/* Aquila ETH_2 */ 141&main_cpsw0 { 142 status = "okay"; 143}; 144 145/* Aquila ETH_2 SGMII PHY */ 146&main_cpsw0_port8 { 147 phy-handle = <&cpsw0_port8_phy4>; 148 status = "okay"; 149}; 150 151/* Aquila ETH_2_XGMII_MDIO */ 152&main_cpsw0_mdio { 153 status = "okay"; 154 155 cpsw0_port8_phy4: ethernet-phy@4 { 156 reg = <4>; 157 pinctrl-names = "default"; 158 pinctrl-0 = <&pinctrl_eth2_int>; 159 interrupt-parent = <&main_gpio0>; 160 interrupts = <44 IRQ_TYPE_EDGE_FALLING>; 161 }; 162}; 163 164/* Aquila PWM_1 */ 165&main_ehrpwm0 { 166 status = "okay"; 167}; 168 169/* Aquila PWM_2 */ 170&main_ehrpwm1 { 171 status = "okay"; 172}; 173 174&main_gpio0 { 175 pinctrl-names = "default"; 176 pinctrl-0 = <&pinctrl_gpio_01>, /* Aquila GPIO_01 */ 177 <&pinctrl_gpio_02>, /* Aquila GPIO_02 */ 178 <&pinctrl_gpio_03>; /* Aquila GPIO_03 */ 179}; 180 181/* Aquila I2C_6 */ 182&main_i2c5 { 183 status = "okay"; 184}; 185 186/* Aquila CAN_1 */ 187&main_mcan10 { 188 status = "okay"; 189}; 190 191/* Aquila CAN_3 */ 192&main_mcan13 { 193 status = "okay"; 194}; 195 196/* Aquila SD_1 */ 197&main_sdhci1 { 198 status = "okay"; 199}; 200 201/* Aquila SPI_2 */ 202&main_spi0 { 203 status = "okay"; 204}; 205 206/* Aquila SPI_1 */ 207&main_spi2 { 208 pinctrl-0 = <&pinctrl_main_spi2>, 209 <&pinctrl_main_spi2_cs0>, 210 <&pinctrl_gpio_05>; 211 cs-gpios = <0>, <&wkup_gpio0 29 GPIO_ACTIVE_LOW>; 212 status = "okay"; 213 214 tpm@1 { 215 compatible = "infineon,slb9670", "tcg,tpm_tis-spi"; 216 reg = <1>; 217 pinctrl-names = "default"; 218 pinctrl-0 = <&pinctrl_gpio_06>; 219 interrupt-parent = <&wkup_gpio0>; 220 interrupts = <30 IRQ_TYPE_EDGE_FALLING>; 221 spi-max-frequency = <18500000>; 222 }; 223}; 224 225/* Aquila UART_1 */ 226&main_uart4 { 227 status = "okay"; 228}; 229 230/* Aquila UART_3, used as the Linux console */ 231&main_uart8 { 232 status = "okay"; 233}; 234 235&mcu_cpsw { 236 status = "okay"; 237}; 238 239/* On-module ETH_1 RGMII */ 240&mcu_cpsw_port1 { 241 status = "okay"; 242}; 243 244/* Aquila I2C_1 */ 245&mcu_i2c0 { 246 clock-frequency = <100000>; 247 status = "okay"; 248 249 fan_controller: fan@18 { 250 compatible = "ti,amc6821"; 251 reg = <0x18>; 252 #pwm-cells = <2>; 253 254 fan: fan { 255 cooling-levels = <102 179 255>; 256 #cooling-cells = <2>; 257 pwms = <&fan_controller 40000 PWM_POLARITY_INVERTED>; 258 }; 259 }; 260 261 temperature-sensor@4f { 262 compatible = "ti,tmp1075"; 263 reg = <0x4f>; 264 }; 265 266 /* USB-C OTG (TCPC USB PD PHY) */ 267 tcpc@52 { 268 compatible = "nxp,ptn5110", "tcpci"; 269 reg = <0x52>; 270 pinctrl-names = "default"; 271 pinctrl-0 = <&pinctrl_usb1_int>; 272 interrupt-parent = <&main_gpio0>; 273 interrupts = <28 IRQ_TYPE_EDGE_FALLING>; 274 275 connector { 276 compatible = "usb-c-connector"; 277 data-role = "dual"; 278 label = "USB-C OTG"; 279 power-role = "dual"; 280 try-power-role = "sink"; 281 self-powered; 282 source-pdos = <PDO_FIXED(5000, 3000, PDO_FIXED_USB_COMM)>; 283 sink-pdos = <PDO_FIXED(5000, 3000, PDO_FIXED_USB_COMM)>; 284 op-sink-microwatt = <1000000>; 285 286 ports { 287 #address-cells = <1>; 288 #size-cells = <0>; 289 290 port@0 { 291 reg = <0>; 292 293 usb_1_con_hs: endpoint { 294 remote-endpoint = <&usb0_hs>; 295 }; 296 }; 297 298 port@1 { 299 reg = <1>; 300 301 usb_1_con_ss: endpoint { 302 remote-endpoint = <&usb0_ss_mux>; 303 }; 304 }; 305 }; 306 }; 307 }; 308 309 carrier_eeprom: eeprom@57 { 310 compatible = "st,24c02", "atmel,24c02"; 311 reg = <0x57>; 312 pagesize = <16>; 313 }; 314}; 315 316/* Aquila I2C_2 */ 317&mcu_i2c1 { 318 status = "okay"; 319}; 320 321/* Aquila CAN_2 */ 322&mcu_mcan0 { 323 status = "okay"; 324}; 325 326/* Aquila CAN_4 */ 327&mcu_mcan1 { 328 status = "okay"; 329}; 330 331/* Aquila UART_4 */ 332&mcu_uart0 { 333 status = "okay"; 334}; 335 336&mhdp { 337 status = "okay"; 338}; 339 340/* Aquila QSPI_1 */ 341&ospi0 { 342 pinctrl-names = "default"; 343 pinctrl-0 = <&pinctrl_mcu_ospi0_4bit>, <&pinctrl_mcu_ospi0_cs0>; 344 status = "okay"; 345 346 flash@0 { 347 compatible = "jedec,spi-nor"; 348 reg = <0>; 349 spi-max-frequency = <66000000>; 350 spi-rx-bus-width = <4>; 351 spi-tx-bus-width = <4>; 352 cdns,read-delay = <0>; 353 cdns,tchsh-ns = <3>; 354 cdns,tsd2d-ns = <10>; 355 cdns,tshsl-ns = <30>; 356 cdns,tslch-ns = <8>; 357 }; 358}; 359 360/* Aquila PCIE_1 */ 361&pcie0_rc { 362 status = "okay"; 363}; 364 365/* Aquila PCIE_2 */ 366&pcie1_rc { 367 status = "okay"; 368}; 369 370&serdes2 { 371 status = "okay"; 372}; 373 374&serdes4 { 375 status = "okay"; 376}; 377 378&serdes_wiz2 { 379 status = "okay"; 380}; 381 382&serdes_wiz4 { 383 status = "okay"; 384}; 385 386/* Aquila ADC_[1-4] */ 387&tscadc0 { 388 status = "okay"; 389}; 390 391&usbss0 { 392 status = "okay"; 393}; 394 395&usb0ss_mux { 396 status = "okay"; 397 398 port { 399 usb0_ss_mux: endpoint { 400 remote-endpoint = <&usb_1_con_ss>; 401 }; 402 }; 403}; 404 405&usb0 { 406 status = "okay"; 407 408 port { 409 usb0_hs: endpoint { 410 remote-endpoint = <&usb_1_con_hs>; 411 }; 412 }; 413}; 414 415&wkup0_thermal { 416 cooling-maps { 417 map0 { 418 cooling-device = <&fan 1 1>; 419 trip = <&wkup0_alert0>; 420 }; 421 422 map1 { 423 cooling-device = <&fan 2 2>; 424 trip = <&wkup0_alert1>; 425 }; 426 }; 427}; 428 429&wkup1_thermal { 430 cooling-maps { 431 map0 { 432 cooling-device = <&fan 1 1>; 433 trip = <&wkup1_alert0>; 434 }; 435 436 map1 { 437 cooling-device = <&fan 2 2>; 438 trip = <&wkup1_alert1>; 439 }; 440 }; 441}; 442 443&wkup_gpio0 { 444 pinctrl-names = "default"; 445 pinctrl-0 = <&pinctrl_gpio_04>; /* Aquila GPIO_04 */ 446}; 447 448/* Aquila UART_2 */ 449&wkup_uart0 { 450 status = "okay"; 451}; 452