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 = <®_carrier_1p8v>; 17997dc91c0SVitor Soares CPVDD-supply = <®_carrier_1p8v>; 18097dc91c0SVitor Soares DBVDD-supply = <®_carrier_1p8v>; 18197dc91c0SVitor Soares DCVDD-supply = <®_carrier_1p8v>; 18297dc91c0SVitor Soares MICVDD-supply = <®_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