xref: /linux/arch/arm64/boot/dts/freescale/imx8mp-toradex-smarc-dev.dts (revision ec71f661a572a770d7c861cd52a50cbbb0e1a8d1)
197dc91c0SVitor Soares// SPDX-License-Identifier: GPL-2.0-or-later OR MIT
297dc91c0SVitor Soares/* Copyright (C) 2025 Toradex */
397dc91c0SVitor Soares
497dc91c0SVitor Soares/dts-v1/;
597dc91c0SVitor Soares
6*8c7432dcSFrancesco Dolcini#include <dt-bindings/pwm/pwm.h>
7*8c7432dcSFrancesco Dolcini
897dc91c0SVitor Soares#include "imx8mp-toradex-smarc.dtsi"
997dc91c0SVitor Soares
1097dc91c0SVitor Soares/ {
1197dc91c0SVitor Soares	model = "Toradex SMARC iMX8M Plus on Toradex SMARC Development Board";
1297dc91c0SVitor Soares	compatible = "toradex,smarc-imx8mp-dev",
1397dc91c0SVitor Soares		     "toradex,smarc-imx8mp",
1497dc91c0SVitor Soares		     "fsl,imx8mp";
1597dc91c0SVitor Soares
1697dc91c0SVitor Soares	hdmi-connector {
1797dc91c0SVitor Soares		compatible = "hdmi-connector";
1897dc91c0SVitor Soares		label = "J64";
1997dc91c0SVitor Soares		type = "a";
2097dc91c0SVitor Soares
2197dc91c0SVitor Soares		port {
2297dc91c0SVitor Soares			native_hdmi_connector_in: endpoint {
2397dc91c0SVitor Soares				remote-endpoint = <&hdmi_tx_out>;
2497dc91c0SVitor Soares			};
2597dc91c0SVitor Soares		};
2697dc91c0SVitor Soares	};
2797dc91c0SVitor Soares
2897dc91c0SVitor Soares	reg_carrier_1p8v: regulator-carrier-1p8v {
2997dc91c0SVitor Soares		compatible = "regulator-fixed";
3097dc91c0SVitor Soares		regulator-max-microvolt = <1800000>;
3197dc91c0SVitor Soares		regulator-min-microvolt = <1800000>;
3297dc91c0SVitor Soares		regulator-name = "On-carrier 1V8";
3397dc91c0SVitor Soares	};
3497dc91c0SVitor Soares
3597dc91c0SVitor Soares	sound {
3697dc91c0SVitor Soares		compatible = "simple-audio-card";
3797dc91c0SVitor Soares		simple-audio-card,bitclock-master = <&codec_dai>;
3897dc91c0SVitor Soares		simple-audio-card,format = "i2s";
3997dc91c0SVitor Soares		simple-audio-card,frame-master = <&codec_dai>;
4097dc91c0SVitor Soares		simple-audio-card,mclk-fs = <256>;
4197dc91c0SVitor Soares		simple-audio-card,name = "tdx-smarc-wm8904";
4297dc91c0SVitor Soares		simple-audio-card,routing =
4397dc91c0SVitor Soares			"Headphone Jack", "HPOUTL",
4497dc91c0SVitor Soares			"Headphone Jack", "HPOUTR",
4597dc91c0SVitor Soares			"IN2L", "Line In Jack",
4697dc91c0SVitor Soares			"IN2R", "Line In Jack",
4797dc91c0SVitor Soares			"Microphone Jack", "MICBIAS",
4897dc91c0SVitor Soares			"IN1L", "Microphone Jack";
4997dc91c0SVitor Soares		simple-audio-card,widgets =
5097dc91c0SVitor Soares			"Microphone", "Microphone Jack",
5197dc91c0SVitor Soares			"Headphone", "Headphone Jack",
5297dc91c0SVitor Soares			"Line", "Line In Jack";
5397dc91c0SVitor Soares
5497dc91c0SVitor Soares		codec_dai: simple-audio-card,codec {
5597dc91c0SVitor Soares			clocks = <&audio_blk_ctrl IMX8MP_CLK_AUDIOMIX_SAI1_MCLK1>;
5697dc91c0SVitor Soares			sound-dai = <&wm8904_1a>;
5797dc91c0SVitor Soares		};
5897dc91c0SVitor Soares
5997dc91c0SVitor Soares		simple-audio-card,cpu {
6097dc91c0SVitor Soares			sound-dai = <&sai1>;
6197dc91c0SVitor Soares		};
6297dc91c0SVitor Soares	};
6397dc91c0SVitor Soares};
6497dc91c0SVitor Soares
6597dc91c0SVitor Soares&aud2htx {
6697dc91c0SVitor Soares	status = "okay";
6797dc91c0SVitor Soares};
6897dc91c0SVitor Soares
6997dc91c0SVitor Soares/* SMARC SPI0 */
7097dc91c0SVitor Soares&ecspi1 {
7197dc91c0SVitor Soares	status = "okay";
7297dc91c0SVitor Soares};
7397dc91c0SVitor Soares
7497dc91c0SVitor Soares/* SMARC GBE0 */
7597dc91c0SVitor Soares&eqos {
7697dc91c0SVitor Soares	status = "okay";
7797dc91c0SVitor Soares};
7897dc91c0SVitor Soares
7997dc91c0SVitor Soares/* SMARC GBE1 */
8097dc91c0SVitor Soares&fec {
8197dc91c0SVitor Soares	status = "okay";
8297dc91c0SVitor Soares};
8397dc91c0SVitor Soares
8497dc91c0SVitor Soares/* SMARC CAN1 */
8597dc91c0SVitor Soares&flexcan1 {
8697dc91c0SVitor Soares	status = "okay";
8797dc91c0SVitor Soares};
8897dc91c0SVitor Soares
8997dc91c0SVitor Soares/* SMARC CAN0 */
9097dc91c0SVitor Soares&flexcan2 {
9197dc91c0SVitor Soares	status = "okay";
9297dc91c0SVitor Soares};
9397dc91c0SVitor Soares
9497dc91c0SVitor Soares&gpio1 {
9597dc91c0SVitor Soares	pinctrl-names = "default";
9697dc91c0SVitor Soares	pinctrl-0 = <&pinctrl_gpio7>,
9797dc91c0SVitor Soares		    <&pinctrl_gpio8>,
9897dc91c0SVitor Soares		    <&pinctrl_gpio9>,
9997dc91c0SVitor Soares		    <&pinctrl_gpio10>,
10097dc91c0SVitor Soares		    <&pinctrl_gpio11>,
10197dc91c0SVitor Soares		    <&pinctrl_gpio12>,
10297dc91c0SVitor Soares		    <&pinctrl_gpio13>;
10397dc91c0SVitor Soares};
10497dc91c0SVitor Soares
10597dc91c0SVitor Soares&gpio3 {
10697dc91c0SVitor Soares	pinctrl-names = "default";
10797dc91c0SVitor Soares	pinctrl-0 = <&pinctrl_lvds_dsi_sel>;
10897dc91c0SVitor Soares};
10997dc91c0SVitor Soares
11097dc91c0SVitor Soares&gpio4 {
11197dc91c0SVitor Soares	pinctrl-names = "default";
11297dc91c0SVitor Soares	pinctrl-0 = <&pinctrl_gpio4>, <&pinctrl_gpio6>;
11397dc91c0SVitor Soares};
11497dc91c0SVitor Soares
11597dc91c0SVitor Soares&hdmi_pvi {
11697dc91c0SVitor Soares	status = "okay";
11797dc91c0SVitor Soares};
11897dc91c0SVitor Soares
11997dc91c0SVitor Soares/* SMARC HDMI */
12097dc91c0SVitor Soares&hdmi_tx {
12197dc91c0SVitor Soares	status = "okay";
12297dc91c0SVitor Soares
12397dc91c0SVitor Soares	ports {
12497dc91c0SVitor Soares		port@1 {
12597dc91c0SVitor Soares			hdmi_tx_out: endpoint {
12697dc91c0SVitor Soares				remote-endpoint = <&native_hdmi_connector_in>;
12797dc91c0SVitor Soares			};
12897dc91c0SVitor Soares		};
12997dc91c0SVitor Soares	};
13097dc91c0SVitor Soares};
13197dc91c0SVitor Soares
13297dc91c0SVitor Soares&hdmi_tx_phy {
13397dc91c0SVitor Soares	status = "okay";
13497dc91c0SVitor Soares};
13597dc91c0SVitor Soares
13697dc91c0SVitor Soares/* SMARC I2C_LCD */
13797dc91c0SVitor Soares&i2c2 {
13897dc91c0SVitor Soares	status = "okay";
13997dc91c0SVitor Soares
14097dc91c0SVitor Soares	i2c-mux@70 {
14197dc91c0SVitor Soares		compatible = "nxp,pca9543";
14297dc91c0SVitor Soares		reg = <0x70>;
14397dc91c0SVitor Soares		#address-cells = <1>;
14497dc91c0SVitor Soares		#size-cells = <0>;
14597dc91c0SVitor Soares
14697dc91c0SVitor Soares		/* I2C on DSI Connector Pins 4/6 */
14797dc91c0SVitor Soares		i2c_dsi_0: i2c@0 {
14897dc91c0SVitor Soares			reg = <0>;
14997dc91c0SVitor Soares			#address-cells = <1>;
15097dc91c0SVitor Soares			#size-cells = <0>;
15197dc91c0SVitor Soares		};
15297dc91c0SVitor Soares
15397dc91c0SVitor Soares		/* I2C on DSI Connector Pins 52/54 */
15497dc91c0SVitor Soares		i2c_dsi_1: i2c@1 {
15597dc91c0SVitor Soares			reg = <1>;
15697dc91c0SVitor Soares			#address-cells = <1>;
15797dc91c0SVitor Soares			#size-cells = <0>;
15897dc91c0SVitor Soares		};
15997dc91c0SVitor Soares	};
16097dc91c0SVitor Soares};
16197dc91c0SVitor Soares
16297dc91c0SVitor Soares/* SMARC I2C_CAM0 */
16397dc91c0SVitor Soares&i2c3 {
16497dc91c0SVitor Soares	status = "okay";
16597dc91c0SVitor Soares};
16697dc91c0SVitor Soares
16797dc91c0SVitor Soares/* SMARC I2C_GP */
16897dc91c0SVitor Soares&i2c4 {
16997dc91c0SVitor Soares	/* Audio Codec */
17097dc91c0SVitor Soares	wm8904_1a: audio-codec@1a {
17197dc91c0SVitor Soares		compatible = "wlf,wm8904";
17297dc91c0SVitor Soares		reg = <0x1a>;
17397dc91c0SVitor Soares		pinctrl-names = "default";
17497dc91c0SVitor Soares		pinctrl-0 = <&pinctrl_sai1>, <&pinctrl_sai1_mclk>;
17597dc91c0SVitor Soares		#sound-dai-cells = <0>;
17697dc91c0SVitor Soares		clocks = <&audio_blk_ctrl IMX8MP_CLK_AUDIOMIX_SAI1_MCLK1>;
17797dc91c0SVitor Soares		clock-names = "mclk";
17897dc91c0SVitor Soares		AVDD-supply = <&reg_carrier_1p8v>;
17997dc91c0SVitor Soares		CPVDD-supply = <&reg_carrier_1p8v>;
18097dc91c0SVitor Soares		DBVDD-supply = <&reg_carrier_1p8v>;
18197dc91c0SVitor Soares		DCVDD-supply = <&reg_carrier_1p8v>;
18297dc91c0SVitor Soares		MICVDD-supply = <&reg_carrier_1p8v>;
18397dc91c0SVitor Soares	};
18497dc91c0SVitor Soares
18597dc91c0SVitor Soares	/* On-Carrier Temperature Sensor */
18697dc91c0SVitor Soares	temperature-sensor@4f {
18797dc91c0SVitor Soares		compatible = "ti,tmp1075";
18897dc91c0SVitor Soares		reg = <0x4f>;
18997dc91c0SVitor Soares	};
19097dc91c0SVitor Soares
19197dc91c0SVitor Soares	/* On-Carrier EEPROM */
19297dc91c0SVitor Soares	eeprom@57 {
19397dc91c0SVitor Soares		compatible = "st,24c02", "atmel,24c02";
19497dc91c0SVitor Soares		reg = <0x57>;
19597dc91c0SVitor Soares		pagesize = <16>;
19697dc91c0SVitor Soares	};
19797dc91c0SVitor Soares};
19897dc91c0SVitor Soares
19997dc91c0SVitor Soares/* SMARC I2C_CAM1 */
20097dc91c0SVitor Soares&i2c5 {
20197dc91c0SVitor Soares	status = "okay";
20297dc91c0SVitor Soares};
20397dc91c0SVitor Soares
20497dc91c0SVitor Soares/* SMARC I2C_PM */
20597dc91c0SVitor Soares&i2c6 {
20697dc91c0SVitor Soares	clock-frequency = <100000>;
20797dc91c0SVitor Soares	status = "okay";
20897dc91c0SVitor Soares
20997dc91c0SVitor Soares	/* Fan controller */
210*8c7432dcSFrancesco Dolcini	fan_controller: fan@18 {
21197dc91c0SVitor Soares		compatible = "ti,amc6821";
21297dc91c0SVitor Soares		reg = <0x18>;
213*8c7432dcSFrancesco Dolcini		#pwm-cells = <2>;
214*8c7432dcSFrancesco Dolcini
215*8c7432dcSFrancesco Dolcini		fan {
216*8c7432dcSFrancesco Dolcini			pwms = <&fan_controller 40000 PWM_POLARITY_INVERTED>;
217*8c7432dcSFrancesco Dolcini		};
21897dc91c0SVitor Soares	};
21997dc91c0SVitor Soares
22097dc91c0SVitor Soares	/* Current measurement into module VDD */
22197dc91c0SVitor Soares	hwmon@40 {
22297dc91c0SVitor Soares		compatible = "ti,ina226";
22397dc91c0SVitor Soares		reg = <0x40>;
22497dc91c0SVitor Soares		shunt-resistor = <5000>;
22597dc91c0SVitor Soares	};
22697dc91c0SVitor Soares};
22797dc91c0SVitor Soares
22897dc91c0SVitor Soares&lcdif3 {
22997dc91c0SVitor Soares	status = "okay";
23097dc91c0SVitor Soares};
23197dc91c0SVitor Soares
23297dc91c0SVitor Soares/* SMARC PCIE_A, M2 Key B */
23397dc91c0SVitor Soares&pcie {
23497dc91c0SVitor Soares	status = "okay";
23597dc91c0SVitor Soares};
23697dc91c0SVitor Soares
23797dc91c0SVitor Soares&pcie_phy {
23897dc91c0SVitor Soares	status = "okay";
23997dc91c0SVitor Soares};
24097dc91c0SVitor Soares
24197dc91c0SVitor Soares/* SMARC LCD1_BKLT_PWM */
24297dc91c0SVitor Soares&pwm1 {
24397dc91c0SVitor Soares	status = "okay";
24497dc91c0SVitor Soares};
24597dc91c0SVitor Soares
24697dc91c0SVitor Soares/* SMARC LCD0_BKLT_PWM */
24797dc91c0SVitor Soares&pwm2 {
24897dc91c0SVitor Soares	status = "okay";
24997dc91c0SVitor Soares};
25097dc91c0SVitor Soares
25197dc91c0SVitor Soares/* SMARC I2S0 */
25297dc91c0SVitor Soares&sai1 {
25397dc91c0SVitor Soares	assigned-clocks = <&clk IMX8MP_CLK_SAI1>;
25497dc91c0SVitor Soares	assigned-clock-parents = <&clk IMX8MP_AUDIO_PLL1_OUT>;
25597dc91c0SVitor Soares	assigned-clock-rates = <24576000>;
25697dc91c0SVitor Soares	fsl,sai-mclk-direction-output;
25797dc91c0SVitor Soares	status = "okay";
25897dc91c0SVitor Soares};
25997dc91c0SVitor Soares
26097dc91c0SVitor Soares/* SMARC HDMI Audio */
26197dc91c0SVitor Soares&sound_hdmi {
26297dc91c0SVitor Soares	status = "okay";
26397dc91c0SVitor Soares};
26497dc91c0SVitor Soares
26597dc91c0SVitor Soares/* SMARC SER0, RS485. Optional M.2 KEY E */
26697dc91c0SVitor Soares&uart1 {
26797dc91c0SVitor Soares	linux,rs485-enabled-at-boot-time;
26897dc91c0SVitor Soares	rs485-rts-active-low;
26997dc91c0SVitor Soares	rs485-rx-during-tx;
27097dc91c0SVitor Soares	status = "okay";
27197dc91c0SVitor Soares};
27297dc91c0SVitor Soares
27397dc91c0SVitor Soares/* SMARC SER2 */
27497dc91c0SVitor Soares&uart2 {
27597dc91c0SVitor Soares	status = "okay";
27697dc91c0SVitor Soares};
27797dc91c0SVitor Soares
27897dc91c0SVitor Soares/* SMARC SER1, used as the Linux Console */
27997dc91c0SVitor Soares&uart4 {
28097dc91c0SVitor Soares	status = "okay";
28197dc91c0SVitor Soares};
28297dc91c0SVitor Soares
28397dc91c0SVitor Soares/* SMARC USB0 */
28497dc91c0SVitor Soares&usb3_0 {
28597dc91c0SVitor Soares	status = "okay";
28697dc91c0SVitor Soares};
28797dc91c0SVitor Soares
28897dc91c0SVitor Soares/* SMARC USB1..4 */
28997dc91c0SVitor Soares&usb3_1 {
29097dc91c0SVitor Soares	status = "okay";
29197dc91c0SVitor Soares};
29297dc91c0SVitor Soares
29397dc91c0SVitor Soares&usb3_phy0 {
29497dc91c0SVitor Soares	status = "okay";
29597dc91c0SVitor Soares};
29697dc91c0SVitor Soares
29797dc91c0SVitor Soares&usb3_phy1 {
29897dc91c0SVitor Soares	status = "okay";
29997dc91c0SVitor Soares};
30097dc91c0SVitor Soares
30197dc91c0SVitor Soares/* SMARC SDIO */
30297dc91c0SVitor Soares&usdhc2 {
30397dc91c0SVitor Soares	status = "okay";
30497dc91c0SVitor Soares};
305