// SPDX-License-Identifier: GPL-2.0-or-later OR MIT /* * Copyright (C) 2025 Toradex * * https://www.toradex.com/computer-on-modules/aquila-arm-family/ti-am69 * https://www.toradex.com/products/carrier-board/aquila-development-board-kit */ /dts-v1/; #include #include "k3-am69-aquila.dtsi" / { model = "Toradex Aquila AM69 on Aquila Development Board"; compatible = "toradex,aquila-am69-dev", "toradex,aquila-am69", "ti,j784s4"; aliases { eeprom1 = &carrier_eeprom; }; reg_1v8_sw: regulator-1v8-sw { compatible = "regulator-fixed"; regulator-max-microvolt = <1800000>; regulator-min-microvolt = <1800000>; regulator-name = "Carrier_1V8"; }; reg_3v3_dp: regulator-3v3-dp { compatible = "regulator-fixed"; pinctrl-names = "default"; pinctrl-0 = <&pinctrl_gpio_21_dp>; /* Aquila GPIO_21_DP (AQUILA B57) */ gpio = <&main_gpio0 37 GPIO_ACTIVE_HIGH>; enable-active-high; regulator-max-microvolt = <3300000>; regulator-min-microvolt = <3300000>; regulator-name = "DP_3V3"; startup-delay-us = <10000>; }; dp0-connector { compatible = "dp-connector"; dp-pwr-supply = <®_3v3_dp>; label = "Display Port"; type = "full-size"; port { dp0_connector_in: endpoint { remote-endpoint = <&dp0_out>; }; }; }; sound { compatible = "simple-audio-card"; simple-audio-card,bitclock-master = <&codec_dai>; simple-audio-card,format = "i2s"; simple-audio-card,frame-master = <&codec_dai>; simple-audio-card,name = "aquila-wm8904"; simple-audio-card,mclk-fs = <256>; simple-audio-card,routing = "Headphone Jack", "HPOUTL", "Headphone Jack", "HPOUTR", "IN2L", "Line In Jack", "IN2R", "Line In Jack", "Microphone Jack", "MICBIAS", "IN1L", "Microphone Jack", "IN1R", "Digital Mic"; simple-audio-card,widgets = "Microphone", "Microphone Jack", "Microphone", "Digital Mic", "Headphone", "Headphone Jack", "Line", "Line In Jack"; codec_dai: simple-audio-card,codec { sound-dai = <&wm8904_1a>; }; simple-audio-card,cpu { sound-dai = <&mcasp4>; }; }; }; /* Aquila CTRL_PWR_BTN_MICO# */ &aquila_key_power { status = "okay"; }; /* Aquila CTRL_WAKE1_MICO# */ &aquila_key_wake { status = "okay"; }; /* On-module ETH_1 MDIO */ &davinci_mdio { status = "okay"; }; &dp0_ports { port@4 { reg = <4>; dp0_out: endpoint { remote-endpoint = <&dp0_connector_in>; }; }; }; &dss { status = "okay"; }; &main0_thermal { cooling-maps { map0 { cooling-device = <&fan 1 1>; trip = <&main0_alert0>; }; map1 { cooling-device = <&fan 2 2>; trip = <&main0_alert1>; }; }; }; &main1_thermal { cooling-maps { map0 { cooling-device = <&fan 1 1>; trip = <&main1_alert0>; }; map1 { cooling-device = <&fan 2 2>; trip = <&main1_alert1>; }; }; }; &main2_thermal { cooling-maps { map0 { cooling-device = <&fan 1 1>; trip = <&main2_alert0>; }; map1 { cooling-device = <&fan 2 2>; trip = <&main2_alert1>; }; }; }; &main3_thermal { cooling-maps { map0 { cooling-device = <&fan 1 1>; trip = <&main3_alert0>; }; map1 { cooling-device = <&fan 2 2>; trip = <&main3_alert1>; }; }; }; &main4_thermal { cooling-maps { map0 { cooling-device = <&fan 1 1>; trip = <&main4_alert0>; }; map1 { cooling-device = <&fan 2 2>; trip = <&main4_alert1>; }; }; }; /* Aquila ETH_2 */ &main_cpsw0 { status = "okay"; }; /* Aquila ETH_2 SGMII PHY */ &main_cpsw0_port8 { phy-handle = <&cpsw0_port8_phy4>; status = "okay"; }; /* Aquila ETH_2_XGMII_MDIO */ &main_cpsw0_mdio { status = "okay"; cpsw0_port8_phy4: ethernet-phy@4 { reg = <4>; pinctrl-names = "default"; pinctrl-0 = <&pinctrl_eth2_int>; interrupt-parent = <&main_gpio0>; interrupts = <44 IRQ_TYPE_EDGE_FALLING>; }; }; /* Aquila PWM_1 */ &main_ehrpwm0 { status = "okay"; }; /* Aquila PWM_4_DP */ &main_ehrpwm2 { status = "okay"; }; /* Aquila PWM_2 */ &main_ehrpwm1 { status = "okay"; }; /* Aquila PWM_3_DSI */ &main_ehrpwm5 { status = "okay"; }; &main_gpio0 { pinctrl-names = "default"; pinctrl-0 = <&pinctrl_gpio_01>, /* Aquila GPIO_01 */ <&pinctrl_gpio_02>, /* Aquila GPIO_02 */ <&pinctrl_gpio_03>; /* Aquila GPIO_03 */ }; /* Aquila I2C_3_DSI1 */ &main_i2c0 { status = "okay"; i2c-mux@70 { compatible = "nxp,pca9543"; reg = <0x70>; #address-cells = <1>; #size-cells = <0>; /* I2C on DSI Connector Pin #4 and #6 */ i2c_dsi_0: i2c@0 { reg = <0>; #address-cells = <1>; #size-cells = <0>; }; /* I2C on DSI Connector Pin #52 and #54 */ i2c_dsi_1: i2c@1 { reg = <1>; #address-cells = <1>; #size-cells = <0>; }; }; }; /* Aquila I2C_4_CSI1 */ &main_i2c1 { status = "okay"; }; /* Aquila I2C_5_CSI2 */ &main_i2c2 { status = "okay"; }; /* Aquila I2C_6 */ &main_i2c5 { status = "okay"; }; /* Aquila CAN_1 */ &main_mcan10 { status = "okay"; }; /* Aquila CAN_3 */ &main_mcan13 { status = "okay"; }; /* Aquila SD_1 */ &main_sdhci1 { status = "okay"; }; /* Aquila SPI_2 */ &main_spi0 { status = "okay"; }; /* Aquila SPI_1 */ &main_spi2 { status = "okay"; }; /* Aquila UART_1 */ &main_uart4 { status = "okay"; }; /* Aquila UART_3, used as the Linux console */ &main_uart8 { status = "okay"; }; /* Aquila I2S_1 */ &mcasp4 { status = "okay"; }; &mcu_cpsw { status = "okay"; }; /* On-module ETH_1 RGMII */ &mcu_cpsw_port1 { status = "okay"; }; /* Aquila I2C_1 */ &mcu_i2c0 { clock-frequency = <100000>; status = "okay"; fan_controller: fan@18 { compatible = "ti,amc6821"; reg = <0x18>; #pwm-cells = <2>; fan: fan { cooling-levels = <102 179 255>; #cooling-cells = <2>; pwms = <&fan_controller 40000 PWM_POLARITY_INVERTED>; }; }; wm8904_1a: audio-codec@1a { compatible = "wlf,wm8904"; reg = <0x1a>; pinctrl-names = "default"; pinctrl-0 = <&pinctrl_audio_extrefclk1>; #sound-dai-cells = <0>; clocks = <&audio_refclk1>; clock-names = "mclk"; AVDD-supply = <®_1v8_sw>; CPVDD-supply = <®_1v8_sw>; DBVDD-supply = <®_1v8_sw>; DCVDD-supply = <®_1v8_sw>; MICVDD-supply = <®_1v8_sw>; wlf,drc-cfg-names = "default", "peaklimiter"; /* * Config registers per name, respectively: * KNEE_IP = 0, KNEE_OP = 0, HI_COMP = 1, LO_COMP = 1 * KNEE_IP = -24, KNEE_OP = -6, HI_COMP = 1/4, LO_COMP = 1 */ wlf,drc-cfg-regs = /bits/ 16 <0x01af 0x3248 0x0000 0x0000>, /bits/ 16 <0x04af 0x324b 0x0010 0x0408>; /* GPIO1 = DMIC_CLK, don't touch others */ wlf,gpio-cfg = <0x0018>, <0xffff>, <0xffff>, <0xffff>; wlf,in1r-as-dmicdat2; }; /* Current measurement into module VCC */ hwmon@41 { compatible = "ti,ina226"; reg = <0x41>; shunt-resistor = <5000>; }; temperature-sensor@4f { compatible = "ti,tmp1075"; reg = <0x4f>; }; /* USB-C OTG (TCPC USB PD PHY) */ tcpc@52 { compatible = "nxp,ptn5110", "tcpci"; reg = <0x52>; pinctrl-names = "default"; pinctrl-0 = <&pinctrl_usb1_int>; interrupt-parent = <&main_gpio0>; interrupts = <28 IRQ_TYPE_EDGE_FALLING>; connector { compatible = "usb-c-connector"; data-role = "dual"; label = "USB-C OTG"; power-role = "dual"; try-power-role = "sink"; self-powered; source-pdos = ; sink-pdos = ; op-sink-microwatt = <1000000>; ports { #address-cells = <1>; #size-cells = <0>; port@0 { reg = <0>; usb_1_con_hs: endpoint { remote-endpoint = <&usb0_hs>; }; }; port@1 { reg = <1>; usb_1_con_ss: endpoint { remote-endpoint = <&usb0_ss_mux>; }; }; }; }; }; carrier_eeprom: eeprom@57 { compatible = "st,24c02", "atmel,24c02"; reg = <0x57>; pagesize = <16>; }; }; /* Aquila I2C_2 */ &mcu_i2c1 { status = "okay"; }; /* Aquila CAN_2 */ &mcu_mcan0 { status = "okay"; }; /* Aquila CAN_4 */ &mcu_mcan1 { status = "okay"; }; /* Aquila UART_4 */ &mcu_uart0 { status = "okay"; }; &mhdp { status = "okay"; }; /* Aquila QSPI_1 */ &ospi0 { pinctrl-names = "default"; pinctrl-0 = <&pinctrl_mcu_ospi0_4bit>, <&pinctrl_mcu_ospi0_cs0>; status = "okay"; flash@0 { compatible = "jedec,spi-nor"; reg = <0x0>; spi-max-frequency = <66000000>; spi-rx-bus-width = <4>; spi-tx-bus-width = <4>; cdns,read-delay = <0>; cdns,tchsh-ns = <3>; cdns,tsd2d-ns = <10>; cdns,tshsl-ns = <30>; cdns,tslch-ns = <8>; }; }; /* Aquila PCIE_1 */ &pcie0_rc { status = "okay"; }; /* Aquila PCIE_2 */ &pcie1_rc { status = "okay"; }; &serdes2 { status = "okay"; }; &serdes4 { status = "okay"; }; &serdes_wiz2 { status = "okay"; }; &serdes_wiz4 { status = "okay"; }; /* Aquila ADC_[1-4] */ &tscadc0 { status = "okay"; }; &usbss0 { status = "okay"; }; &usb0ss_mux { status = "okay"; port { usb0_ss_mux: endpoint { remote-endpoint = <&usb_1_con_ss>; }; }; }; &usb0 { status = "okay"; port { usb0_hs: endpoint { remote-endpoint = <&usb_1_con_hs>; }; }; }; &wkup0_thermal { cooling-maps { map0 { cooling-device = <&fan 1 1>; trip = <&wkup0_alert0>; }; map1 { cooling-device = <&fan 2 2>; trip = <&wkup0_alert1>; }; }; }; &wkup1_thermal { cooling-maps { map0 { cooling-device = <&fan 1 1>; trip = <&wkup1_alert0>; }; map1 { cooling-device = <&fan 2 2>; trip = <&wkup1_alert1>; }; }; }; &wkup_gpio0 { pinctrl-names = "default"; pinctrl-0 = <&pinctrl_gpio_04>, /* Aquila GPIO_04 */ <&pinctrl_gpio_05>, /* Aquila GPIO_05 */ <&pinctrl_gpio_06>, /* Aquila GPIO_06 */ <&pinctrl_gpio_07>, /* Aquila GPIO_07 */ <&pinctrl_gpio_08>; /* Aquila GPIO_08 */ }; /* Aquila UART_2, through RS485 transceiver */ &wkup_uart0 { linux,rs485-enabled-at-boot-time; rs485-rx-during-tx; status = "okay"; };