Link: https://lore.kernel.org/r/20260217200002.683975158@linuxfoundation.org Tested-by: Florian Fainelli <florian.fainelli@broadcom.com> Tested-by: Takeshi Ogasawara <takeshi.ogasawara@futuring-girl.com> Tested-by: Peter Schneider <pschneider1968@googlemail.com> Tested-by: Jon Hunter <jonathanh@nvidia.com> Tested-by: Salvatore Bonaccorso <carnil@debian.org> Tested-by: Brett A C Sheffield <bacs@librecast.net> Tested-by: Mark Brown <broonie@kernel.org> Tested-by: Luna Jernberg <droidbittin@gmail.com> Tested-by: Ronald Warsow <rwarsow@gmx.de> Tested-by: Justin M. Forbes <jforbes@fedoraproject.org> Tested-by: Ron Economos <re@w6rz.net> Tested-by: Miguel Ojeda <ojeda@kernel.org> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
577 lines
9.6 KiB
Devicetree
577 lines
9.6 KiB
Devicetree
// 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 <dt-bindings/pwm/pwm.h>
|
|
#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 = <PDO_FIXED(5000, 3000, PDO_FIXED_USB_COMM)>;
|
|
sink-pdos = <PDO_FIXED(5000, 3000, PDO_FIXED_USB_COMM)>;
|
|
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";
|
|
};
|