arm64: dts: freescale: imx95-aquila: Add Clover carrier board

Add support for the Aquila i.MX95 SoM mated with the Clover carrier
board. Clover is a low-cost carrier board for the Aquila family
featuring a small form factor (Nano-ITX 120mm x 120mm) and built for
volume production.

Link: https://www.toradex.com/computer-on-modules/aquila-arm-family/nxp-imx95
Link: https://www.toradex.com/products/carrier-board/clover
Signed-off-by: Antoine Gouby <antoine.gouby@toradex.com>
Signed-off-by: Franz Schnyder <franz.schnyder@toradex.com>
Signed-off-by: Frank Li <Frank.Li@nxp.com>
This commit is contained in:
Antoine Gouby 2026-05-21 19:11:06 +02:00 committed by Frank Li
parent d5c082ba23
commit 3f519121e1
2 changed files with 286 additions and 0 deletions

View File

@ -637,6 +637,7 @@ dtb-$(CONFIG_ARCH_MXC) += imx95-15x15-frdm.dtb
dtb-$(CONFIG_ARCH_MXC) += imx95-19x19-evk.dtb
dtb-$(CONFIG_ARCH_MXC) += imx95-19x19-evk-sof.dtb
dtb-$(CONFIG_ARCH_MXC) += imx95-19x19-frdm-pro.dtb
dtb-$(CONFIG_ARCH_MXC) += imx95-aquila-clover.dtb
dtb-$(CONFIG_ARCH_MXC) += imx95-aquila-dev.dtb
dtb-$(CONFIG_ARCH_MXC) += imx95-toradex-smarc-dev.dtb
dtb-$(CONFIG_ARCH_MXC) += imx95-tqma9596sa-mb-smarc-2.dtb

View File

