1// SPDX-License-Identifier: GPL-2.0-or-later OR MIT 2/* 3 * Copyright (c) Toradex 4 * 5 * https://www.toradex.com/computer-on-modules/aquila-arm-family/nxp-imx95 6 * https://www.toradex.com/products/carrier-board/aquila-development-board-kit 7 */ 8 9/dts-v1/; 10 11#include <dt-bindings/pwm/pwm.h> 12#include <dt-bindings/usb/pd.h> 13#include "imx95-aquila.dtsi" 14 15/ { 16 model = "Aquila iMX95 on Aquila Development Board"; 17 compatible = "toradex,aquila-imx95-dev", 18 "toradex,aquila-imx95", 19 "fsl,imx95"; 20 21 aliases { 22 eeprom1 = &carrier_eeprom; 23 }; 24 25 dp_1_connector: dp0-connector { 26 compatible = "dp-connector"; 27 dp-pwr-supply = <®_dp_3p3v>; 28 type = "full-size"; 29 30 port { 31 dp_1_connector_in: endpoint { 32 remote-endpoint = <&dsi2dp_out>; 33 }; 34 }; 35 }; 36 37 reg_carrier_1p8v: regulator-carrier-1p8v { 38 compatible = "regulator-fixed"; 39 regulator-max-microvolt = <1800000>; 40 regulator-min-microvolt = <1800000>; 41 regulator-name = "On-carrier 1V8"; 42 }; 43 44 reg_dp_3p3v: regulator-dp-3p3v { 45 compatible = "regulator-fixed"; 46 pinctrl-names = "default"; 47 pinctrl-0 = <&pinctrl_gpio_21_dp>; 48 /* Aquila GPIO_21_DP */ 49 gpios = <&gpio3 21 GPIO_ACTIVE_HIGH>; 50 enable-active-high; 51 regulator-max-microvolt = <3300000>; 52 regulator-min-microvolt = <3300000>; 53 regulator-name = "DP_3V3"; 54 startup-delay-us = <10000>; 55 }; 56 57 sound { 58 compatible = "simple-audio-card"; 59 simple-audio-card,bitclock-master = <&codec_dai>; 60 simple-audio-card,format = "i2s"; 61 simple-audio-card,frame-master = <&codec_dai>; 62 simple-audio-card,mclk-fs = <256>; 63 simple-audio-card,name = "aquila-wm8904"; 64 simple-audio-card,routing = 65 "Headphone Jack", "HPOUTL", 66 "Headphone Jack", "HPOUTR", 67 "IN2L", "Line In Jack", 68 "IN2R", "Line In Jack", 69 "Microphone Jack", "MICBIAS", 70 "IN1L", "Microphone Jack", 71 "IN1R", "Digital Mic"; 72 simple-audio-card,widgets = 73 "Microphone", "Microphone Jack", 74 "Microphone", "Digital Mic", 75 "Headphone", "Headphone Jack", 76 "Line", "Line In Jack"; 77 78 codec_dai: simple-audio-card,codec { 79 sound-dai = <&wm8904_1a>; 80 }; 81 82 simple-audio-card,cpu { 83 sound-dai = <&sai2>; 84 }; 85 }; 86}; 87 88/* Aquila ADC_[1-4] */ 89&adc1 { 90 status = "okay"; 91}; 92 93/* Aquila CTRL_WAKE1_MICO# */ 94&aquila_key_wake { 95 status = "okay"; 96}; 97 98&dsi2dp_out { 99 remote-endpoint = <&dp_1_connector_in>; 100}; 101 102/* Aquila ETH_1 */ 103&enetc_port0 { 104 status = "okay"; 105}; 106 107/* Aquila CAN_1 */ 108&flexcan1 { 109 status = "okay"; 110}; 111 112/* Aquila CAN_2 */ 113&flexcan2 { 114 status = "okay"; 115}; 116 117/* Aquila CAN_3 */ 118&flexcan3 { 119 status = "okay"; 120}; 121 122/* Aquila CAN_4 */ 123&flexcan4 { 124 status = "okay"; 125}; 126 127/* Aquila QSPI_1 */ 128&flexspi1 { 129 pinctrl-0 = <&pinctrl_flexspi1_4bit>, 130 <&pinctrl_qspi_cs1>; 131 132 status = "okay"; 133 134 flash@0 { 135 compatible = "jedec,spi-nor"; 136 reg = <0x0>; 137 spi-max-frequency = <66000000>; 138 spi-rx-bus-width = <4>; 139 spi-tx-bus-width = <4>; 140 }; 141}; 142 143&gpio1 { 144 pinctrl-names = "default"; 145 pinctrl-0 = <&pinctrl_gpio_8>; 146}; 147 148&gpio4 { 149 pinctrl-names = "default"; 150 pinctrl-0 = <&pinctrl_gpio_1>, 151 <&pinctrl_gpio_2>, 152 <&pinctrl_gpio_3>, 153 <&pinctrl_gpio_4>, 154 <&pinctrl_gpio_5>, 155 <&pinctrl_gpio_6>, 156 <&pinctrl_gpio_7>; 157}; 158 159/* Aquila I2C_1 */ 160&lpi2c2 { 161 status = "okay"; 162 163 fan_controller: fan@18 { 164 compatible = "ti,amc6821"; 165 reg = <0x18>; 166 #pwm-cells = <2>; 167 168 fan { 169 cooling-levels = <255>; 170 pwms = <&fan_controller 40000 PWM_POLARITY_INVERTED>; 171 }; 172 }; 173 174 wm8904_1a: audio-codec@1a { 175 compatible = "wlf,wm8904"; 176 reg = <0x1a>; 177 pinctrl-names = "default"; 178 pinctrl-0 = <&pinctrl_sai2_mclk>; 179 clocks = <&scmi_clk IMX95_CLK_SAI2>; 180 clock-names = "mclk"; 181 #sound-dai-cells = <0>; 182 AVDD-supply = <®_carrier_1p8v>; 183 CPVDD-supply = <®_carrier_1p8v>; 184 DBVDD-supply = <®_carrier_1p8v>; 185 DCVDD-supply = <®_carrier_1p8v>; 186 MICVDD-supply = <®_carrier_1p8v>; 187 wlf,drc-cfg-names = "default", "peaklimiter"; 188 /* 189 * Config registers per name, respectively: 190 * KNEE_IP = 0, KNEE_OP = 0, HI_COMP = 1, LO_COMP = 1 191 * KNEE_IP = -24, KNEE_OP = -6, HI_COMP = 1/4, LO_COMP = 1 192 */ 193 wlf,drc-cfg-regs = /bits/ 16 <0x01af 0x3248 0x0000 0x0000>, 194 /bits/ 16 <0x04af 0x324b 0x0010 0x0408>; 195 /* GPIO1 = DMIC_CLK, don't touch others */ 196 wlf,gpio-cfg = <0x0018>, <0xffff>, <0xffff>, <0xffff>; 197 wlf,in1r-as-dmicdat2; 198 }; 199 200 /* Current measurement into module VCC */ 201 hwmon@41 { 202 compatible = "ti,ina226"; 203 reg = <0x41>; 204 shunt-resistor = <5000>; 205 }; 206 207 temperature-sensor@4f { 208 compatible = "ti,tmp1075"; 209 reg = <0x4f>; 210 }; 211 212 /* USB-C OTG (TCPC USB PD PHY) */ 213 tcpc@52 { 214 compatible = "nxp,ptn5110", "tcpci"; 215 reg = <0x52>; 216 interrupt-parent = <&som_gpio_expander_1>; 217 interrupts = <5 IRQ_TYPE_EDGE_FALLING>; 218 219 connector { 220 compatible = "usb-c-connector"; 221 data-role = "dual"; 222 op-sink-microwatt = <0>; 223 power-role = "dual"; 224 self-powered; 225 sink-pdos = <PDO_FIXED(5000, 0, PDO_FIXED_USB_COMM)>; 226 source-pdos = <PDO_FIXED(5000, 3000, PDO_FIXED_USB_COMM)>; 227 try-power-role = "sink"; 228 229 ports { 230 #address-cells = <1>; 231 #size-cells = <0>; 232 233 port@0 { 234 reg = <0>; 235 236 typec_con_hs: endpoint { 237 remote-endpoint = <&usb1_con_hs>; 238 }; 239 }; 240 241 port@1 { 242 reg = <1>; 243 244 typec_con_ss: endpoint { 245 remote-endpoint = <&usb1_con_ss>; 246 }; 247 }; 248 }; 249 }; 250 }; 251 252 carrier_eeprom: eeprom@57 { 253 compatible = "st,24c02", "atmel,24c02"; 254 reg = <0x57>; 255 pagesize = <16>; 256 }; 257}; 258 259/* Aquila I2C_2 */ 260&i3c2 { 261 status = "okay"; 262}; 263 264/* Aquila I2C_4_CSI1 */ 265&lpi2c4 { 266 status = "okay"; 267}; 268 269/* Aquila I2C_6 */ 270&lpi2c5 { 271 status = "okay"; 272}; 273 274/* Aquila I2C_3_DSI1/I2C_5_CSI2 */ 275&lpi2c8 { 276 status = "okay"; 277 278 i2c-mux@70 { 279 compatible = "nxp,pca9543"; 280 reg = <0x70>; 281 #address-cells = <1>; 282 #size-cells = <0>; 283 284 /* I2C on DSI Connector Pin #4 and #6 */ 285 i2c_dsi_0: i2c@0 { 286 reg = <0>; 287 #address-cells = <1>; 288 #size-cells = <0>; 289 }; 290 291 /* I2C on DSI Connector Pin #52 and #54 */ 292 i2c_dsi_1: i2c@1 { 293 reg = <1>; 294 #address-cells = <1>; 295 #size-cells = <0>; 296 }; 297 }; 298}; 299 300/* Aquila SPI_1 */ 301&lpspi6 { 302 status = "okay"; 303}; 304 305/* Aquila UART_3, used as the Linux Console */ 306&lpuart1 { 307 status = "okay"; 308}; 309 310/* Aquila UART_4 */ 311&lpuart2 { 312 status = "okay"; 313}; 314 315/* Aquila UART_1 */ 316&lpuart3 { 317 status = "okay"; 318}; 319 320/* Aquila UART_2 as RS485 */ 321&lpuart7 { 322 linux,rs485-enabled-at-boot-time; 323 rs485-rts-active-low; 324 rs485-rx-during-tx; 325 326 status = "okay"; 327}; 328 329/* Aquila PCIE_1 */ 330&pcie0 { 331 status = "okay"; 332}; 333 334/* Aquila I2S_1 */ 335&sai2 { 336 status = "okay"; 337}; 338 339/* Aquila PWM_1 */ 340&tpm3 { 341 status = "okay"; 342}; 343 344/* Aquila PWM_2 */ 345&tpm6 { 346 status = "okay"; 347}; 348 349/* Aquila PWM_3_DSI and PWM_4_DP */ 350&tpm5 { 351 status = "okay"; 352}; 353 354/* Aquila USB_2, optional Bluetooth USB */ 355&usb2 { 356 status = "okay"; 357}; 358 359/* Aquila USB_1 */ 360&usb3 { 361 status = "okay"; 362}; 363 364&usb3_dwc3 { 365 status = "okay"; 366 367 port { 368 usb1_con_hs: endpoint { 369 remote-endpoint = <&typec_con_hs>; 370 }; 371 }; 372}; 373 374&usb3_phy { 375 orientation-switch; 376 377 status = "okay"; 378 379 port { 380 usb1_con_ss: endpoint { 381 remote-endpoint = <&typec_con_ss>; 382 }; 383 }; 384}; 385 386/* Aquila SD_1 */ 387&usdhc2 { 388 status = "okay"; 389}; 390