// 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/aquila-development-board-kit */ /dts-v1/; #include #include #include "imx95-aquila.dtsi" / { model = "Aquila iMX95 on Aquila Development Board"; compatible = "toradex,aquila-imx95-dev", "toradex,aquila-imx95", "fsl,imx95"; aliases { eeprom1 = &carrier_eeprom; }; dp_1_connector: dp0-connector { compatible = "dp-connector"; dp-pwr-supply = <®_dp_3p3v>; type = "full-size"; port { dp_1_connector_in: endpoint { remote-endpoint = <&dsi2dp_out>; }; }; }; reg_carrier_1p8v: regulator-carrier-1p8v { compatible = "regulator-fixed"; regulator-max-microvolt = <1800000>; regulator-min-microvolt = <1800000>; regulator-name = "On-carrier 1V8"; }; 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>; }; 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 = "aquila-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", "IN1R", "Digital Mic"; simple-audio-card,widgets = "Microphone", "Microphone Jack", "Microphone", "Digital Mic", "Headphone", "Headphone Jack", "Line", "Line In Jack"; codec_dai: simple-audio-card,codec { sound-dai = <&wm8904_1a>; }; simple-audio-card,cpu { sound-dai = <&sai2>; }; }; }; /* 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>; }; }; &gpio1 { pinctrl-names = "default"; pinctrl-0 = <&pinctrl_gpio_8>; }; &gpio4 { pinctrl-names = "default"; pinctrl-0 = <&pinctrl_gpio_1>, <&pinctrl_gpio_2>, <&pinctrl_gpio_3>, <&pinctrl_gpio_4>, <&pinctrl_gpio_5>, <&pinctrl_gpio_6>, <&pinctrl_gpio_7>; }; /* 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>; }; }; wm8904_1a: audio-codec@1a { compatible = "wlf,wm8904"; reg = <0x1a>; pinctrl-names = "default"; pinctrl-0 = <&pinctrl_sai2_mclk>; clocks = <&scmi_clk IMX95_CLK_SAI2>; clock-names = "mclk"; #sound-dai-cells = <0>; AVDD-supply = <®_carrier_1p8v>; CPVDD-supply = <®_carrier_1p8v>; DBVDD-supply = <®_carrier_1p8v>; DCVDD-supply = <®_carrier_1p8v>; MICVDD-supply = <®_carrier_1p8v>; wlf,drc-cfg-names = "default", "peaklimiter"; /* * Config registers per name, respectively: * KNEE_IP = 0, KNEE_OP = 0, HI_COMP = 1, LO_COMP = 1 * KNEE_IP = -24, KNEE_OP = -6, HI_COMP = 1/4, LO_COMP = 1 */ wlf,drc-cfg-regs = /bits/ 16 <0x01af 0x3248 0x0000 0x0000>, /bits/ 16 <0x04af 0x324b 0x0010 0x0408>; /* GPIO1 = DMIC_CLK, don't touch others */ wlf,gpio-cfg = <0x0018>, <0xffff>, <0xffff>, <0xffff>; wlf,in1r-as-dmicdat2; }; /* Current measurement into module VCC */ hwmon@41 { compatible = "ti,ina226"; reg = <0x41>; shunt-resistor = <5000>; }; 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 = ; source-pdos = ; 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_2 */ &i3c2 { status = "okay"; }; /* Aquila I2C_4_CSI1 */ &lpi2c4 { status = "okay"; }; /* Aquila I2C_6 */ &lpi2c5 { status = "okay"; }; /* Aquila I2C_3_DSI1/I2C_5_CSI2 */ &lpi2c8 { status = "okay"; i2c-mux@70 { compatible = "nxp,pca9543"; reg = <0x70>; #address-cells = <1>; #size-cells = <0>; /* I2C on DSI Connector Pin #4 and #6 */ i2c_dsi_0: i2c@0 { reg = <0>; #address-cells = <1>; #size-cells = <0>; }; /* I2C on DSI Connector Pin #52 and #54 */ i2c_dsi_1: i2c@1 { reg = <1>; #address-cells = <1>; #size-cells = <0>; }; }; }; /* Aquila SPI_1 */ &lpspi6 { status = "okay"; }; /* 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 as RS485 */ &lpuart7 { linux,rs485-enabled-at-boot-time; rs485-rts-active-low; rs485-rx-during-tx; status = "okay"; }; /* Aquila PCIE_1 */ &pcie0 { status = "okay"; }; /* Aquila I2S_1 */ &sai2 { status = "okay"; }; /* Aquila PWM_1 */ &tpm3 { status = "okay"; }; /* Aquila PWM_2 */ &tpm6 { status = "okay"; }; /* Aquila PWM_3_DSI and PWM_4_DP */ &tpm5 { 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"; };