// SPDX-License-Identifier: (GPL-2.0+ OR MIT) /* * Copyright 2023 NXP * Copyright 2025 Marek Vasut */ /dts-v1/; #include #include "imx95.dtsi" #define FALLING_EDGE 1 #define RISING_EDGE 2 #define BRD_SM_CTRL_SD3_WAKE 0x8000 /* PCAL6408A-0 */ #define BRD_SM_CTRL_PCIE1_WAKE 0x8001 /* PCAL6408A-4 */ #define BRD_SM_CTRL_BT_WAKE 0x8002 /* PCAL6408A-5 */ #define BRD_SM_CTRL_PCIE2_WAKE 0x8003 /* PCAL6408A-6 */ #define BRD_SM_CTRL_BUTTON 0x8004 /* PCAL6408A-7 */ / { model = "i.MX 95 Verdin Evaluation Kit (EVK)"; compatible = "toradex,verdin-imx95-19x19-evk", "fsl,imx95"; aliases { ethernet0 = &enetc_port0; ethernet1 = &enetc_port1; ethernet2 = &enetc_port2; gpio0 = &gpio1; gpio1 = &gpio2; gpio2 = &gpio3; gpio3 = &gpio4; gpio4 = &gpio5; i2c0 = &lpi2c1; i2c1 = &lpi2c2; i2c2 = &lpi2c3; i2c3 = &lpi2c4; i2c4 = &lpi2c5; i2c5 = &lpi2c6; i2c6 = &lpi2c7; i2c7 = &lpi2c8; mmc0 = &usdhc1; mmc1 = &usdhc2; serial0 = &lpuart1; }; chosen { stdout-path = &lpuart1; }; memory@80000000 { device_type = "memory"; reg = <0x0 0x80000000 0 0x80000000>; }; reserved-memory { #address-cells = <2>; #size-cells = <2>; ranges; linux_cma: linux,cma { compatible = "shared-dma-pool"; alloc-ranges = <0 0x80000000 0 0x7f000000>; size = <0 0x3c000000>; linux,cma-default; reusable; }; }; reg_1p8v: regulator-1p8v { compatible = "regulator-fixed"; regulator-max-microvolt = <1800000>; regulator-min-microvolt = <1800000>; regulator-name = "+V1.8_SW"; }; reg_3p3v: regulator-3p3v { compatible = "regulator-fixed"; regulator-max-microvolt = <3300000>; regulator-min-microvolt = <3300000>; regulator-name = "+V3.3_SW"; }; reg_m2_pwr: regulator-m2-pwr { compatible = "regulator-fixed"; regulator-name = "M.2-power"; regulator-min-microvolt = <3300000>; regulator-max-microvolt = <3300000>; gpio = <&gpio2 4 GPIO_ACTIVE_LOW>; }; reg_pcie0: regulator-pcie { compatible = "regulator-fixed"; regulator-name = "PCIE_WLAN_EN"; regulator-min-microvolt = <3300000>; regulator-max-microvolt = <3300000>; vin-supply = <®_m2_pwr>; gpio = <&i2c7_pcal6524 18 GPIO_ACTIVE_HIGH>; enable-active-high; }; reg_usdhc2_vmmc: regulator-usdhc2 { compatible = "regulator-fixed"; pinctrl-names = "default"; pinctrl-0 = <&pinctrl_reg_usdhc2_vmmc>; regulator-name = "VDD_SD2_3V3"; regulator-min-microvolt = <3300000>; regulator-max-microvolt = <3300000>; gpio = <&gpio3 7 GPIO_ACTIVE_HIGH>; enable-active-high; off-on-delay-us = <12000>; }; usdhc3_pwrseq: usdhc3-pwrseq { compatible = "mmc-pwrseq-simple"; reset-gpios = <&i2c7_pcal6524 11 GPIO_ACTIVE_HIGH>; }; sound-wm8904 { compatible = "fsl,imx-audio-wm8904"; model = "wm8904-audio"; audio-cpu = <&sai3>; audio-codec = <&wm8904>; audio-routing = "Headphone Jack", "HPOUTL", "Headphone Jack", "HPOUTR", "AMIC", "MICBIAS", "IN2L", "AMIC"; }; }; &enetc_port0 { pinctrl-names = "default"; pinctrl-0 = <&pinctrl_enetc0>; phy-handle = <ðphy0>; phy-mode = "rgmii-id"; status = "okay"; }; &flexspi1 { pinctrl-names = "default"; pinctrl-0 = <&pinctrl_flexspi1>; status = "okay"; flash@0 { compatible = "jedec,spi-nor"; reg = <0>; pinctrl-names = "default"; pinctrl-0 = <&pinctrl_flexspi1_reset>; reset-gpios = <&gpio5 11 GPIO_ACTIVE_LOW>; #address-cells = <1>; #size-cells = <1>; spi-max-frequency = <200000000>; spi-tx-bus-width = <8>; spi-rx-bus-width = <8>; }; }; &lpi2c4 { clock-frequency = <400000>; pinctrl-names = "default"; pinctrl-0 = <&pinctrl_lpi2c4>; status = "okay"; wm8904: codec@1a { #sound-dai-cells = <0>; compatible = "wlf,wm8904"; reg = <0x1a>; clocks = <&scmi_clk IMX95_CLK_SAI3>; clock-names = "mclk"; AVDD-supply = <®_1p8v>; CPVDD-supply = <®_1p8v>; DBVDD-supply = <®_1p8v>; DCVDD-supply = <®_1p8v>; MICVDD-supply = <®_1p8v>; }; }; &lpi2c5 { clock-frequency = <100000>; pinctrl-names = "default"; pinctrl-0 = <&pinctrl_lpi2c5>; status = "okay"; }; &lpi2c6 { clock-frequency = <100000>; pinctrl-names = "default"; pinctrl-0 = <&pinctrl_lpi2c6>; status = "okay"; }; &lpi2c7 { clock-frequency = <1000000>; pinctrl-names = "default"; pinctrl-0 = <&pinctrl_lpi2c7>; status = "okay"; i2c7_pcal6524: i2c7-gpio@23 { compatible = "nxp,pcal6524"; reg = <0x23>; pinctrl-names = "default"; pinctrl-0 = <&pinctrl_i2c7_pcal6524>; gpio-controller; #gpio-cells = <2>; interrupt-controller; #interrupt-cells = <2>; interrupt-parent = <&gpio5>; interrupts = <16 IRQ_TYPE_LEVEL_LOW>; }; /* Current measurement at SoM 5V power output */ hwmon@41 { compatible = "ti,ina219"; reg = <0x41>; shunt-resistor = <10000>; }; /* Current measurement at Board power input */ hwmon@45 { compatible = "ti,ina219"; reg = <0x45>; shunt-resistor = <10000>; }; eeprom@50 { compatible = "st,24c02"; reg = <0x50>; }; ptn5110: tcpc@52 { compatible = "nxp,ptn5110", "tcpci"; reg = <0x52>; pinctrl-names = "default"; pinctrl-0 = <&pinctrl_typec>; interrupt-parent = <&gpio5>; interrupts = <14 IRQ_TYPE_LEVEL_LOW>; typec_con: connector { compatible = "usb-c-connector"; label = "USB-C"; power-role = "dual"; data-role = "dual"; try-power-role = "sink"; source-pdos = ; sink-pdos = ; op-sink-microwatt = <15000000>; self-powered; ports { #address-cells = <1>; #size-cells = <0>; port@0 { reg = <0>; typec_con_hs: endpoint { remote-endpoint = <&usb3_data_hs>; }; }; port@1 { reg = <1>; typec_con_ss: endpoint { remote-endpoint = <&usb3_data_ss>; }; }; }; }; }; }; &lpuart1 { /* console */ pinctrl-names = "default"; pinctrl-0 = <&pinctrl_uart1>; status = "okay"; }; &mu7 { status = "okay"; }; &netcmix_blk_ctrl { status = "okay"; }; &netc_blk_ctrl { status = "okay"; }; &netc_emdio { pinctrl-names = "default"; pinctrl-0 = <&pinctrl_emdio>; status = "okay"; ethphy0: ethernet-phy@1 { reg = <1>; realtek,clkout-disable; }; }; &pcie0 { pinctrl-0 = <&pinctrl_pcie0>; pinctrl-names = "default"; reset-gpio = <&i2c7_pcal6524 17 GPIO_ACTIVE_LOW>; vpcie-supply = <®_pcie0>; status = "okay"; }; &pcie1 { pinctrl-0 = <&pinctrl_pcie1>; pinctrl-names = "default"; reset-gpio = <&i2c7_pcal6524 16 GPIO_ACTIVE_LOW>; status = "okay"; }; &sai1 { #sound-dai-cells = <0>; pinctrl-names = "default"; pinctrl-0 = <&pinctrl_sai1>; assigned-clocks = <&scmi_clk IMX95_CLK_AUDIOPLL1_VCO>, <&scmi_clk IMX95_CLK_AUDIOPLL2_VCO>, <&scmi_clk IMX95_CLK_AUDIOPLL1>, <&scmi_clk IMX95_CLK_AUDIOPLL2>, <&scmi_clk IMX95_CLK_SAI1>; assigned-clock-parents = <0>, <0>, <0>, <0>, <&scmi_clk IMX95_CLK_AUDIOPLL1>; assigned-clock-rates = <3932160000>, <3612672000>, <393216000>, <361267200>, <12288000>; fsl,sai-mclk-direction-output; status = "okay"; }; &sai3 { #sound-dai-cells = <0>; pinctrl-names = "default"; pinctrl-0 = <&pinctrl_sai3>; assigned-clocks = <&scmi_clk IMX95_CLK_AUDIOPLL1_VCO>, <&scmi_clk IMX95_CLK_AUDIOPLL2_VCO>, <&scmi_clk IMX95_CLK_AUDIOPLL1>, <&scmi_clk IMX95_CLK_AUDIOPLL2>, <&scmi_clk IMX95_CLK_SAI3>; assigned-clock-parents = <0>, <0>, <0>, <0>, <&scmi_clk IMX95_CLK_AUDIOPLL1>; assigned-clock-rates = <3932160000>, <3612672000>, <393216000>, <361267200>, <12288000>; fsl,sai-mclk-direction-output; status = "okay"; }; &usb3 { status = "okay"; }; &usb3_dwc3 { dr_mode = "otg"; hnp-disable; srp-disable; adp-disable; usb-role-switch; role-switch-default-mode = "peripheral"; snps,dis-u1-entry-quirk; snps,dis-u2-entry-quirk; status = "okay"; port { usb3_data_hs: endpoint { remote-endpoint = <&typec_con_hs>; }; }; }; &usb3_phy { fsl,phy-tx-preemp-amp-tune-microamp = <600>; orientation-switch; status = "okay"; port { usb3_data_ss: endpoint { remote-endpoint = <&typec_con_ss>; }; }; }; &usdhc1 { pinctrl-names = "default", "state_100mhz", "state_200mhz", "sleep"; pinctrl-0 = <&pinctrl_usdhc1>; pinctrl-1 = <&pinctrl_usdhc1_100mhz>; pinctrl-2 = <&pinctrl_usdhc1_200mhz>; pinctrl-3 = <&pinctrl_usdhc1>; bus-width = <8>; non-removable; no-sdio; no-sd; status = "okay"; }; &usdhc2 { pinctrl-names = "default", "state_100mhz", "state_200mhz", "sleep"; pinctrl-0 = <&pinctrl_usdhc2>, <&pinctrl_usdhc2_gpio>; pinctrl-1 = <&pinctrl_usdhc2_100mhz>, <&pinctrl_usdhc2_gpio>; pinctrl-2 = <&pinctrl_usdhc2_200mhz>, <&pinctrl_usdhc2_gpio>; pinctrl-3 = <&pinctrl_usdhc2>, <&pinctrl_usdhc2_gpio>; cd-gpios = <&gpio3 0 GPIO_ACTIVE_LOW>; vmmc-supply = <®_usdhc2_vmmc>; bus-width = <4>; status = "okay"; }; &usdhc3 { pinctrl-names = "default"; pinctrl-0 = <&pinctrl_usdhc3>; mmc-pwrseq = <&usdhc3_pwrseq>; vmmc-supply = <®_pcie0>; bus-width = <4>; keep-power-in-suspend; non-removable; status = "okay"; }; &scmi_misc { nxp,ctrl-ids = ; }; &wdog3 { fsl,ext-reset-output; status = "okay"; }; &scmi_iomuxc { pinctrl-names = "default"; pinctrl-0 = <&pinctrl_hog>; pinctrl_hog: hoggrp { fsl,pins = ; }; pinctrl_emdio: emdiogrp { fsl,pins = , ; }; pinctrl_enetc0: enetc0grp { fsl,pins = , , , , , , , , , , , ; }; pinctrl_flexspi1: flexspi1grp { fsl,pins = , , , , , , , , , , ; }; pinctrl_flexspi1_reset: flexspi1-reset-grp { fsl,pins = ; }; pinctrl_hp: hpgrp { fsl,pins = ; }; pinctrl_i2c4_pcal6408: i2c4pcal6498grp { fsl,pins = ; }; pinctrl_i2c7_pcal6524: i2c7pcal6524grp { fsl,pins = ; }; pinctrl_lpi2c4: lpi2c4grp { fsl,pins = , ; }; pinctrl_lpi2c5: lpi2c5grp { fsl,pins = , ; }; pinctrl_lpi2c6: lpi2c6grp { fsl,pins = , ; }; pinctrl_lpi2c7: lpi2c7grp { fsl,pins = , ; }; pinctrl_pcal6416: pcal6416grp { fsl,pins = ; }; pinctrl_pcie0: pcie0grp { fsl,pins = ; }; pinctrl_pcie1: pcie1grp { fsl,pins = ; }; pinctrl_pdm: pdmgrp { fsl,pins = , ; }; pinctrl_reg_usdhc2_vmmc: regusdhc2vmmcgrp { fsl,pins = ; }; pinctrl_sai1: sai1grp { fsl,pins = , , , ; }; pinctrl_sai2: sai2grp { fsl,pins = , , , , , , , , , , ; }; pinctrl_sai3: sai3grp { fsl,pins = , , , , ; }; pinctrl_tpm6: tpm6grp { fsl,pins = ; }; pinctrl_typec: typecgrp { fsl,pins = ; }; pinctrl_uart1: uart1grp { fsl,pins = , ; }; pinctrl_usdhc1: usdhc1grp { fsl,pins = , , , , , , , , , , ; }; pinctrl_usdhc1_100mhz: usdhc1-100mhzgrp { fsl,pins = , , , , , , , , , , ; }; pinctrl_usdhc1_200mhz: usdhc1-200mhzgrp { fsl,pins = , , , , , , , , , , ; }; pinctrl_usdhc2_gpio: usdhc2gpiogrp { fsl,pins = ; }; pinctrl_usdhc2: usdhc2grp { fsl,pins = , , , , , , ; }; pinctrl_usdhc2_100mhz: usdhc2-100mhzgrp { fsl,pins = , , , , , , ; }; pinctrl_usdhc2_200mhz: usdhc2-200mhzgrp { fsl,pins = , , , , , , ; }; pinctrl_usdhc3: usdhc3grp { fsl,pins = , , , , , ; }; };