// SPDX-License-Identifier: (GPL-2.0-only OR MIT) /* * Copyright 2025-2026 NXP */ #include #include #include #include "imx952-clock.h" #include "imx952-pinfunc.h" #include "imx952-power.h" / { interrupt-parent = <&gic>; #address-cells = <2>; #size-cells = <2>; clk_ext1: clock-ext1 { compatible = "fixed-clock"; #clock-cells = <0>; clock-frequency = <133000000>; clock-output-names = "clk_ext1"; }; clk_dummy: clock-dummy { compatible = "fixed-clock"; #clock-cells = <0>; clock-frequency = <0>; clock-output-names = "dummy"; }; clk_ldb_pll_pixel: clock-ldb-pll-div7 { compatible = "fixed-factor-clock"; clocks = <&scmi_clk IMX952_CLK_LDBPLL>; #clock-cells = <0>; clock-div = <7>; clock-mult = <1>; clock-output-names = "ldb_pll_div7"; }; clk_osc_24m: clock-osc-24m { compatible = "fixed-clock"; #clock-cells = <0>; clock-frequency = <24000000>; clock-output-names = "osc_24m"; }; cpus { #address-cells = <1>; #size-cells = <0>; idle-states { entry-method = "psci"; cpu_pd_wait: cpu-pd-wait { compatible = "arm,idle-state"; arm,psci-suspend-param = <0x0010033>; local-timer-stop; entry-latency-us = <1000>; exit-latency-us = <700>; min-residency-us = <2700>; wakeup-latency-us = <1500>; }; }; A55_0: cpu@0 { device_type = "cpu"; compatible = "arm,cortex-a55"; reg = <0x0>; enable-method = "psci"; #cooling-cells = <2>; cpu-idle-states = <&cpu_pd_wait>; power-domains = <&scmi_perf IMX952_PERF_A55>; power-domain-names = "perf"; i-cache-size = <32768>; i-cache-line-size = <64>; i-cache-sets = <128>; d-cache-size = <32768>; d-cache-line-size = <64>; d-cache-sets = <128>; next-level-cache = <&l2_cache_l0>; }; A55_1: cpu@100 { device_type = "cpu"; compatible = "arm,cortex-a55"; reg = <0x100>; enable-method = "psci"; #cooling-cells = <2>; cpu-idle-states = <&cpu_pd_wait>; power-domains = <&scmi_perf IMX952_PERF_A55>; power-domain-names = "perf"; i-cache-size = <32768>; i-cache-line-size = <64>; i-cache-sets = <128>; d-cache-size = <32768>; d-cache-line-size = <64>; d-cache-sets = <128>; next-level-cache = <&l2_cache_l1>; }; A55_2: cpu@200 { device_type = "cpu"; compatible = "arm,cortex-a55"; reg = <0x200>; enable-method = "psci"; #cooling-cells = <2>; cpu-idle-states = <&cpu_pd_wait>; power-domains = <&scmi_perf IMX952_PERF_A55>; power-domain-names = "perf"; i-cache-size = <32768>; i-cache-line-size = <64>; i-cache-sets = <128>; d-cache-size = <32768>; d-cache-line-size = <64>; d-cache-sets = <128>; next-level-cache = <&l2_cache_l2>; }; A55_3: cpu@300 { device_type = "cpu"; compatible = "arm,cortex-a55"; reg = <0x300>; enable-method = "psci"; #cooling-cells = <2>; cpu-idle-states = <&cpu_pd_wait>; power-domains = <&scmi_perf IMX952_PERF_A55>; power-domain-names = "perf"; i-cache-size = <32768>; i-cache-line-size = <64>; i-cache-sets = <128>; d-cache-size = <32768>; d-cache-line-size = <64>; d-cache-sets = <128>; next-level-cache = <&l2_cache_l3>; }; l2_cache_l0: l2-cache-l0 { compatible = "cache"; cache-size = <65536>; cache-line-size = <64>; cache-sets = <256>; cache-level = <2>; cache-unified; next-level-cache = <&l3_cache>; }; l2_cache_l1: l2-cache-l1 { compatible = "cache"; cache-size = <65536>; cache-line-size = <64>; cache-sets = <256>; cache-level = <2>; cache-unified; next-level-cache = <&l3_cache>; }; l2_cache_l2: l2-cache-l2 { compatible = "cache"; cache-size = <65536>; cache-line-size = <64>; cache-sets = <256>; cache-level = <2>; cache-unified; next-level-cache = <&l3_cache>; }; l2_cache_l3: l2-cache-l3 { compatible = "cache"; cache-size = <65536>; cache-line-size = <64>; cache-sets = <256>; cache-level = <2>; cache-unified; next-level-cache = <&l3_cache>; }; l3_cache: l3-cache { compatible = "cache"; cache-size = <524288>; cache-line-size = <64>; cache-sets = <512>; cache-level = <3>; cache-unified; }; cpu-map { cluster0 { core0 { cpu = <&A55_0>; }; core1 { cpu = <&A55_1>; }; core2 { cpu = <&A55_2>; }; core3 { cpu = <&A55_3>; }; }; }; }; firmware { scmi { compatible = "arm,scmi"; mboxes = <&mu2 5 0>, <&mu2 3 0>, <&mu2 3 1>, <&mu2 5 1>; shmem = <&scmi_buf0>, <&scmi_buf1>; #address-cells = <1>; #size-cells = <0>; arm,max-rx-timeout-ms = <5000>; scmi_devpd: protocol@11 { reg = <0x11>; #power-domain-cells = <1>; }; scmi_sys_power: protocol@12 { reg = <0x12>; }; scmi_perf: protocol@13 { reg = <0x13>; #power-domain-cells = <1>; }; scmi_clk: protocol@14 { reg = <0x14>; #clock-cells = <1>; }; scmi_sensor: protocol@15 { reg = <0x15>; #thermal-sensor-cells = <1>; }; scmi_iomuxc: protocol@19 { reg = <0x19>; }; scmi_lmm: protocol@80 { reg = <0x80>; }; scmi_bbm: protocol@81 { reg = <0x81>; }; scmi_cpu: protocol@82 { reg = <0x82>; }; scmi_misc: protocol@84 { reg = <0x84>; }; }; }; gic: interrupt-controller@48000000 { compatible = "arm,gic-v3"; reg = <0 0x48000000 0 0x10000>, <0 0x48060000 0 0xc0000>; interrupts = ; interrupt-parent = <&gic>; interrupt-controller; #interrupt-cells = <3>; dma-noncoherent; #address-cells = <2>; #size-cells = <2>; ranges; its: msi-controller@48040000 { compatible = "arm,gic-v3-its"; reg = <0 0x48040000 0 0x20000>; msi-controller; #msi-cells = <1>; dma-noncoherent; }; }; pmu { compatible = "arm,cortex-a55-pmu"; interrupts = ; }; psci { compatible = "arm,psci-1.0"; method = "smc"; }; timer { compatible = "arm,armv8-timer"; interrupts = , , , ; clock-frequency = <24000000>; arm,no-tick-in-suspend; interrupt-parent = <&gic>; }; usbphynop1: usbphynop1 { compatible = "usb-nop-xceiv"; #phy-cells = <0>; clocks = <&clk_dummy>; clock-names = "main_clk"; }; usbphynop2: usbphynop2 { compatible = "usb-nop-xceiv"; #phy-cells = <0>; clocks = <&clk_dummy>; clock-names = "main_clk"; }; soc { compatible = "simple-bus"; #address-cells = <2>; #size-cells = <2>; ranges = <0x0 0x0 0x0 0x0 0x0 0x80000000>, <0x0 0x28000000 0x0 0x28000000 0x0 0x10000000>; aips2: bus@42000000 { compatible = "fsl,aips-bus", "simple-bus"; reg = <0x0 0x42000000 0x0 0x800000>; ranges = <0x42000000 0x0 0x42000000 0x8000000>, <0x28000000 0x0 0x28000000 0x10000000>; #address-cells = <1>; #size-cells = <1>; mu7: mailbox@42050000 { compatible = "fsl,imx95-mu"; reg = <0x42050000 0x10000>; interrupts = ; clocks = <&scmi_clk IMX952_CLK_BUSWAKEUP>; #mbox-cells = <2>; status = "disabled"; }; wdog3: watchdog@420b0000 { compatible = "fsl,imx93-wdt"; reg = <0x420b0000 0x10000>; interrupts = ; clocks = <&scmi_clk IMX952_CLK_BUSWAKEUP>; timeout-sec = <40>; status = "disabled"; }; tpm3: pwm@42100000 { compatible = "fsl,imx7ulp-pwm"; reg = <0x42100000 0x1000>; clocks = <&scmi_clk IMX952_CLK_BUSWAKEUP>; #pwm-cells = <3>; status = "disabled"; }; tpm4: pwm@42110000 { compatible = "fsl,imx7ulp-pwm"; reg = <0x42110000 0x1000>; clocks = <&scmi_clk IMX952_CLK_TPM4>; #pwm-cells = <3>; status = "disabled"; }; tpm5: pwm@42120000 { compatible = "fsl,imx7ulp-pwm"; reg = <0x42120000 0x1000>; clocks = <&scmi_clk IMX952_CLK_TPM5>; #pwm-cells = <3>; status = "disabled"; }; tpm6: pwm@42130000 { compatible = "fsl,imx7ulp-pwm"; reg = <0x42130000 0x1000>; clocks = <&scmi_clk IMX952_CLK_TPM6>; #pwm-cells = <3>; status = "disabled"; }; i3c2: i3c@42140000 { compatible = "silvaco,i3c-master-v1"; reg = <0x42140000 0x10000>; interrupts = ; #address-cells = <3>; #size-cells = <0>; clocks = <&scmi_clk IMX952_CLK_BUSWAKEUP>, <&scmi_clk IMX952_CLK_I3C2SLOW>, <&clk_dummy>; clock-names = "pclk", "fast_clk", "slow_clk"; status = "disabled"; }; lpi2c3: i2c@42150000 { compatible = "fsl,imx95-lpi2c", "fsl,imx7ulp-lpi2c"; reg = <0x42150000 0x10000>; interrupts = ; clocks = <&scmi_clk IMX952_CLK_LPI2C3>, <&scmi_clk IMX952_CLK_BUSWAKEUP>; clock-names = "per", "ipg"; #address-cells = <1>; #size-cells = <0>; dmas = <&edma2 8 0 0>, <&edma2 9 0 FSL_EDMA_RX>; dma-names = "tx", "rx"; status = "disabled"; }; lpi2c4: i2c@42160000 { compatible = "fsl,imx95-lpi2c", "fsl,imx7ulp-lpi2c"; reg = <0x42160000 0x10000>; interrupts = ; clocks = <&scmi_clk IMX952_CLK_LPI2C4>, <&scmi_clk IMX952_CLK_BUSWAKEUP>; clock-names = "per", "ipg"; #address-cells = <1>; #size-cells = <0>; dmas = <&edma2 10 0 0>, <&edma2 11 0 FSL_EDMA_RX>; dma-names = "tx", "rx"; status = "disabled"; }; lpspi3: spi@42170000 { #address-cells = <1>; #size-cells = <0>; compatible = "fsl,imx95-spi", "fsl,imx7ulp-spi"; reg = <0x42170000 0x10000>; interrupts = ; clocks = <&scmi_clk IMX952_CLK_LPSPI3>, <&scmi_clk IMX952_CLK_BUSWAKEUP>; clock-names = "per", "ipg"; dmas = <&edma2 12 0 0>, <&edma2 13 0 FSL_EDMA_RX>; dma-names = "tx", "rx"; status = "disabled"; }; lpspi4: spi@42180000 { #address-cells = <1>; #size-cells = <0>; compatible = "fsl,imx95-spi", "fsl,imx7ulp-spi"; reg = <0x42180000 0x10000>; interrupts = ; clocks = <&scmi_clk IMX952_CLK_LPSPI4>, <&scmi_clk IMX952_CLK_BUSWAKEUP>; clock-names = "per", "ipg"; dmas = <&edma2 14 0 0>, <&edma2 15 0 FSL_EDMA_RX>; dma-names = "tx", "rx"; status = "disabled"; }; lpuart3: serial@42190000 { compatible = "fsl,imx95-lpuart", "fsl,imx8ulp-lpuart", "fsl,imx7ulp-lpuart"; reg = <0x42190000 0x1000>; interrupts = ; clocks = <&scmi_clk IMX952_CLK_LPUART3>; clock-names = "ipg"; dmas = <&edma2 18 0 FSL_EDMA_RX>, <&edma2 17 0 0>; dma-names = "rx", "tx"; status = "disabled"; }; lpuart4: serial@421a0000 { compatible = "fsl,imx95-lpuart", "fsl,imx8ulp-lpuart", "fsl,imx7ulp-lpuart"; reg = <0x421a0000 0x1000>; interrupts = ; clocks = <&scmi_clk IMX952_CLK_LPUART4>; clock-names = "ipg"; dmas = <&edma2 20 0 FSL_EDMA_RX>, <&edma2 19 0 0>; dma-names = "rx", "tx"; status = "disabled"; }; lpuart5: serial@421b0000 { compatible = "fsl,imx95-lpuart", "fsl,imx8ulp-lpuart", "fsl,imx7ulp-lpuart"; reg = <0x421b0000 0x1000>; interrupts = ; clocks = <&scmi_clk IMX952_CLK_LPUART5>; clock-names = "ipg"; dmas = <&edma2 22 0 FSL_EDMA_RX>, <&edma2 21 0 0>; dma-names = "rx", "tx"; status = "disabled"; }; lpuart6: serial@421c0000 { compatible = "fsl,imx95-lpuart", "fsl,imx8ulp-lpuart", "fsl,imx7ulp-lpuart"; reg = <0x421c0000 0x1000>; interrupts = ; clocks = <&scmi_clk IMX952_CLK_LPUART6>; clock-names = "ipg"; dmas = <&edma2 24 0 FSL_EDMA_RX>, <&edma2 23 0 0>; dma-names = "rx", "tx"; status = "disabled"; }; flexcan2: can@421d0000 { compatible = "fsl,imx95-flexcan"; reg = <0x421d0000 0x10000>; interrupts = ; clocks = <&scmi_clk IMX952_CLK_BUSWAKEUP>, <&scmi_clk IMX952_CLK_CAN2>; clock-names = "ipg", "per"; assigned-clocks = <&scmi_clk IMX952_CLK_CAN2>; assigned-clock-parents = <&scmi_clk IMX952_CLK_SYSPLL1_PFD1_DIV2>; assigned-clock-rates = <40000000>; fsl,clk-source = /bits/ 8 <0>; status = "disabled"; }; flexcan3: can@42220000 { compatible = "fsl,imx95-flexcan"; reg = <0x42220000 0x10000>; interrupts = ; clocks = <&scmi_clk IMX952_CLK_BUSWAKEUP>, <&scmi_clk IMX952_CLK_CAN3>; clock-names = "ipg", "per"; assigned-clocks = <&scmi_clk IMX952_CLK_CAN3>; assigned-clock-parents = <&scmi_clk IMX952_CLK_SYSPLL1_PFD1_DIV2>; assigned-clock-rates = <40000000>; fsl,clk-source = /bits/ 8 <0>; status = "disabled"; }; lpuart7: serial@422b0000 { compatible = "fsl,imx95-lpuart", "fsl,imx8ulp-lpuart", "fsl,imx7ulp-lpuart"; reg = <0x422b0000 0x1000>; interrupts = ; clocks = <&scmi_clk IMX952_CLK_LPUART7>; clock-names = "ipg"; dmas = <&edma2 88 0 FSL_EDMA_RX>, <&edma2 87 0 0>; dma-names = "rx", "tx"; status = "disabled"; }; lpuart8: serial@422c0000 { compatible = "fsl,imx95-lpuart", "fsl,imx8ulp-lpuart", "fsl,imx7ulp-lpuart"; reg = <0x422c0000 0x1000>; interrupts = ; clocks = <&scmi_clk IMX952_CLK_LPUART8>; clock-names = "ipg"; dmas = <&edma2 90 0 FSL_EDMA_RX>, <&edma2 89 0 0>; dma-names = "rx", "tx"; status = "disabled"; }; lpi2c5: i2c@422d0000 { compatible = "fsl,imx95-lpi2c", "fsl,imx7ulp-lpi2c"; reg = <0x422d0000 0x10000>; interrupts = ; clocks = <&scmi_clk IMX952_CLK_LPI2C5>, <&scmi_clk IMX952_CLK_BUSWAKEUP>; clock-names = "per", "ipg"; #address-cells = <1>; #size-cells = <0>; dmas = <&edma2 71 0 0>, <&edma2 72 0 FSL_EDMA_RX>; dma-names = "tx", "rx"; status = "disabled"; }; lpi2c6: i2c@422e0000 { compatible = "fsl,imx95-lpi2c", "fsl,imx7ulp-lpi2c"; reg = <0x422e0000 0x10000>; interrupts = ; clocks = <&scmi_clk IMX952_CLK_LPI2C6>, <&scmi_clk IMX952_CLK_BUSWAKEUP>; clock-names = "per", "ipg"; #address-cells = <1>; #size-cells = <0>; dmas = <&edma2 73 0 0>, <&edma2 74 0 FSL_EDMA_RX>; dma-names = "tx", "rx"; status = "disabled"; }; lpi2c7: i2c@422f0000 { compatible = "fsl,imx95-lpi2c", "fsl,imx7ulp-lpi2c"; reg = <0x422f0000 0x10000>; interrupts = ; clocks = <&scmi_clk IMX952_CLK_LPI2C7>, <&scmi_clk IMX952_CLK_BUSWAKEUP>; clock-names = "per", "ipg"; #address-cells = <1>; #size-cells = <0>; dmas = <&edma2 75 0 0>, <&edma2 76 0 FSL_EDMA_RX>; dma-names = "tx", "rx"; status = "disabled"; }; lpi2c8: i2c@42300000 { compatible = "fsl,imx95-lpi2c", "fsl,imx7ulp-lpi2c"; reg = <0x42300000 0x10000>; interrupts = ; clocks = <&scmi_clk IMX952_CLK_LPI2C8>, <&scmi_clk IMX952_CLK_BUSWAKEUP>; clock-names = "per", "ipg"; #address-cells = <1>; #size-cells = <0>; dmas = <&edma2 77 0 0>, <&edma2 78 0 FSL_EDMA_RX>; dma-names = "tx", "rx"; status = "disabled"; }; lpspi5: spi@42310000 { compatible = "fsl,imx95-spi", "fsl,imx7ulp-spi"; reg = <0x42310000 0x10000>; interrupts = ; #address-cells = <1>; #size-cells = <0>; clocks = <&scmi_clk IMX952_CLK_LPSPI5>, <&scmi_clk IMX952_CLK_BUSWAKEUP>; clock-names = "per", "ipg"; dmas = <&edma2 79 0 0>, <&edma2 80 0 FSL_EDMA_RX>; dma-names = "tx", "rx"; status = "disabled"; }; lpspi6: spi@42320000 { compatible = "fsl,imx95-spi", "fsl,imx7ulp-spi"; reg = <0x42320000 0x10000>; interrupts = ; #address-cells = <1>; #size-cells = <0>; clocks = <&scmi_clk IMX952_CLK_LPSPI6>, <&scmi_clk IMX952_CLK_BUSWAKEUP>; clock-names = "per", "ipg"; dmas = <&edma2 81 0 0>, <&edma2 82 0 FSL_EDMA_RX>; dma-names = "tx", "rx"; status = "disabled"; }; lpspi7: spi@42330000 { compatible = "fsl,imx95-spi", "fsl,imx7ulp-spi"; reg = <0x42330000 0x10000>; interrupts = ; #address-cells = <1>; #size-cells = <0>; clocks = <&scmi_clk IMX952_CLK_LPSPI7>, <&scmi_clk IMX952_CLK_BUSWAKEUP>; clock-names = "per", "ipg"; dmas = <&edma2 83 0 0>, <&edma2 84 0 FSL_EDMA_RX>; dma-names = "tx", "rx"; status = "disabled"; }; lpspi8: spi@42340000 { compatible = "fsl,imx95-spi", "fsl,imx7ulp-spi"; reg = <0x42340000 0x10000>; interrupts = ; #address-cells = <1>; #size-cells = <0>; clocks = <&scmi_clk IMX952_CLK_LPSPI8>, <&scmi_clk IMX952_CLK_BUSWAKEUP>; clock-names = "per", "ipg"; dmas = <&edma2 85 0 0>, <&edma2 86 0 FSL_EDMA_RX>; dma-names = "tx", "rx"; status = "disabled"; }; mu8: mailbox@42350000 { compatible = "fsl,imx95-mu"; reg = <0x42350000 0x10000>; interrupts = ; clocks = <&scmi_clk IMX952_CLK_BUSWAKEUP>; #mbox-cells = <2>; status = "disabled"; }; xspi1: spi@42400000 { compatible = "nxp,imx952-xspi", "nxp,imx94-xspi"; reg = <0x42400000 0x50000>, <0x28000000 0x8000000>; reg-names = "base", "mmap"; interrupts = , , , , ; #address-cells = <1>; #size-cells = <0>; clocks = <&scmi_clk IMX952_CLK_XSPI1>; clock-names = "per"; assigned-clocks = <&scmi_clk IMX952_CLK_XSPI1>; assigned-clock-parents = <&scmi_clk IMX952_CLK_SYSPLL1_PFD1>; assigned-clock-rates = <200000000>; status = "disabled"; }; }; aips3: bus@42800000 { compatible = "fsl,aips-bus", "simple-bus"; reg = <0 0x42800000 0 0x800000>; #address-cells = <1>; #size-cells = <1>; ranges = <0x42800000 0x0 0x42800000 0x800000>; edma2: dma-controller@42800000 { compatible = "fsl,imx95-edma5"; reg = <0x42800000 0x210000>; clocks = <&scmi_clk IMX952_CLK_BUSWAKEUP>; clock-names = "dma"; #dma-cells = <3>; dma-channels = <64>; interrupts = , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , ; //error irq }; usdhc1: mmc@42c20000 { compatible = "fsl,imx95-usdhc", "fsl,imx8mm-usdhc"; reg = <0x42c20000 0x10000>; interrupts = ; clocks = <&scmi_clk IMX952_CLK_BUSWAKEUP>, <&scmi_clk IMX952_CLK_WAKEUPAXI>, <&scmi_clk IMX952_CLK_USDHC1>; clock-names = "ipg", "ahb", "per"; assigned-clocks = <&scmi_clk IMX952_CLK_USDHC1>; assigned-clock-parents = <&scmi_clk IMX952_CLK_SYSPLL1_PFD1>; assigned-clock-rates = <400000000>; bus-width = <8>; fsl,tuning-start-tap = <1>; fsl,tuning-step= <2>; status = "disabled"; }; usdhc2: mmc@42c30000 { compatible = "fsl,imx95-usdhc", "fsl,imx8mm-usdhc"; reg = <0x42c30000 0x10000>; interrupts = ; clocks = <&scmi_clk IMX952_CLK_BUSWAKEUP>, <&scmi_clk IMX952_CLK_WAKEUPAXI>, <&scmi_clk IMX952_CLK_USDHC2>; clock-names = "ipg", "ahb", "per"; assigned-clocks = <&scmi_clk IMX952_CLK_USDHC2>; assigned-clock-parents = <&scmi_clk IMX952_CLK_SYSPLL1_PFD1>; assigned-clock-rates = <200000000>; bus-width = <4>; fsl,tuning-start-tap = <1>; fsl,tuning-step= <2>; status = "disabled"; }; usdhc3: mmc@42c40000 { compatible = "fsl,imx95-usdhc", "fsl,imx8mm-usdhc"; reg = <0x42c40000 0x10000>; interrupts = ; clocks = <&scmi_clk IMX952_CLK_BUSWAKEUP>, <&scmi_clk IMX952_CLK_WAKEUPAXI>, <&scmi_clk IMX952_CLK_USDHC3>; clock-names = "ipg", "ahb", "per"; bus-width = <4>; fsl,tuning-start-tap = <1>; fsl,tuning-step = <2>; status = "disabled"; }; }; aips5: bus@43000000 { compatible = "fsl,aips-bus", "simple-bus"; reg = <0 0x43000000 0 0x800000>; #address-cells = <1>; #size-cells = <1>; ranges = <0x43000000 0x0 0x43000000 0x800000>; asrc1: asrc@43000000 { compatible = "fsl,imx952-asrc"; reg = <0x43000000 0x10000>; interrupts = ; clocks = <&scmi_clk IMX952_CLK_BUSWAKEUP>, <&scmi_clk IMX952_CLK_BUSWAKEUP>, <&scmi_clk IMX952_CLK_ASRC1>, <&scmi_clk IMX952_CLK_ASRC2>, <&clk_dummy>, <&clk_dummy>, <&clk_dummy>, <&clk_dummy>, <&clk_dummy>, <&clk_dummy>, <&clk_dummy>, <&clk_dummy>, <&clk_dummy>, <&clk_dummy>, <&clk_dummy>, <&clk_dummy>, <&clk_dummy>, <&clk_dummy>, <&clk_dummy>; clock-names = "mem", "ipg", "asrck_0", "asrck_1", "asrck_2", "asrck_3", "asrck_4", "asrck_5", "asrck_6", "asrck_7", "asrck_8", "asrck_9", "asrck_a", "asrck_b", "asrck_c", "asrck_d", "asrck_e", "asrck_f", "spba"; dmas = <&edma2 97 0 0>, <&edma2 98 0 0>, <&edma2 99 0 0>, <&edma2 100 0 FSL_EDMA_RX>, <&edma2 101 0 FSL_EDMA_RX>, <&edma2 102 0 FSL_EDMA_RX>; /* tx* is output channel of asrc, it is rx channel for eDMA */ dma-names = "rxa", "rxb", "rxc", "txa", "txb", "txc"; #sound-dai-cells = <0>; fsl,asrc-rate = <8000>; fsl,asrc-width = <16>; status = "disabled"; }; asrc2: asrc@430f0000 { compatible = "fsl,imx952-asrc"; reg = <0x430f0000 0x10000>; interrupts = ; clocks = <&scmi_clk IMX952_CLK_BUSWAKEUP>, <&scmi_clk IMX952_CLK_BUSWAKEUP>, <&scmi_clk IMX952_CLK_ASRC1>, <&scmi_clk IMX952_CLK_ASRC2>, <&clk_dummy>, <&clk_dummy>, <&clk_dummy>, <&clk_dummy>, <&clk_dummy>, <&clk_dummy>, <&clk_dummy>, <&clk_dummy>, <&clk_dummy>, <&clk_dummy>, <&clk_dummy>, <&clk_dummy>, <&clk_dummy>, <&clk_dummy>, <&clk_dummy>; clock-names = "mem", "ipg", "asrck_0", "asrck_1", "asrck_2", "asrck_3", "asrck_4", "asrck_5", "asrck_6", "asrck_7", "asrck_8", "asrck_9", "asrck_a", "asrck_b", "asrck_c", "asrck_d", "asrck_e", "asrck_f", "spba"; dmas = <&edma2 103 0 0>, <&edma2 104 0 0>, <&edma2 105 0 0>, <&edma2 106 0 FSL_EDMA_RX>, <&edma2 107 0 FSL_EDMA_RX>, <&edma2 108 0 FSL_EDMA_RX>; /* tx* is output channel of asrc, it is rx channel for eDMA */ dma-names = "rxa", "rxb", "rxc", "txa", "txb", "txc"; #sound-dai-cells = <0>; fsl,asrc-rate = <8000>; fsl,asrc-width = <16>; status = "disabled"; }; amix: amix@431f0000 { compatible = "fsl,imx952-audmix"; reg = <0x431f0000 0x10000>; clocks = <&scmi_clk IMX952_CLK_AUDMIX1>; clock-names = "ipg"; status = "disabled"; }; sai3: sai@433e0000 { compatible = "fsl,imx952-sai", "fsl,imx95-sai"; reg = <0x433e0000 0x10000>; interrupts = ; clocks = <&scmi_clk IMX952_CLK_BUSWAKEUP>, <&clk_dummy>, <&scmi_clk IMX952_CLK_SAI3>, <&clk_dummy>, <&clk_dummy>; clock-names = "bus", "mclk0", "mclk1", "mclk2", "mclk3"; dmas = <&edma2 61 0 FSL_EDMA_RX>, <&edma2 60 0 0>; dma-names = "rx", "tx"; #sound-dai-cells = <0>; status = "disabled"; }; sai4: sai@433f0000 { compatible = "fsl,imx952-sai", "fsl,imx95-sai"; reg = <0x433f0000 0x10000>; interrupts = ; clocks = <&scmi_clk IMX952_CLK_BUSWAKEUP>, <&clk_dummy>, <&scmi_clk IMX952_CLK_SAI4>, <&clk_dummy>, <&clk_dummy>; clock-names = "bus", "mclk0", "mclk1", "mclk2", "mclk3"; dmas = <&edma2 68 0 FSL_EDMA_RX>, <&edma2 67 0 0>; dma-names = "rx", "tx"; #sound-dai-cells = <0>; status = "disabled"; }; sai5: sai@43400000 { compatible = "fsl,imx952-sai", "fsl,imx95-sai"; reg = <0x43400000 0x10000>; interrupts = ; clocks = <&scmi_clk IMX952_CLK_BUSWAKEUP>, <&clk_dummy>, <&scmi_clk IMX952_CLK_SAI5>, <&clk_dummy>, <&clk_dummy>; clock-names = "bus", "mclk0", "mclk1", "mclk2", "mclk3"; dmas = <&edma2 70 0 FSL_EDMA_RX>, <&edma2 69 0 0>; dma-names = "rx", "tx"; #sound-dai-cells = <0>; status = "disabled"; }; sai6: sai@43410000 { compatible = "fsl,imx952-sai", "fsl,imx95-sai"; reg = <0x43410000 0x10000>; interrupts = ; clocks = <&scmi_clk IMX952_CLK_BUSWAKEUP>, <&clk_dummy>, <&scmi_clk IMX952_CLK_SAI3>, <&clk_dummy>, <&clk_dummy>; clock-names = "bus", "mclk0", "mclk1", "mclk2", "mclk3"; dmas = <&edma2 96 0 FSL_EDMA_RX>, <&edma2 95 0 0>; dma-names = "rx", "tx"; #sound-dai-cells = <0>; status = "disabled"; }; }; gpio2: gpio@43810000 { compatible = "fsl,imx95-gpio", "fsl,imx8ulp-gpio"; reg = <0x0 0x43810000 0x0 0x1000>; gpio-controller; #gpio-cells = <2>; interrupts = , ; interrupt-controller; #interrupt-cells = <2>; clocks = <&scmi_clk IMX952_CLK_BUSWAKEUP>, <&scmi_clk IMX952_CLK_BUSWAKEUP>; clock-names = "gpio", "port"; gpio-ranges = <&scmi_iomuxc 0 4 32>; ngpios = <32>; }; gpio3: gpio@43820000 { compatible = "fsl,imx95-gpio", "fsl,imx8ulp-gpio"; reg = <0x0 0x43820000 0x0 0x1000>; gpio-controller; #gpio-cells = <2>; interrupts = , ; interrupt-controller; #interrupt-cells = <2>; clocks = <&scmi_clk IMX952_CLK_BUSWAKEUP>, <&scmi_clk IMX952_CLK_BUSWAKEUP>; clock-names = "gpio", "port"; gpio-ranges = <&scmi_iomuxc 0 115 8>, <&scmi_iomuxc 8 85 18>, <&scmi_iomuxc 26 53 2>, <&scmi_iomuxc 28 0 4>; ngpios = <32>; }; gpio4: gpio@43840000 { compatible = "fsl,imx95-gpio", "fsl,imx8ulp-gpio"; reg = <0x0 0x43840000 0x0 0x1000>; gpio-controller; #gpio-cells = <2>; interrupts = , ; interrupt-controller; #interrupt-cells = <2>; clocks = <&scmi_clk IMX952_CLK_BUSWAKEUP>, <&scmi_clk IMX952_CLK_BUSWAKEUP>; clock-names = "gpio", "port"; gpio-ranges = <&scmi_iomuxc 0 57 28>, <&scmi_iomuxc 28 55 2>; ngpios = <30>; }; gpio5: gpio@43850000 { compatible = "fsl,imx95-gpio", "fsl,imx8ulp-gpio"; reg = <0x0 0x43850000 0x0 0x1000>; gpio-controller; #gpio-cells = <2>; interrupts = , ; interrupt-controller; #interrupt-cells = <2>; clocks = <&scmi_clk IMX952_CLK_BUSWAKEUP>, <&scmi_clk IMX952_CLK_BUSWAKEUP>; clock-names = "gpio", "port"; gpio-ranges = <&scmi_iomuxc 0 103 12>, <&scmi_iomuxc 12 36 6>; ngpios = <18>; }; aips1: bus@44000000 { compatible = "fsl,aips-bus", "simple-bus"; reg = <0x0 0x44000000 0x0 0x800000>; ranges = <0x44000000 0x0 0x44000000 0x800000>; #address-cells = <1>; #size-cells = <1>; edma1: dma-controller@44000000 { compatible = "fsl,imx93-edma3"; reg = <0x44000000 0x210000>; clocks = <&scmi_clk IMX952_CLK_BUSAON>; clock-names = "dma"; #dma-cells = <3>; dma-channels = <32>; interrupts = , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , ; //error irq }; mu1: mailbox@44220000 { compatible = "fsl,imx95-mu"; reg = <0x44220000 0x10000>; interrupts = ; clocks = <&scmi_clk IMX952_CLK_BUSAON>; #mbox-cells = <2>; status = "disabled"; }; system_counter: timer@44290000 { compatible = "nxp,imx95-sysctr-timer"; reg = <0x44290000 0x30000>; interrupts = ; clocks = <&clk_osc_24m>; clock-names = "per"; nxp,no-divider; }; i3c1: i3c@44330000 { compatible = "silvaco,i3c-master-v1"; reg = <0x44330000 0x10000>; interrupts = ; #address-cells = <3>; #size-cells = <0>; clocks = <&scmi_clk IMX952_CLK_BUSAON>, <&scmi_clk IMX952_CLK_I3C1SLOW>, <&clk_dummy>; clock-names = "pclk", "fast_clk", "slow_clk"; status = "disabled"; }; lpi2c1: i2c@44340000 { compatible = "fsl,imx95-lpi2c", "fsl,imx7ulp-lpi2c"; reg = <0x44340000 0x10000>; interrupts = ; clocks = <&scmi_clk IMX952_CLK_LPI2C1>, <&scmi_clk IMX952_CLK_BUSAON>; clock-names = "per", "ipg"; #address-cells = <1>; #size-cells = <0>; dmas = <&edma1 12 0 0>, <&edma1 13 0 FSL_EDMA_RX> ; dma-names = "tx", "rx"; status = "disabled"; }; lpi2c2: i2c@44350000 { compatible = "fsl,imx95-lpi2c", "fsl,imx7ulp-lpi2c"; reg = <0x44350000 0x10000>; interrupts = ; clocks = <&scmi_clk IMX952_CLK_LPI2C2>, <&scmi_clk IMX952_CLK_BUSAON>; clock-names = "per", "ipg"; #address-cells = <1>; #size-cells = <0>; dmas = <&edma1 14 0 0>, <&edma1 15 0 FSL_EDMA_RX> ; dma-names = "tx", "rx"; status = "disabled"; }; lpspi1: spi@44360000 { compatible = "fsl,imx95-spi", "fsl,imx7ulp-spi"; reg = <0x44360000 0x10000>; interrupts = ; clocks = <&scmi_clk IMX952_CLK_LPSPI1>, <&scmi_clk IMX952_CLK_BUSAON>; clock-names = "per", "ipg"; #address-cells = <1>; #size-cells = <0>; dmas = <&edma1 16 0 FSL_EDMA_RX>, <&edma1 17 0 0> ; dma-names = "tx", "rx"; status = "disabled"; }; lpspi2: spi@44370000 { compatible = "fsl,imx95-spi", "fsl,imx7ulp-spi"; reg = <0x44370000 0x10000>; interrupts = ; clocks = <&scmi_clk IMX952_CLK_LPSPI2>, <&scmi_clk IMX952_CLK_BUSAON>; clock-names = "per", "ipg"; #address-cells = <1>; #size-cells = <0>; dmas = <&edma1 18 0 FSL_EDMA_RX>, <&edma1 19 0 0> ; dma-names = "tx", "rx"; status = "disabled"; }; lpuart1: serial@44380000 { compatible = "fsl,imx95-lpuart", "fsl,imx8ulp-lpuart", "fsl,imx7ulp-lpuart"; reg = <0x44380000 0x1000>; interrupts = ; clocks = <&scmi_clk IMX952_CLK_LPUART1>; clock-names = "ipg"; dmas = <&edma1 21 0 FSL_EDMA_RX>, <&edma1 20 0 0>; dma-names = "rx", "tx"; status = "disabled"; }; lpuart2: serial@44390000 { compatible = "fsl,imx95-lpuart", "fsl,imx8ulp-lpuart", "fsl,imx7ulp-lpuart"; reg = <0x44390000 0x1000>; interrupts = ; clocks = <&scmi_clk IMX952_CLK_LPUART2>; clock-names = "ipg"; dmas = <&edma1 23 0 FSL_EDMA_RX>, <&edma1 22 0 0>; dma-names = "rx", "tx"; status = "disabled"; }; flexcan1: can@443a0000 { compatible = "fsl,imx95-flexcan"; reg = <0x443a0000 0x10000>; interrupts = ; clocks = <&scmi_clk IMX952_CLK_BUSAON>, <&scmi_clk IMX952_CLK_CAN1>; clock-names = "ipg", "per"; assigned-clocks = <&scmi_clk IMX952_CLK_CAN1>; assigned-clock-parents = <&scmi_clk IMX952_CLK_SYSPLL1_PFD1_DIV2>; assigned-clock-rates = <40000000>; fsl,clk-source = /bits/ 8 <0>; status = "disabled"; }; sai1: sai@443b0000 { compatible = "fsl,imx952-sai", "fsl,imx95-sai"; reg = <0x443b0000 0x10000>; interrupts = ; clocks = <&scmi_clk IMX952_CLK_BUSAON>, <&clk_dummy>, <&scmi_clk IMX952_CLK_SAI1>, <&clk_dummy>, <&clk_dummy>; clock-names = "bus", "mclk0", "mclk1", "mclk2", "mclk3"; dmas = <&edma1 25 0 FSL_EDMA_RX>, <&edma1 24 0 0>; dma-names = "rx", "tx"; #sound-dai-cells = <0>; status = "disabled"; }; micfil: micfil@44520000 { compatible = "fsl,imx943-micfil"; reg = <0x44520000 0x10000>; interrupts = , , , ; clocks = <&scmi_clk IMX952_CLK_BUSAON>, <&scmi_clk IMX952_CLK_PDM>, <&scmi_clk IMX952_CLK_AUDIOPLL1>, <&scmi_clk IMX952_CLK_AUDIOPLL2>, <&clk_dummy>; clock-names = "ipg_clk", "ipg_clk_app", "pll8k", "pll11k", "clkext3"; dmas = <&edma1 6 0 (FSL_EDMA_MULTI_FIFO | FSL_EDMA_RX)>; dma-names = "rx"; #sound-dai-cells = <0>; status = "disabled"; }; adc1: adc@44530000 { compatible = "nxp,imx93-adc"; reg = <0x44530000 0x10000>; interrupts = , , ; clocks = <&scmi_clk IMX952_CLK_ADC>; clock-names = "ipg"; #io-channel-cells = <1>; status = "disabled"; }; mu2: mailbox@445b0000 { compatible = "fsl,imx95-mu"; reg = <0x445b0000 0x1000>; ranges; interrupts = ; #address-cells = <1>; #size-cells = <1>; #mbox-cells = <2>; sram0: sram@445b1000 { compatible = "mmio-sram"; reg = <0x445b1000 0x400>; ranges = <0x0 0x445b1000 0x400>; #address-cells = <1>; #size-cells = <1>; scmi_buf0: scmi-sram-section@0 { compatible = "arm,scmi-shmem"; reg = <0x0 0x80>; }; scmi_buf1: scmi-sram-section@80 { compatible = "arm,scmi-shmem"; reg = <0x80 0x80>; }; }; }; mu3: mailbox@445d0000 { compatible = "fsl,imx95-mu"; reg = <0x445d0000 0x10000>; interrupts = ; clocks = <&scmi_clk IMX952_CLK_BUSAON>; #mbox-cells = <2>; status = "disabled"; }; mu4: mailbox@445f0000 { compatible = "fsl,imx95-mu"; reg = <0x445f0000 0x10000>; interrupts = ; clocks = <&scmi_clk IMX952_CLK_BUSAON>; #mbox-cells = <2>; status = "disabled"; }; mu5: mailbox@44610000 { compatible = "fsl,imx95-mu"; reg = <0x44610000 0x10000>; interrupts = ; clocks = <&scmi_clk IMX952_CLK_BUSAON>; #mbox-cells = <2>; status = "disabled"; }; mu6: mailbox@44630000 { compatible = "fsl,imx95-mu"; reg = <0x44630000 0x10000>; interrupts = ; clocks = <&scmi_clk IMX952_CLK_BUSAON>; #mbox-cells = <2>; status = "disabled"; }; }; v2x_mu0: mailbox@47300000 { compatible = "fsl,imx95-mu-v2x"; reg = <0x0 0x47300000 0x0 0x10000>; interrupts = ; #mbox-cells = <2>; }; v2x_mu2: mailbox@47320000 { compatible = "fsl,imx95-mu-v2x"; reg = <0x0 0x47320000 0x0 0x10000>; interrupts = ; #mbox-cells = <2>; }; v2x_mu3: mailbox@47330000 { compatible = "fsl,imx95-mu-v2x"; reg = <0x0 0x47330000 0x0 0x10000>; interrupts = ; #mbox-cells = <2>; }; v2x_mu4: mailbox@47340000 { compatible = "fsl,imx95-mu-v2x"; reg = <0x0 0x47340000 0x0 0x10000>; interrupts = ; #mbox-cells = <2>; }; v2x_mu: mailbox@47350000 { compatible = "fsl,imx95-mu-v2x"; reg = <0x0 0x47350000 0x0 0x10000>; interrupts = ; #mbox-cells = <2>; }; /* GPIO1 is under exclusive control of System Manager */ gpio1: gpio@47400000 { compatible = "fsl,imx95-gpio", "fsl,imx8ulp-gpio"; reg = <0x0 0x47400000 0x0 0x1000>; gpio-controller; #gpio-cells = <2>; interrupts = , ; interrupt-controller; #interrupt-cells = <2>; clocks = <&scmi_clk IMX952_CLK_M33>, <&scmi_clk IMX952_CLK_M33>; clock-names = "gpio", "port"; gpio-ranges = <&scmi_iomuxc 0 123 16>; ngpios = <16>; status = "disabled"; }; elemu0: mailbox@47520000 { compatible = "fsl,imx95-mu-ele"; reg = <0x0 0x47520000 0x0 0x10000>; interrupts = ; #mbox-cells = <2>; status = "disabled"; }; elemu1: mailbox@47530000 { compatible = "fsl,imx95-mu-ele"; reg = <0x0 0x47530000 0x0 0x10000>; interrupts = ; #mbox-cells = <2>; status = "disabled"; }; elemu2: mailbox@47540000 { compatible = "fsl,imx95-mu-ele"; reg = <0x0 0x47540000 0x0 0x10000>; interrupts = ; #mbox-cells = <2>; status = "disabled"; }; elemu3: mailbox@47550000 { compatible = "fsl,imx95-mu-ele"; reg = <0x0 0x47550000 0x0 0x10000>; interrupts = ; #mbox-cells = <2>; }; elemu4: mailbox@47560000 { compatible = "fsl,imx95-mu-ele"; reg = <0x0 0x47560000 0x0 0x10000>; interrupts = ; #mbox-cells = <2>; status = "disabled"; }; elemu5: mailbox@47570000 { compatible = "fsl,imx95-mu-ele"; reg = <0x0 0x47570000 0x0 0x10000>; interrupts = ; #mbox-cells = <2>; status = "disabled"; }; usb1: usb@4c100000 { compatible = "fsl,imx95-usb", "fsl,imx7d-usb", "fsl,imx27-usb"; reg = <0x0 0x4c100000 0x0 0x200>; interrupts = , ; clocks = <&scmi_clk IMX952_CLK_CGC_HSIOUSB>, <&scmi_clk IMX952_CLK_OSC32K>; clock-names = "usb_ctrl_root", "usb_wakeup"; power-domains = <&scmi_devpd IMX952_PD_HSIO_TOP>; phys = <&usbphynop1>; fsl,usbmisc = <&usbmisc1 0>; status = "disabled"; }; usbmisc1: usbmisc@4c100200 { compatible = "fsl,imx95-usbmisc", "fsl,imx7d-usbmisc", "fsl,imx6q-usbmisc"; #index-cells = <1>; reg = <0x0 0x4c100200 0x0 0x200>, <0x0 0x4c010010 0x0 0x4>; }; usb2: usb@4c200000 { compatible = "fsl,imx95-usb", "fsl,imx7d-usb", "fsl,imx27-usb"; reg = <0x0 0x4c200000 0x0 0x200>; interrupts = , ; clocks = <&scmi_clk IMX952_CLK_CGC_HSIOUSB>, <&scmi_clk IMX952_CLK_OSC32K>; clock-names = "usb_ctrl_root", "usb_wakeup"; power-domains = <&scmi_devpd IMX952_PD_HSIO_TOP>; phys = <&usbphynop2>; fsl,usbmisc = <&usbmisc2 0>; status = "disabled"; }; usbmisc2: usbmisc@4c200200 { compatible = "fsl,imx95-usbmisc", "fsl,imx7d-usbmisc", "fsl,imx6q-usbmisc"; #index-cells = <1>; reg = <0x0 0x4c200200 0x0 0x200>, <0x0 0x4c010014 0x0 0x4>; }; sai2: sai@4c880000 { compatible = "fsl,imx952-sai", "fsl,imx95-sai"; reg = <0x0 0x4c880000 0x0 0x10000>; interrupts = ; clocks = <&scmi_clk IMX952_CLK_BUSNETCMIX>, <&clk_dummy>, <&scmi_clk IMX952_CLK_SAI2>, <&clk_dummy>, <&clk_dummy>; clock-names = "bus", "mclk0", "mclk1", "mclk2", "mclk3"; dmas = <&edma2 59 0 FSL_EDMA_RX>, <&edma2 58 0 0>; dma-names = "rx", "tx"; #sound-dai-cells = <0>; power-domains = <&scmi_devpd IMX952_PD_NETC>; status = "disabled"; }; }; };