1*e71db39fSAlexander Stein// SPDX-License-Identifier: (GPL-2.0-or-later OR MIT) 2*e71db39fSAlexander Stein/* 3*e71db39fSAlexander Stein * Copyright (c) 2022-2025 TQ-Systems GmbH <linux@ew.tq-group.com>, 4*e71db39fSAlexander Stein * D-82229 Seefeld, Germany. 5*e71db39fSAlexander Stein * Author: Markus Niebel 6*e71db39fSAlexander Stein * Author: Alexander Stein 7*e71db39fSAlexander Stein */ 8*e71db39fSAlexander Stein 9*e71db39fSAlexander Stein#include "imx91.dtsi" 10*e71db39fSAlexander Stein 11*e71db39fSAlexander Stein/{ 12*e71db39fSAlexander Stein model = "TQ-Systems i.MX91 TQMa91xxCA / TQMa91xxLA SOM"; 13*e71db39fSAlexander Stein compatible = "tq,imx91-tqma9131", "fsl,imx91"; 14*e71db39fSAlexander Stein 15*e71db39fSAlexander Stein memory@80000000 { 16*e71db39fSAlexander Stein device_type = "memory"; 17*e71db39fSAlexander Stein /* our minimum RAM config will be 1024 MiB */ 18*e71db39fSAlexander Stein reg = <0x00000000 0x80000000 0 0x40000000>; 19*e71db39fSAlexander Stein }; 20*e71db39fSAlexander Stein 21*e71db39fSAlexander Stein reserved-memory { 22*e71db39fSAlexander Stein #address-cells = <2>; 23*e71db39fSAlexander Stein #size-cells = <2>; 24*e71db39fSAlexander Stein ranges; 25*e71db39fSAlexander Stein 26*e71db39fSAlexander Stein /* default CMA, must not exceed assembled memory */ 27*e71db39fSAlexander Stein linux,cma { 28*e71db39fSAlexander Stein compatible = "shared-dma-pool"; 29*e71db39fSAlexander Stein reusable; 30*e71db39fSAlexander Stein alloc-ranges = <0 0x80000000 0 0x40000000>; 31*e71db39fSAlexander Stein size = <0 0x10000000>; 32*e71db39fSAlexander Stein linux,cma-default; 33*e71db39fSAlexander Stein }; 34*e71db39fSAlexander Stein 35*e71db39fSAlexander Stein /* EdgeLock secure enclave */ 36*e71db39fSAlexander Stein ele_reserved: ele-reserved@a4120000 { 37*e71db39fSAlexander Stein compatible = "shared-dma-pool"; 38*e71db39fSAlexander Stein reg = <0 0xa4120000 0 0x100000>; 39*e71db39fSAlexander Stein no-map; 40*e71db39fSAlexander Stein }; 41*e71db39fSAlexander Stein }; 42*e71db39fSAlexander Stein 43*e71db39fSAlexander Stein /* SD2 RST# via PMIC SW_EN */ 44*e71db39fSAlexander Stein reg_usdhc2_vmmc: regulator-usdhc2 { 45*e71db39fSAlexander Stein compatible = "regulator-fixed"; 46*e71db39fSAlexander Stein pinctrl-names = "default"; 47*e71db39fSAlexander Stein pinctrl-0 = <&pinctrl_reg_usdhc2_vmmc>; 48*e71db39fSAlexander Stein regulator-name = "VSD_3V3"; 49*e71db39fSAlexander Stein regulator-min-microvolt = <3300000>; 50*e71db39fSAlexander Stein regulator-max-microvolt = <3300000>; 51*e71db39fSAlexander Stein vin-supply = <&buck4>; 52*e71db39fSAlexander Stein gpio = <&gpio3 7 GPIO_ACTIVE_HIGH>; 53*e71db39fSAlexander Stein enable-active-high; 54*e71db39fSAlexander Stein }; 55*e71db39fSAlexander Stein}; 56*e71db39fSAlexander Stein 57*e71db39fSAlexander Stein&adc1 { 58*e71db39fSAlexander Stein vref-supply = <&buck5>; 59*e71db39fSAlexander Stein}; 60*e71db39fSAlexander Stein 61*e71db39fSAlexander Stein&flexspi1 { 62*e71db39fSAlexander Stein pinctrl-names = "default"; 63*e71db39fSAlexander Stein pinctrl-0 = <&pinctrl_flexspi1>; 64*e71db39fSAlexander Stein status = "okay"; 65*e71db39fSAlexander Stein 66*e71db39fSAlexander Stein flash0: flash@0 { 67*e71db39fSAlexander Stein compatible = "jedec,spi-nor"; 68*e71db39fSAlexander Stein reg = <0>; 69*e71db39fSAlexander Stein /* 70*e71db39fSAlexander Stein * no DQS, RXCLKSRC internal loop back, max 66 MHz 71*e71db39fSAlexander Stein * clk framework uses CLK_DIVIDER_ROUND_CLOSEST 72*e71db39fSAlexander Stein * selected value together with root from 73*e71db39fSAlexander Stein * IMX91_CLK_SYS_PLL_PFD1 @ 800.000.000 Hz helps to 74*e71db39fSAlexander Stein * respect the maximum value. 75*e71db39fSAlexander Stein */ 76*e71db39fSAlexander Stein spi-max-frequency = <62000000>; 77*e71db39fSAlexander Stein spi-tx-bus-width = <4>; 78*e71db39fSAlexander Stein spi-rx-bus-width = <4>; 79*e71db39fSAlexander Stein vcc-supply = <&buck5>; 80*e71db39fSAlexander Stein 81*e71db39fSAlexander Stein partitions { 82*e71db39fSAlexander Stein compatible = "fixed-partitions"; 83*e71db39fSAlexander Stein #address-cells = <1>; 84*e71db39fSAlexander Stein #size-cells = <1>; 85*e71db39fSAlexander Stein }; 86*e71db39fSAlexander Stein }; 87*e71db39fSAlexander Stein}; 88*e71db39fSAlexander Stein 89*e71db39fSAlexander Stein&lpi2c1 { 90*e71db39fSAlexander Stein clock-frequency = <400000>; 91*e71db39fSAlexander Stein pinctrl-names = "default", "sleep"; 92*e71db39fSAlexander Stein pinctrl-0 = <&pinctrl_lpi2c1>; 93*e71db39fSAlexander Stein pinctrl-1 = <&pinctrl_lpi2c1>; 94*e71db39fSAlexander Stein status = "okay"; 95*e71db39fSAlexander Stein 96*e71db39fSAlexander Stein se97_som: temperature-sensor@1b { 97*e71db39fSAlexander Stein compatible = "nxp,se97b", "jedec,jc-42.4-temp"; 98*e71db39fSAlexander Stein reg = <0x1b>; 99*e71db39fSAlexander Stein }; 100*e71db39fSAlexander Stein 101*e71db39fSAlexander Stein pca9451a: pmic@25 { 102*e71db39fSAlexander Stein compatible = "nxp,pca9451a"; 103*e71db39fSAlexander Stein reg = <0x25>; 104*e71db39fSAlexander Stein pinctrl-names = "default"; 105*e71db39fSAlexander Stein pinctrl-0 = <&pinctrl_pca9451>; 106*e71db39fSAlexander Stein interrupt-parent = <&gpio1>; 107*e71db39fSAlexander Stein interrupts = <3 IRQ_TYPE_LEVEL_LOW>; 108*e71db39fSAlexander Stein 109*e71db39fSAlexander Stein regulators { 110*e71db39fSAlexander Stein /* V_0V8_SOC - hw developer guide: 0.75 .. 0.9 */ 111*e71db39fSAlexander Stein buck1: BUCK1 { 112*e71db39fSAlexander Stein regulator-name = "BUCK1"; 113*e71db39fSAlexander Stein regulator-min-microvolt = <750000>; 114*e71db39fSAlexander Stein regulator-max-microvolt = <900000>; 115*e71db39fSAlexander Stein regulator-boot-on; 116*e71db39fSAlexander Stein regulator-always-on; 117*e71db39fSAlexander Stein regulator-ramp-delay = <3125>; 118*e71db39fSAlexander Stein }; 119*e71db39fSAlexander Stein 120*e71db39fSAlexander Stein /* V_DDRQ - 1.1 V for LPDDR4 */ 121*e71db39fSAlexander Stein buck2: BUCK2 { 122*e71db39fSAlexander Stein regulator-name = "BUCK2"; 123*e71db39fSAlexander Stein regulator-min-microvolt = <1100000>; 124*e71db39fSAlexander Stein regulator-max-microvolt = <1100000>; 125*e71db39fSAlexander Stein regulator-boot-on; 126*e71db39fSAlexander Stein regulator-always-on; 127*e71db39fSAlexander Stein regulator-ramp-delay = <3125>; 128*e71db39fSAlexander Stein }; 129*e71db39fSAlexander Stein 130*e71db39fSAlexander Stein /* V_3V3 - EEPROM, RTC, ... */ 131*e71db39fSAlexander Stein buck4: BUCK4 { 132*e71db39fSAlexander Stein regulator-name = "BUCK4"; 133*e71db39fSAlexander Stein regulator-min-microvolt = <3300000>; 134*e71db39fSAlexander Stein regulator-max-microvolt = <3300000>; 135*e71db39fSAlexander Stein regulator-boot-on; 136*e71db39fSAlexander Stein regulator-always-on; 137*e71db39fSAlexander Stein }; 138*e71db39fSAlexander Stein 139*e71db39fSAlexander Stein /* V_1V8 - SPI NOR, eMMC, RAM VDD1... */ 140*e71db39fSAlexander Stein buck5: BUCK5 { 141*e71db39fSAlexander Stein regulator-name = "BUCK5"; 142*e71db39fSAlexander Stein regulator-min-microvolt = <1800000>; 143*e71db39fSAlexander Stein regulator-max-microvolt = <1800000>; 144*e71db39fSAlexander Stein regulator-boot-on; 145*e71db39fSAlexander Stein regulator-always-on; 146*e71db39fSAlexander Stein }; 147*e71db39fSAlexander Stein 148*e71db39fSAlexander Stein /* V_1V1 - RAM VDD2*/ 149*e71db39fSAlexander Stein buck6: BUCK6 { 150*e71db39fSAlexander Stein regulator-name = "BUCK6"; 151*e71db39fSAlexander Stein regulator-min-microvolt = <1100000>; 152*e71db39fSAlexander Stein regulator-max-microvolt = <1100000>; 153*e71db39fSAlexander Stein regulator-boot-on; 154*e71db39fSAlexander Stein regulator-always-on; 155*e71db39fSAlexander Stein }; 156*e71db39fSAlexander Stein 157*e71db39fSAlexander Stein /* V_1V8_BBSM, fix 1.8 */ 158*e71db39fSAlexander Stein ldo1: LDO1 { 159*e71db39fSAlexander Stein regulator-name = "LDO1"; 160*e71db39fSAlexander Stein regulator-min-microvolt = <1800000>; 161*e71db39fSAlexander Stein regulator-max-microvolt = <1800000>; 162*e71db39fSAlexander Stein regulator-boot-on; 163*e71db39fSAlexander Stein regulator-always-on; 164*e71db39fSAlexander Stein }; 165*e71db39fSAlexander Stein 166*e71db39fSAlexander Stein /* V_0V8_ANA */ 167*e71db39fSAlexander Stein ldo4: LDO4 { 168*e71db39fSAlexander Stein regulator-name = "LDO4"; 169*e71db39fSAlexander Stein regulator-min-microvolt = <800000>; 170*e71db39fSAlexander Stein regulator-max-microvolt = <800000>; 171*e71db39fSAlexander Stein regulator-boot-on; 172*e71db39fSAlexander Stein regulator-always-on; 173*e71db39fSAlexander Stein }; 174*e71db39fSAlexander Stein 175*e71db39fSAlexander Stein /* V_SD2 - 3.3/1.8V USDHC2 io Voltage */ 176*e71db39fSAlexander Stein ldo5: LDO5 { 177*e71db39fSAlexander Stein regulator-name = "LDO5"; 178*e71db39fSAlexander Stein regulator-min-microvolt = <1800000>; 179*e71db39fSAlexander Stein regulator-max-microvolt = <3300000>; 180*e71db39fSAlexander Stein regulator-boot-on; 181*e71db39fSAlexander Stein regulator-always-on; 182*e71db39fSAlexander Stein }; 183*e71db39fSAlexander Stein }; 184*e71db39fSAlexander Stein }; 185*e71db39fSAlexander Stein 186*e71db39fSAlexander Stein pcf85063: rtc@51 { 187*e71db39fSAlexander Stein compatible = "nxp,pcf85063a"; 188*e71db39fSAlexander Stein reg = <0x51>; 189*e71db39fSAlexander Stein quartz-load-femtofarads = <7000>; 190*e71db39fSAlexander Stein }; 191*e71db39fSAlexander Stein 192*e71db39fSAlexander Stein eeprom0: eeprom@53 { 193*e71db39fSAlexander Stein compatible = "nxp,se97b", "atmel,24c02"; 194*e71db39fSAlexander Stein reg = <0x53>; 195*e71db39fSAlexander Stein pagesize = <16>; 196*e71db39fSAlexander Stein read-only; 197*e71db39fSAlexander Stein vcc-supply = <&buck4>; 198*e71db39fSAlexander Stein }; 199*e71db39fSAlexander Stein 200*e71db39fSAlexander Stein eeprom1: eeprom@57 { 201*e71db39fSAlexander Stein compatible = "atmel,24c64"; 202*e71db39fSAlexander Stein reg = <0x57>; 203*e71db39fSAlexander Stein pagesize = <32>; 204*e71db39fSAlexander Stein vcc-supply = <&buck4>; 205*e71db39fSAlexander Stein }; 206*e71db39fSAlexander Stein 207*e71db39fSAlexander Stein /* protectable identification memory (part of M24C64-D @57) */ 208*e71db39fSAlexander Stein eeprom@5f { 209*e71db39fSAlexander Stein compatible = "atmel,24c64d-wl"; 210*e71db39fSAlexander Stein reg = <0x5f>; 211*e71db39fSAlexander Stein vcc-supply = <&buck4>; 212*e71db39fSAlexander Stein }; 213*e71db39fSAlexander Stein 214*e71db39fSAlexander Stein accelerometer@6a { 215*e71db39fSAlexander Stein compatible = "st,ism330dhcx"; 216*e71db39fSAlexander Stein reg = <0x6a>; 217*e71db39fSAlexander Stein vdd-supply = <&buck4>; 218*e71db39fSAlexander Stein vddio-supply = <&buck4>; 219*e71db39fSAlexander Stein }; 220*e71db39fSAlexander Stein}; 221*e71db39fSAlexander Stein 222*e71db39fSAlexander Stein&usdhc1 { 223*e71db39fSAlexander Stein pinctrl-names = "default", "state_100mhz", "state_200mhz"; 224*e71db39fSAlexander Stein pinctrl-0 = <&pinctrl_usdhc1>; 225*e71db39fSAlexander Stein pinctrl-1 = <&pinctrl_usdhc1>; 226*e71db39fSAlexander Stein pinctrl-2 = <&pinctrl_usdhc1>; 227*e71db39fSAlexander Stein vmmc-supply = <&buck4>; 228*e71db39fSAlexander Stein vqmmc-supply = <&buck5>; 229*e71db39fSAlexander Stein bus-width = <8>; 230*e71db39fSAlexander Stein non-removable; 231*e71db39fSAlexander Stein no-sdio; 232*e71db39fSAlexander Stein no-sd; 233*e71db39fSAlexander Stein status = "okay"; 234*e71db39fSAlexander Stein}; 235*e71db39fSAlexander Stein 236*e71db39fSAlexander Stein&wdog3 { 237*e71db39fSAlexander Stein pinctrl-names = "default"; 238*e71db39fSAlexander Stein pinctrl-0 = <&pinctrl_wdog>; 239*e71db39fSAlexander Stein fsl,ext-reset-output; 240*e71db39fSAlexander Stein status = "okay"; 241*e71db39fSAlexander Stein}; 242*e71db39fSAlexander Stein 243*e71db39fSAlexander Stein&iomuxc { 244*e71db39fSAlexander Stein pinctrl_flexspi1: flexspi1grp { 245*e71db39fSAlexander Stein fsl,pins = /* FSEL 3 | DSE X6 */ 246*e71db39fSAlexander Stein <MX91_PAD_SD3_CMD__FLEXSPI1_A_SS0_B 0x01fe>, 247*e71db39fSAlexander Stein <MX91_PAD_SD3_CLK__FLEXSPI1_A_SCLK 0x01fe>, 248*e71db39fSAlexander Stein /* HYS | PU | FSEL 3 | DSE X6 */ 249*e71db39fSAlexander Stein <MX91_PAD_SD3_DATA0__FLEXSPI1_A_DATA0 0x13fe>, 250*e71db39fSAlexander Stein <MX91_PAD_SD3_DATA1__FLEXSPI1_A_DATA1 0x13fe>, 251*e71db39fSAlexander Stein /* HYS | FSEL 3 | DSE X6 (external PU) */ 252*e71db39fSAlexander Stein <MX91_PAD_SD3_DATA2__FLEXSPI1_A_DATA2 0x11fe>, 253*e71db39fSAlexander Stein <MX91_PAD_SD3_DATA3__FLEXSPI1_A_DATA3 0x11fe>; 254*e71db39fSAlexander Stein }; 255*e71db39fSAlexander Stein 256*e71db39fSAlexander Stein pinctrl_lpi2c1: lpi2c1grp { 257*e71db39fSAlexander Stein fsl,pins = /* SION | OD | FSEL 3 | DSE X4 */ 258*e71db39fSAlexander Stein <MX91_PAD_I2C1_SCL__LPI2C1_SCL 0x4000199e>, 259*e71db39fSAlexander Stein <MX91_PAD_I2C1_SDA__LPI2C1_SDA 0x4000199e>; 260*e71db39fSAlexander Stein }; 261*e71db39fSAlexander Stein 262*e71db39fSAlexander Stein pinctrl_pca9451: pca9451grp { 263*e71db39fSAlexander Stein fsl,pins = /* HYS | PU */ 264*e71db39fSAlexander Stein <MX91_PAD_I2C2_SDA__GPIO1_IO3 0x1200>; 265*e71db39fSAlexander Stein }; 266*e71db39fSAlexander Stein 267*e71db39fSAlexander Stein pinctrl_reg_usdhc2_vmmc: regusdhc2vmmcgrp { 268*e71db39fSAlexander Stein fsl,pins = /* FSEL 2 | DSE X2 */ 269*e71db39fSAlexander Stein <MX91_PAD_SD2_RESET_B__GPIO3_IO7 0x106>; 270*e71db39fSAlexander Stein }; 271*e71db39fSAlexander Stein 272*e71db39fSAlexander Stein /* enable SION for data and cmd pad due to ERR052021 */ 273*e71db39fSAlexander Stein pinctrl_usdhc1: usdhc1grp { 274*e71db39fSAlexander Stein fsl,pins = /* PD | FSEL 3 | DSE X5 */ 275*e71db39fSAlexander Stein <MX91_PAD_SD1_CLK__USDHC1_CLK 0x5be>, 276*e71db39fSAlexander Stein /* HYS | FSEL 0 | no drive */ 277*e71db39fSAlexander Stein <MX91_PAD_SD1_STROBE__USDHC1_STROBE 0x1000>, 278*e71db39fSAlexander Stein /* HYS | FSEL 3 | X5 */ 279*e71db39fSAlexander Stein <MX91_PAD_SD1_CMD__USDHC1_CMD 0x400011be>, 280*e71db39fSAlexander Stein /* HYS | FSEL 3 | X4 */ 281*e71db39fSAlexander Stein <MX91_PAD_SD1_DATA0__USDHC1_DATA0 0x4000119e>, 282*e71db39fSAlexander Stein <MX91_PAD_SD1_DATA1__USDHC1_DATA1 0x4000119e>, 283*e71db39fSAlexander Stein <MX91_PAD_SD1_DATA2__USDHC1_DATA2 0x4000119e>, 284*e71db39fSAlexander Stein <MX91_PAD_SD1_DATA3__USDHC1_DATA3 0x4000119e>, 285*e71db39fSAlexander Stein <MX91_PAD_SD1_DATA4__USDHC1_DATA4 0x4000119e>, 286*e71db39fSAlexander Stein <MX91_PAD_SD1_DATA5__USDHC1_DATA5 0x4000119e>, 287*e71db39fSAlexander Stein <MX91_PAD_SD1_DATA6__USDHC1_DATA6 0x4000119e>, 288*e71db39fSAlexander Stein <MX91_PAD_SD1_DATA7__USDHC1_DATA7 0x4000119e>; 289*e71db39fSAlexander Stein }; 290*e71db39fSAlexander Stein 291*e71db39fSAlexander Stein pinctrl_wdog: wdoggrp { 292*e71db39fSAlexander Stein fsl,pins = /* PU | FSEL 1 | DSE X4 */ 293*e71db39fSAlexander Stein <MX91_PAD_WDOG_ANY__WDOG1_WDOG_ANY 0x31e>; 294*e71db39fSAlexander Stein }; 295*e71db39fSAlexander Stein}; 296