From nobody Mon Feb 9 12:25:11 2026 Received: from mail11.truemail.it (mail11.truemail.it [217.194.8.81]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 45F893491D5; Tue, 11 Nov 2025 17:55:25 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=217.194.8.81 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1762883727; cv=none; b=dlZ7WtGsCZZo/xQW89LJp9PiIDYNSmzb8F+P79P3LL5Y9o/rjQLQiaDVXfrpH/5tWu1c1wp+1bhm2dtKX6A03x9SMlvkhi1xcfyNI694TfXccQyBjrzWDXc4AkI6Q7BklIx5yxSqaUYcj1mrUq16Lf+hMfypzQ7sbMeF77kXfz0= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1762883727; c=relaxed/simple; bh=S3CR/rmWKIuSpNmdeh2++bl9oPDtVQyELsrTudhf3bY=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version:Content-Type; b=IfpddJVZcMl3sM8gXVtOfG+7RKWosyePh9sLNaEBAVk3sM36CzmKorCsiFfbI9HvStuqBcbcqwsfUUklGU8YAWkMdypsz0vRZyK8lumKqnIctkRcFTTGiZt2i0o4lAVGzj62ZP8kCY8oJtccQBJ089y0+R3Gveg8pszaiZM0B3E= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=dolcini.it; spf=pass smtp.mailfrom=dolcini.it; dkim=pass (2048-bit key) header.d=dolcini.it header.i=@dolcini.it header.b=T+fuFweA; arc=none smtp.client-ip=217.194.8.81 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=dolcini.it Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=dolcini.it Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=dolcini.it header.i=@dolcini.it header.b="T+fuFweA" Received: from localhost.localdomain (93-49-2-63.ip317.fastwebnet.it [93.49.2.63]) by mail11.truemail.it (Postfix) with ESMTPA id C9B032066A; Tue, 11 Nov 2025 18:55:22 +0100 (CET) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=dolcini.it; s=default; t=1762883723; bh=Eaip8AdhOCbRHgTWtwEuZ3MgJilgQehobKZmsLCH+jk=; h=From:To:Subject; b=T+fuFweACLg2cZyxBZkq1GWczh31MR+AqTLj1QNnPm7wDaa/DEyiKwThSXr/q6tOp dIhibU2EB2fSggrcMmDL0YBFzXq0jbG7HizJizpZyxzAgFU4TtYyqbcrRqsx4IGL4R kfWw/Sru8deUAVHOfnpMYLfz214K5BuxlRG9xSr6SiRTVMqnQ0aq/1J5QCMspAtEcv d40cYKnpm2vK5q2wO6Sj2XQ/Kls8g5ABrxFkLvtMtuXkedXHJA6yMebEAVShcpfCxL zNAvE+z/B2Fr9S4MVoD0mRt4FwyKyf2aAuPZpFIkQUSZSUUmcfxWX8v8G2hhWlP2dD 8k9rnOe8RrWQg== From: Francesco Dolcini To: Nishanth Menon , Vignesh Raghavendra , Tero Kristo , Rob Herring , Krzysztof Kozlowski , Conor Dooley Cc: =?UTF-8?q?Jo=C3=A3o=20Paulo=20Gon=C3=A7alves?= , linux-arm-kernel@lists.infradead.org, devicetree@vger.kernel.org, linux-kernel@vger.kernel.org, Francesco Dolcini Subject: [PATCH v2 3/3] arm64: dts: ti: am69-aquila: Add Clover Date: Tue, 11 Nov 2025 18:54:59 +0100 Message-ID: <20251111175502.8847-4-francesco@dolcini.it> X-Mailer: git-send-email 2.47.3 In-Reply-To: <20251111175502.8847-1-francesco@dolcini.it> References: <20251111175502.8847-1-francesco@dolcini.it> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable From: Jo=C3=A3o Paulo Gon=C3=A7alves Add support for Aquila AM69 mated with Clover carrier board. Link: https://www.toradex.com/computer-on-modules/aquila-arm-family/ti-am69 Link: https://www.toradex.com/products/carrier-board/clover Signed-off-by: Jo=C3=A3o Paulo Gon=C3=A7alves Signed-off-by: Francesco Dolcini --- v2: no changes --- arch/arm64/boot/dts/ti/Makefile | 1 + .../boot/dts/ti/k3-am69-aquila-clover.dts | 451 ++++++++++++++++++ 2 files changed, 452 insertions(+) create mode 100644 arch/arm64/boot/dts/ti/k3-am69-aquila-clover.dts diff --git a/arch/arm64/boot/dts/ti/Makefile b/arch/arm64/boot/dts/ti/Makef= ile index 6ce652fe98fa..38a93b689fe7 100644 --- a/arch/arm64/boot/dts/ti/Makefile +++ b/arch/arm64/boot/dts/ti/Makefile @@ -153,6 +153,7 @@ dtb-$(CONFIG_ARCH_K3) +=3D k3-j722s-evm-csi2-quad-rpi-c= am-imx219.dtbo dtb-$(CONFIG_ARCH_K3) +=3D k3-j722s-evm-csi2-quad-tevi-ov5640.dtbo =20 # Boards with J784s4 SoC +dtb-$(CONFIG_ARCH_K3) +=3D k3-am69-aquila-clover.dtb dtb-$(CONFIG_ARCH_K3) +=3D k3-am69-aquila-dev.dtb dtb-$(CONFIG_ARCH_K3) +=3D k3-am69-sk.dtb dtb-$(CONFIG_ARCH_K3) +=3D k3-am69-sk-pcie0-ep.dtbo diff --git a/arch/arm64/boot/dts/ti/k3-am69-aquila-clover.dts b/arch/arm64/= boot/dts/ti/k3-am69-aquila-clover.dts new file mode 100644 index 000000000000..55fd214a82e4 --- /dev/null +++ b/arch/arm64/boot/dts/ti/k3-am69-aquila-clover.dts @@ -0,0 +1,451 @@ +// 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/clover + */ + +/dts-v1/; + +#include +#include "k3-am69-aquila.dtsi" + +/ { + model =3D "Toradex Aquila AM69 on Clover Board"; + compatible =3D "toradex,aquila-am69-clover", + "toradex,aquila-am69", + "ti,j784s4"; + + aliases { + eeprom1 =3D &carrier_eeprom; + }; + + reg_3v3_dp: regulator-3v3-dp { + compatible =3D "regulator-fixed"; + pinctrl-names =3D "default"; + pinctrl-0 =3D <&pinctrl_gpio_21_dp>; + /* Aquila GPIO_21_DP (AQUILA B57) */ + gpio =3D <&main_gpio0 37 GPIO_ACTIVE_HIGH>; + enable-active-high; + regulator-max-microvolt =3D <3300000>; + regulator-min-microvolt =3D <3300000>; + regulator-name =3D "DP_3V3"; + startup-delay-us =3D <10000>; + }; + + /* Aquila DP_1 */ + dp-connector { + compatible =3D "dp-connector"; + dp-pwr-supply =3D <®_3v3_dp>; + label =3D "Display Port"; + type =3D "full-size"; + + port { + dp_connector_in: endpoint { + remote-endpoint =3D <&dp0_out>; + }; + }; + }; +}; + +/* On-module ETH_1 MDIO */ +&davinci_mdio { + status =3D "okay"; +}; + +&dp0_ports { + port@4 { + reg =3D <4>; + dp0_out: endpoint { + remote-endpoint =3D <&dp_connector_in>; + }; + }; +}; + +&dss { + status =3D "okay"; +}; + +&main0_thermal { + cooling-maps { + map0 { + cooling-device =3D <&fan 1 1>; + trip =3D <&main0_alert0>; + }; + + map1 { + cooling-device =3D <&fan 2 2>; + trip =3D <&main0_alert1>; + }; + }; +}; + +&main1_thermal { + cooling-maps { + map0 { + cooling-device =3D <&fan 1 1>; + trip =3D <&main1_alert0>; + }; + + map1 { + cooling-device =3D <&fan 2 2>; + trip =3D <&main1_alert1>; + }; + }; +}; + +&main2_thermal { + cooling-maps { + map0 { + cooling-device =3D <&fan 1 1>; + trip =3D <&main2_alert0>; + }; + + map1 { + cooling-device =3D <&fan 2 2>; + trip =3D <&main2_alert1>; + }; + }; +}; + +&main3_thermal { + cooling-maps { + map0 { + cooling-device =3D <&fan 1 1>; + trip =3D <&main3_alert0>; + }; + + map1 { + cooling-device =3D <&fan 2 2>; + trip =3D <&main3_alert1>; + }; + }; +}; + +&main4_thermal { + cooling-maps { + map0 { + cooling-device =3D <&fan 1 1>; + trip =3D <&main4_alert0>; + }; + + map1 { + cooling-device =3D <&fan 2 2>; + trip =3D <&main4_alert1>; + }; + }; +}; + +/* Aquila ETH_2 */ +&main_cpsw0 { + status =3D "okay"; +}; + +/* Aquila ETH_2 SGMII PHY */ +&main_cpsw0_port8 { + phy-handle =3D <&cpsw0_port8_phy4>; + status =3D "okay"; +}; + +/* Aquila ETH_2_XGMII_MDIO */ +&main_cpsw0_mdio { + status =3D "okay"; + + cpsw0_port8_phy4: ethernet-phy@4 { + reg =3D <4>; + pinctrl-names =3D "default"; + pinctrl-0 =3D <&pinctrl_eth2_int>; + interrupt-parent =3D <&main_gpio0>; + interrupts =3D <44 IRQ_TYPE_EDGE_FALLING>; + }; +}; + +/* Aquila PWM_1 */ +&main_ehrpwm0 { + status =3D "okay"; +}; + +/* Aquila PWM_2 */ +&main_ehrpwm1 { + status =3D "okay"; +}; + +&main_gpio0 { + pinctrl-names =3D "default"; + pinctrl-0 =3D <&pinctrl_gpio_01>, /* Aquila GPIO_01 */ + <&pinctrl_gpio_02>, /* Aquila GPIO_02 */ + <&pinctrl_gpio_03>; /* Aquila GPIO_03 */ +}; + +/* Aquila I2C_6 */ +&main_i2c5 { + status =3D "okay"; +}; + +/* Aquila CAN_1 */ +&main_mcan10 { + status =3D "okay"; +}; + +/* Aquila CAN_3 */ +&main_mcan13 { + status =3D "okay"; +}; + +/* Aquila SD_1 */ +&main_sdhci1 { + status =3D "okay"; +}; + +/* Aquila SPI_2 */ +&main_spi0 { + status =3D "okay"; +}; + +/* Aquila SPI_1 */ +&main_spi2 { + pinctrl-0 =3D <&pinctrl_main_spi2>, + <&pinctrl_main_spi2_cs0>, + <&pinctrl_gpio_05>; + cs-gpios =3D <0>, <&wkup_gpio0 29 GPIO_ACTIVE_LOW>; + status =3D "okay"; + + tpm@1 { + compatible =3D "infineon,slb9670", "tcg,tpm_tis-spi"; + reg =3D <1>; + pinctrl-names =3D "default"; + pinctrl-0 =3D <&pinctrl_gpio_06>; + interrupt-parent =3D <&wkup_gpio0>; + interrupts =3D <30 IRQ_TYPE_EDGE_FALLING>; + spi-max-frequency =3D <18500000>; + }; +}; + +/* Aquila UART_1 */ +&main_uart4 { + status =3D "okay"; +}; + +/* Aquila UART_3, used as the Linux console */ +&main_uart8 { + status =3D "okay"; +}; + +&mcu_cpsw { + status =3D "okay"; +}; + +/* On-module ETH_1 RGMII */ +&mcu_cpsw_port1 { + status =3D "okay"; +}; + +/* Aquila I2C_1 */ +&mcu_i2c0 { + clock-frequency =3D <100000>; + status =3D "okay"; + + fan_controller: fan@18 { + compatible =3D "ti,amc6821"; + reg =3D <0x18>; + #pwm-cells =3D <2>; + + fan: fan { + cooling-levels =3D <102 179 255>; + #cooling-cells =3D <2>; + pwms =3D <&fan_controller 40000 PWM_POLARITY_INVERTED>; + }; + }; + + temperature-sensor@4f { + compatible =3D "ti,tmp1075"; + reg =3D <0x4f>; + }; + + /* USB-C OTG (TCPC USB PD PHY) */ + tcpc@52 { + compatible =3D "nxp,ptn5110", "tcpci"; + reg =3D <0x52>; + pinctrl-names =3D "default"; + pinctrl-0 =3D <&pinctrl_usb1_int>; + interrupt-parent =3D <&main_gpio0>; + interrupts =3D <28 IRQ_TYPE_EDGE_FALLING>; + + connector { + compatible =3D "usb-c-connector"; + data-role =3D "dual"; + label =3D "USB-C OTG"; + power-role =3D "dual"; + try-power-role =3D "sink"; + self-powered; + source-pdos =3D ; + sink-pdos =3D ; + op-sink-microwatt =3D <1000000>; + + ports { + #address-cells =3D <1>; + #size-cells =3D <0>; + + port@0 { + reg =3D <0>; + + usb_1_con_hs: endpoint { + remote-endpoint =3D <&usb0_hs>; + }; + }; + + port@1 { + reg =3D <1>; + + usb_1_con_ss: endpoint { + remote-endpoint =3D <&usb0_ss_mux>; + }; + }; + }; + }; + }; + + carrier_eeprom: eeprom@57 { + compatible =3D "st,24c02", "atmel,24c02"; + reg =3D <0x57>; + pagesize =3D <16>; + }; +}; + +/* Aquila I2C_2 */ +&mcu_i2c1 { + status =3D "okay"; +}; + +/* Aquila CAN_2 */ +&mcu_mcan0 { + status =3D "okay"; +}; + +/* Aquila CAN_4 */ +&mcu_mcan1 { + status =3D "okay"; +}; + +/* Aquila UART_4 */ +&mcu_uart0 { + status =3D "okay"; +}; + +&mhdp { + status =3D "okay"; +}; + +/* Aquila QSPI_1 */ +&ospi0 { + pinctrl-names =3D "default"; + pinctrl-0 =3D <&pinctrl_mcu_ospi0_4bit>, <&pinctrl_mcu_ospi0_cs0>; + status =3D "okay"; + + flash@0 { + compatible =3D "jedec,spi-nor"; + reg =3D <0>; + spi-max-frequency =3D <66000000>; + spi-rx-bus-width =3D <4>; + spi-tx-bus-width =3D <4>; + cdns,read-delay =3D <0>; + cdns,tchsh-ns =3D <3>; + cdns,tsd2d-ns =3D <10>; + cdns,tshsl-ns =3D <30>; + cdns,tslch-ns =3D <8>; + }; +}; + +/* Aquila PCIE_1 */ +&pcie0_rc { + status =3D "okay"; +}; + +/* Aquila PCIE_2 */ +&pcie1_rc { + status =3D "okay"; +}; + +&serdes2 { + status =3D "okay"; +}; + +&serdes4 { + status =3D "okay"; +}; + +&serdes_wiz2 { + status =3D "okay"; +}; + +&serdes_wiz4 { + status =3D "okay"; +}; + +/* Aquila ADC_[1-4] */ +&tscadc0 { + status =3D "okay"; +}; + +&usbss0 { + status =3D "okay"; +}; + +&usb0ss_mux { + status =3D "okay"; + + port { + usb0_ss_mux: endpoint { + remote-endpoint =3D <&usb_1_con_ss>; + }; + }; +}; + +&usb0 { + status =3D "okay"; + + port { + usb0_hs: endpoint { + remote-endpoint =3D <&usb_1_con_hs>; + }; + }; +}; + +&wkup0_thermal { + cooling-maps { + map0 { + cooling-device =3D <&fan 1 1>; + trip =3D <&wkup0_alert0>; + }; + + map1 { + cooling-device =3D <&fan 2 2>; + trip =3D <&wkup0_alert1>; + }; + }; +}; + +&wkup1_thermal { + cooling-maps { + map0 { + cooling-device =3D <&fan 1 1>; + trip =3D <&wkup1_alert0>; + }; + + map1 { + cooling-device =3D <&fan 2 2>; + trip =3D <&wkup1_alert1>; + }; + }; +}; + +&wkup_gpio0 { + pinctrl-names =3D "default"; + pinctrl-0 =3D <&pinctrl_gpio_04>; /* Aquila GPIO_04 */ +}; + +/* Aquila UART_2 */ +&wkup_uart0 { + status =3D "okay"; +}; --=20 2.47.3