mirror of
https://github.com/torvalds/linux.git
synced 2026-05-29 17:43:52 +02:00
arm64: dts: ti: Add Aquila AM69 Support
Add support for the Toradex Aquila AM69 and its Development Carrier Board. The Aquila AM69 SoM is based on the TI AM69 SoC from the Jacinto 7 family and is designed for high-end embedded computing, featuring up to 32GB of LPDDR4 and 256GB eMMC storage, extensive multimedia support (3x Quad CSI, 2x Quad DSI, DisplayPort, 5x Audio I2S/TDM), six Ethernet interfaces (1x 1G, 4x 2.5G SGMII, 1x 10G), USB 3.2 Host/DRD support, and a Wi-Fi 7/BT 5.3 module, alongside an RX8130 RTC, I2C EEPROM and Temperature Sensor, and optional TPM 2.0 module. Various nodes, inherited from the SoC dtsi, are explicitly disabled in the SoM dtsi file (`status = disabled`) even if already disabled. These nodes need to be disabled in the SoM, given that the node is not complete there, explicitly disabling it limits the dependency on the SoC dtsi allowing for refactoring without no impact on this file. Link: https://www.toradex.com/computer-on-modules/aquila-arm-family/ti-am69 Link: https://www.toradex.com/products/carrier-board/aquila-development-board-kit Signed-off-by: Parth Pancholi <parth.pancholi@toradex.com> Co-developed-by: Emanuele Ghidoli <emanuele.ghidoli@toradex.com> Signed-off-by: Emanuele Ghidoli <emanuele.ghidoli@toradex.com> Co-developed-by: Ernest Van Hoecke <ernest.vanhoecke@toradex.com> Signed-off-by: Ernest Van Hoecke <ernest.vanhoecke@toradex.com> Co-developed-by: João Paulo Gonçalves <joao.goncalves@toradex.com> Signed-off-by: João Paulo Gonçalves <joao.goncalves@toradex.com> Co-developed-by: Francesco Dolcini <francesco.dolcini@toradex.com> Signed-off-by: Francesco Dolcini <francesco.dolcini@toradex.com> Link: https://patch.msgid.link/20251111175502.8847-3-francesco@dolcini.it Signed-off-by: Vignesh Raghavendra <vigneshr@ti.com>
This commit is contained in:
parent
2f6ef830a7
commit
39ac6623b1
|
|
@ -153,6 +153,7 @@ dtb-$(CONFIG_ARCH_K3) += k3-j722s-evm-csi2-quad-rpi-cam-imx219.dtbo
|
|||
dtb-$(CONFIG_ARCH_K3) += k3-j722s-evm-csi2-quad-tevi-ov5640.dtbo
|
||||
|
||||
# Boards with J784s4 SoC
|
||||
dtb-$(CONFIG_ARCH_K3) += k3-am69-aquila-dev.dtb
|
||||
dtb-$(CONFIG_ARCH_K3) += k3-am69-sk.dtb
|
||||
dtb-$(CONFIG_ARCH_K3) += k3-am69-sk-pcie0-ep.dtbo
|
||||
dtb-$(CONFIG_ARCH_K3) += k3-j784s4-evm.dtb
|
||||
|
|
|
|||
576
arch/arm64/boot/dts/ti/k3-am69-aquila-dev.dts
Normal file
576
arch/arm64/boot/dts/ti/k3-am69-aquila-dev.dts
Normal file
|
|
@ -0,0 +1,576 @@
|
|||
// 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";
|
||||
};
|
||||
1840
arch/arm64/boot/dts/ti/k3-am69-aquila.dtsi
Normal file
1840
arch/arm64/boot/dts/ti/k3-am69-aquila.dtsi
Normal file
File diff suppressed because it is too large
Load Diff
Loading…
Reference in New Issue
Block a user