Commit 90bbe88e authored by Max Krummenacher's avatar Max Krummenacher Committed by Shawn Guo
Browse files

arm64: dts: freescale: add Toradex SMARC iMX95

Add DT support for Toradex SMARC iMX95 SoM and Development carrier
board.

The module consists of an NXP i.MX95 family SoC, up to 16GB of LPDDR5
RAM and up to 128GB of storage, a USB 3.0 Host Hub and 2.0 OTG, two
Gigabit Ethernet PHYs, a 10 Gigabit Ethernet interface, an I2C EEPROM
and Temperature Sensor, an RX8130 RTC, a Quad/Dual lane CSI interface,
and some optional addons: TPM 2.0, DSI, LVDS, DisplayPort (through a
DSI-DP bridge), and Wi-Fi/BT module.

Link: https://www.toradex.com/computer-on-modules/smarc-arm-family/nxp-imx95
Link: https://www.toradex.com/products/carrier-board/smarc-development-board-kit


Signed-off-by: default avatarMax Krummenacher <max.krummenacher@toradex.com>
Co-developed-by: default avatarErnest Van Hoecke <ernest.vanhoecke@toradex.com>
Signed-off-by: default avatarErnest Van Hoecke <ernest.vanhoecke@toradex.com>
Co-developed-by: default avatarEmanuele Ghidoli <emanuele.ghidoli@toradex.com>
Signed-off-by: default avatarEmanuele Ghidoli <emanuele.ghidoli@toradex.com>
Co-developed-by: default avatarJoão Paulo Gonçalves <joao.goncalves@toradex.com>
Signed-off-by: default avatarJoão Paulo Gonçalves <joao.goncalves@toradex.com>
Co-developed-by: default avatarVitor Soares <vitor.soares@toradex.com>
Signed-off-by: default avatarVitor Soares <vitor.soares@toradex.com>
Co-developed-by: default avatarFrancesco Dolcini <francesco.dolcini@toradex.com>
Signed-off-by: default avatarFrancesco Dolcini <francesco.dolcini@toradex.com>
Signed-off-by: default avatarShawn Guo <shawnguo@kernel.org>
parent 691d5ccb
Loading
Loading
Loading
Loading
+1 −0
Original line number Diff line number Diff line
@@ -402,6 +402,7 @@ dtb-$(CONFIG_ARCH_MXC) += imx943-evk.dtb
dtb-$(CONFIG_ARCH_MXC) += imx95-15x15-evk.dtb
dtb-$(CONFIG_ARCH_MXC) += imx95-19x19-evk.dtb
dtb-$(CONFIG_ARCH_MXC) += imx95-19x19-evk-sof.dtb
dtb-$(CONFIG_ARCH_MXC) += imx95-toradex-smarc-dev.dtb
dtb-$(CONFIG_ARCH_MXC) += imx95-tqma9596sa-mb-smarc-2.dtb

imx95-15x15-evk-pcie0-ep-dtbs = imx95-15x15-evk.dtb imx-pcie0-ep.dtbo
+277 −0
Original line number Diff line number Diff line
// SPDX-License-Identifier: GPL-2.0-or-later OR MIT
/*
 * Copyright (C) 2025 Toradex
 *
 * https://www.toradex.com/computer-on-modules/smarc-arm-family/nxp-imx95
 * https://www.toradex.com/products/carrier-board/smarc-development-board-kit
 */

/dts-v1/;

#include <dt-bindings/pwm/pwm.h>
#include "imx95-toradex-smarc.dtsi"

/ {
	model = "Toradex SMARC iMX95 on Toradex SMARC Development Board";
	compatible = "toradex,smarc-imx95-dev",
		     "toradex,smarc-imx95",
		     "fsl,imx95";

	reg_carrier_1p8v: regulator-carrier-1p8v {
		compatible = "regulator-fixed";
		regulator-max-microvolt = <1800000>;
		regulator-min-microvolt = <1800000>;
		regulator-name = "On-carrier 1V8";
	};

	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,mclk-fs = <256>;
		simple-audio-card,name = "tdx-smarc-wm8904";
		simple-audio-card,routing =
			"Headphone Jack", "HPOUTL",
			"Headphone Jack", "HPOUTR",
			"IN2L", "Line In Jack",
			"IN2R", "Line In Jack",
			"Microphone Jack", "MICBIAS",
			"IN1L", "Microphone Jack";
		simple-audio-card,widgets =
			"Microphone", "Microphone Jack",
			"Headphone", "Headphone Jack",
			"Line", "Line In Jack";

		codec_dai: simple-audio-card,codec {
			clocks = <&scmi_clk IMX95_CLK_SAI3>;
			sound-dai = <&wm8904_1a>;
		};

		simple-audio-card,cpu {
			sound-dai = <&sai3>;
		};
	};
};

/* SMARC GBE0 */
&enetc_port0 {
	status = "okay";
};

/* SMARC GBE1 */
&enetc_port1 {
	status = "okay";
};