@ -0,0 +1,285 @@
// SPDX-License-Identifier: GPL-2.0-or-later OR MIT
/*
* Copyright (c) Toradex
*
* https://www.toradex.com/computer-on-modules/aquila-arm-family/nxp-imx95
* https://www.toradex.com/products/carrier-board/clover
*/
/dts-v1/;
#include <dt-bindings/pwm/pwm.h>
#include <dt-bindings/usb/pd.h>
#include "imx95-aquila.dtsi"
/ {
model = "Aquila iMX95 on Aquila Clover Board";
compatible = "toradex,aquila-imx95-clover",
"toradex,aquila-imx95",
"fsl,imx95";
aliases {
eeprom1 = &carrier_eeprom;
};
dp_1_connector: dp0-connector {
compatible = "dp-connector";
dp-pwr-supply = <&reg_dp_3p3v>;
type = "full-size";
port {
dp_1_connector_in: endpoint {
remote-endpoint = <&dsi2dp_out>;
};
};
};
reg_dp_3p3v: regulator-dp-3p3v {
compatible = "regulator-fixed";
pinctrl-names = "default";
pinctrl-0 = <&pinctrl_gpio_21_dp>;
/* Aquila GPIO_21_DP */
gpios = <&gpio3 21 GPIO_ACTIVE_HIGH>;
enable-active-high;
regulator-max-microvolt = <3300000>;
regulator-min-microvolt = <3300000>;
regulator-name = "DP_3V3";
startup-delay-us = <10000>;
};
};
/* Aquila ADC_[1-4] */
&adc1 {
status = "okay";
};
/* Aquila CTRL_WAKE1_MICO# */
&aquila_key_wake {
status = "okay";
};
&dsi2dp_out {
remote-endpoint = <&dp_1_connector_in>;
};
/* Aquila ETH_1 */
&enetc_port0 {
status = "okay";
};
/* Aquila CAN_1 */
&flexcan1 {
status = "okay";
};
/* Aquila CAN_2 */
&flexcan2 {
status = "okay";
};
/* Aquila CAN_3 */
&flexcan3 {
status = "okay";
};
/* Aquila CAN_4 */
&flexcan4 {
status = "okay";
};
/* Aquila QSPI_1 */
&flexspi1 {
pinctrl-0 = <&pinctrl_flexspi1_4bit>,
<&pinctrl_qspi_cs1>;
status = "okay";
flash@0 {
compatible = "jedec,spi-nor";
reg = <0x0>;
spi-max-frequency = <66000000>;
spi-rx-bus-width = <4>;
spi-tx-bus-width = <4>;
};
};
&gpio4 {
pinctrl-names = "default";
pinctrl-0 = <&pinctrl_gpio_1>,
<&pinctrl_gpio_2>,
<&pinctrl_gpio_3>,
<&pinctrl_gpio_4>;
};
/* Aquila I2C_2 */
&i3c2 {
status = "okay";
};
/* Aquila I2C_1 */
&lpi2c2 {
status = "okay";
fan_controller: fan@18 {
compatible = "ti,amc6821";
reg = <0x18>;
#pwm-cells = <2>;
fan {
cooling-levels = <255>;
pwms = <&fan_controller 40000 PWM_POLARITY_INVERTED>;
};
};
temperature-sensor@4f {
compatible = "ti,tmp1075";
reg = <0x4f>;
};
/* USB-C OTG (TCPC USB PD PHY) */
tcpc@52 {
compatible = "nxp,ptn5110", "tcpci";
reg = <0x52>;
interrupt-parent = <&som_gpio_expander_1>;
interrupts = <5 IRQ_TYPE_EDGE_FALLING>;
connector {
compatible = "usb-c-connector";
data-role = "dual";
op-sink-microwatt = <0>;
power-role = "dual";
self-powered;
sink-pdos = <PDO_FIXED(5000, 0, PDO_FIXED_USB_COMM)>;
source-pdos = <PDO_FIXED(5000, 3000, PDO_FIXED_USB_COMM)>;
try-power-role = "sink";
ports {
#address-cells = <1>;
#size-cells = <0>;
port@0 {
reg = <0>;
typec_con_hs: endpoint {
remote-endpoint = <&usb1_con_hs>;
};
};
port@1 {
reg = <1>;
typec_con_ss: endpoint {
remote-endpoint = <&usb1_con_ss>;
};
};
};
};
};
carrier_eeprom: eeprom@57 {
compatible = "st,24c02", "atmel,24c02";
reg = <0x57>;
pagesize = <16>;
};
};
/* Aquila I2C_6 */
&lpi2c5 {
status = "okay";
};
/* Aquila SPI_1 */
&lpspi6 {
pinctrl-names = "default";
pinctrl-0 = <&pinctrl_lpspi6 &pinctrl_gpio_5>;
cs-gpios = <&gpio2 0 GPIO_ACTIVE_LOW>, <&gpio4 18 GPIO_ACTIVE_LOW>;
status = "okay";
tpm@1 {
compatible = "infineon,slb9670", "tcg,tpm_tis-spi";
reg = <1>;
pinctrl-names = "default";
pinctrl-0 = <&pinctrl_gpio_6>;
interrupt-parent = <&gpio4>;
interrupts = <17 IRQ_TYPE_LEVEL_LOW>;
spi-max-frequency = <12000000>;
};
};
/* Aquila UART_3, used as the Linux Console */
&lpuart1 {
status = "okay";
};
/* Aquila UART_4 */
&lpuart2 {
status = "okay";
};
/* Aquila UART_1 */
&lpuart3 {
status = "okay";
};
/* Aquila UART_2 */
&lpuart7 {
status = "okay";
};
/* Aquila PCIE_1 */
&pcie0 {
status = "okay";
};
/* Aquila PWM_1 */
&tpm3 {
status = "okay";
};
/* Aquila PWM_3_DSI and PWM_4_DP */
&tpm5 {
status = "okay";
};
/* Aquila PWM_2 */
&tpm6 {
status = "okay";
};
/* Aquila USB_2, optional Bluetooth USB */
&usb2 {
status = "okay";
};
/* Aquila USB_1 */
&usb3 {
status = "okay";
};
&usb3_dwc3 {
status = "okay";
port {
usb1_con_hs: endpoint {
remote-endpoint = <&typec_con_hs>;
};
};
};
&usb3_phy {
orientation-switch;
status = "okay";
port {
usb1_con_ss: endpoint {
remote-endpoint = <&typec_con_ss>;
};
};
};
/* Aquila SD_1 */
&usdhc2 {
status = "okay";
};