/* SMARC CAN0 */
&flexcan1 {
	status = "okay";
};

/* SMARC CAN1 */
&flexcan2 {
	status = "okay";
};

&gpio2 {
	pinctrl-names = "default";
	pinctrl-0 = <&pinctrl_gpio12>, <&pinctrl_gpio13>;
};

&gpio4 {
	pinctrl-names = "default";
	pinctrl-0 = <&pinctrl_gpio10>, <&pinctrl_gpio11>;
};

&gpio5 {
	pinctrl-names = "default";
	pinctrl-0 = <&pinctrl_gpio2>,
		    <&pinctrl_gpio3>,
		    <&pinctrl_gpio4>,
		    <&pinctrl_gpio6>,
		    <&pinctrl_gpio8>,
		    <&pinctrl_gpio9>;
};

/* SMARC I2C_CAM0 */
&i2c_cam0 {
	status = "okay";
};

/* SMARC I2C_CAM1 */
&i2c_cam1 {
	status = "okay";
};

/* SMARC I2C_GP */
&lpi2c2 {
	status = "okay";

	wm8904_1a: audio-codec@1a {
		compatible = "wlf,wm8904";
		reg = <0x1a>;
		pinctrl-names = "default";
		pinctrl-0 = <&pinctrl_sai3>, <&pinctrl_sai3_mclk>;
		#sound-dai-cells = <0>;
		clocks = <&scmi_clk IMX95_CLK_SAI3>;
		clock-names = "mclk";
		AVDD-supply = <&reg_carrier_1p8v>;
		CPVDD-supply = <&reg_carrier_1p8v>;
		DBVDD-supply = <&reg_carrier_1p8v>;
		DCVDD-supply = <&reg_carrier_1p8v>;
		MICVDD-supply = <&reg_carrier_1p8v>;
	};

	temperature-sensor@4f {
		compatible = "ti,tmp1075";
		reg = <0x4f>;
	};

	eeprom@57 {
		compatible = "st,24c02", "atmel,24c02";
		reg = <0x57>;
		pagesize = <16>;
	};

};

/* SMARC I2C_PM */
&lpi2c3 {
	clock-frequency = <100000>;
	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>;
		};
	};

	/* Current measurement into module VCC */
	hwmon@40 {
		compatible = "ti,ina226";
		reg = <0x40>;
		shunt-resistor = <5000>;
	};
};

/* SMARC I2C_LCD */
&lpi2c5 {
	status = "okay";

	i2c-mux@70 {
		compatible = "nxp,pca9543";
		reg = <0x70>;
		i2c-mux-idle-disconnect;
		#address-cells = <1>;
		#size-cells = <0>;

		/* I2C on DSI Connector Pins 4/6 */
		i2c_dsi_0: i2c@0 {
			reg = <0>;
			#address-cells = <1>;
			#size-cells = <0>;
		};

		/* I2C on DSI Connector Pins 52/54 */
		i2c_dsi_1: i2c@1 {
			reg = <1>;
			#address-cells = <1>;
			#size-cells = <0>;
		};
	};
};

/* SMARC SPI0 */
&lpspi6 {
	status = "okay";
};

/* SMARC SER1, used as the Linux Console */
&lpuart1 {
	status = "okay";
};

/* SMARC SER0, RS485 */
&lpuart2 {
	linux,rs485-enabled-at-boot-time;
	rs485-rts-active-low;
	rs485-rx-during-tx;
	status = "okay";
};

/* SMARC SER3, RS232 */
&lpuart3 {
	status = "okay";
};

/* SMARC MDIO, shared between all ethernet ports */
&netc_emdio {
	status = "okay";

	ethphy3: ethernet-phy@4 {
		reg = <4>;
		pinctrl-names = "default";
		pinctrl-0 = <&pinctrl_gpio7>;
		interrupt-parent = <&gpio5>;
		interrupts = <9 IRQ_TYPE_LEVEL_LOW>;
	};
};

/* SMARC PCIE_A / M2 Key B */
&pcie0 {
	status = "okay";
};

/* SMARC PCIE_B /  M2 Key E */
&pcie1 {
	status = "okay";
};

/* SMARC I2S0 */
&sai3 {
	status = "okay";
};

/* SMARC LCD0_BKLT_PWM */
&tpm3 {
	status = "okay";
};

/* SMARC LCD1_BKLT_PWM */
&tpm4 {
	status = "okay";
};

/* SMARC GPIO5 as PWM */
&tpm5 {
	status = "okay";
};

/* SMARC USB0 */
&usb2 {
	status = "okay";
};

/* SMARC USB1..4 */
&usb3 {
	status = "okay";
};

&usb3_dwc3 {
	status = "okay";
};

&usb3_phy {
	status = "okay";
};

/* SMARC SDIO */
&usdhc2 {
	status = "okay";
};
+1155 −0

File added.

Preview size limit exceeded, changes collapsed.