// SPDX-License-Identifier: GPL-2.0+ /* * Copyright 2018 NXP */ #include #include "fsl-imx8-ca53.dtsi" #include "fsl-imx8-ca72.dtsi" #include #include #include #include #include #include #include #include / { compatible = "fsl,imx8qm"; interrupt-parent = <&gic>; #address-cells = <2>; #size-cells = <2>; aliases { ethernet0 = &fec1; ethernet1 = &fec2; dsiphy0 = &mipi_dsi_phy1; dsiphy1 = &mipi_dsi_phy2; mipidsi0 = &mipi_dsi1; mipidsi1 = &mipi_dsi2; serial0 = &lpuart0; serial1 = &lpuart1; serial2 = &lpuart2; serial3 = &lpuart3; serial4 = &lpuart4; gpio0 = &gpio0; gpio1 = &gpio1; gpio2 = &gpio2; gpio3 = &gpio3; gpio4 = &gpio4; gpio5 = &gpio5; gpio6 = &gpio6; gpio7 = &gpio7; mmc0 = &usdhc1; mmc1 = &usdhc2; mmc2 = &usdhc3; usb0 = &usbotg1; usbphy0 = &usbphy1; usb1 = &usbotg3; i2c0 = &i2c0; i2c1 = &i2c1; i2c2 = &i2c2; i2c3 = &i2c3; i2c4 = &i2c4; i2c6 = &i2c1_lvds0; i2c8 = &i2c1_lvds1; spi0 = &flexspi0; pci0 = &pciea; pci1 = &pcieb; display0 = &ldb1; display1 = &ldb2; video0 = &dpu1; video1 = &dpu2; }; memory@80000000 { device_type = "memory"; reg = <0x00000000 0x80000000 0 0x40000000>; /* DRAM space - 1, size : 1 GB DRAM */ }; reserved-memory { #address-cells = <2>; #size-cells = <2>; ranges; /* * reserved-memory layout * 0x8800_0000 ~ 0x8FFF_FFFF is reserved for M4 * Shouldn't be used at A core and Linux side. * */ decoder_boot: decoder_boot@0x84000000 { no-map; reg = <0 0x84000000 0 0x2000000>; }; encoder_boot: encoder_boot@0x86000000 { no-map; reg = <0 0x86000000 0 0x400000>; }; rpmsg_reserved: rpmsg@0x90000000 { no-map; reg = <0 0x90000000 0 0x400000>; }; rpmsg_dma_reserved:rpmsg_dma@0x90400000 { compatible = "shared-dma-pool"; no-map; reg = <0 0x90400000 0 0x1C00000>; }; decoder_rpc: decoder_rpc@0x92000000 { no-map; reg = <0 0x92000000 0 0x200000>; }; encoder_rpc: encoder_rpc@0x92200000 { no-map; reg = <0 0x92200000 0 0x200000>; }; dsp_reserved: dsp@0x92400000 { no-map; reg = <0 0x92400000 0 0x2000000>; }; encoder_reserved: encoder_reserved@0x94400000 { no-map; reg = <0 0x94400000 0 0x800000>; }; /* global autoconfigured region for contiguous allocations */ linux,cma { compatible = "shared-dma-pool"; reusable; size = <0 0x3c000000>; alloc-ranges = <0 0x96000000 0 0x3c000000>; linux,cma-default; }; }; gic: interrupt-controller@51a00000 { compatible = "arm,gic-v3"; reg = <0x0 0x51a00000 0 0x10000>, /* GIC Dist */ <0x0 0x51b00000 0 0xC0000>, /* GICR */ <0x0 0x52000000 0 0x2000>, /* GICC */ <0x0 0x52010000 0 0x1000>, /* GICH */ <0x0 0x52020000 0 0x20000>; /* GICV */ #interrupt-cells = <3>; interrupt-controller; interrupts = ; interrupt-parent = <&gic>; }; mu8: mu@5d230000 { compatible = "fsl,imx-m4-mu"; reg = <0x0 0x5d230000 0x0 0x10000>; interrupts = ; power-domains = <&pd_lsio_mu8a>; status = "okay"; }; mu9: mu@5d240000 { compatible = "fsl,imx-m4-mu"; reg = <0x0 0x5d240000 0x0 0x10000>; interrupts = ; power-domains = <&pd_lsio_mu9a>; status = "okay"; }; mu: mu@5d1c0000 { compatible = "fsl,imx8-mu"; reg = <0x0 0x5d1c0000 0x0 0x10000>; interrupts = ; interrupt-parent = <&gic>; #mbox-cells = <4>; status = "okay"; clk: clk { compatible = "fsl,imx8qm-clk"; #clock-cells = <1>; }; iomuxc: iomuxc { compatible = "fsl,imx8qm-iomuxc"; }; }; mu13: mu13@5d280000 { compatible = "fsl,imx8-mu-dsp"; reg = <0x0 0x5d280000 0x0 0x10000>; interrupts = ; fsl,dsp_ap_mu_id = <13>; status = "okay"; }; mu_m0: mu_m0@2d000000 { compatible = "fsl,imx8-mu0-vpu-m0"; reg = <0x0 0x2d000000 0x0 0x20000>; interrupts = ; fsl,vpu_ap_mu_id = <16>; status = "okay"; }; mu1_m0: mu1_m0@2d020000 { compatible = "fsl,imx8-mu1-vpu-m0"; reg = <0x0 0x2d020000 0x0 0x20000>; interrupts = ; fsl,vpu_ap_mu_id = <17>; status = "okay"; }; mu2_m0: mu2_m0@2d040000 { compatible = "fsl,imx8-mu2-vpu-m0"; reg = <0x0 0x2d040000 0x0 0x20000>; interrupts = ; fsl,vpu_ap_mu_id = <18>; status = "okay"; }; timer { compatible = "arm,armv8-timer"; interrupts = , /* Physical Secure */ , /* Physical Non-Secure */ , /* Virtual */ ; /* Hypervisor */ clock-frequency = <8000000>; interrupt-parent = <&gic>; }; smmu: iommu@51400000 { compatible = "arm,mmu-500"; interrupt-parent = <&gic>; reg = <0 0x51400000 0 0x40000>; #global-interrupts = <1>; #iommu-cells = <2>; interrupts = <0 32 4>, <0 32 4>, <0 32 4>, <0 32 4>, <0 32 4>, <0 32 4>, <0 32 4>, <0 32 4>, <0 32 4>, <0 32 4>, <0 32 4>, <0 32 4>, <0 32 4>, <0 32 4>, <0 32 4>, <0 32 4>, <0 32 4>, <0 32 4>, <0 32 4>, <0 32 4>, <0 32 4>, <0 32 4>, <0 32 4>, <0 32 4>, <0 32 4>, <0 32 4>, <0 32 4>, <0 32 4>, <0 32 4>, <0 32 4>, <0 32 4>, <0 32 4>, <0 32 4>; }; cci: cci@52090000 { compatible = "arm,cci-400"; #address-cells = <1>; #size-cells = <1>; reg = <0 0x52090000 0 0x1000>; ranges = <0 0 0x52090000 0x10000>; pmu@9000 { compatible = "arm,cci-400-pmu,r1", "arm,cci-400-pmu"; reg = <0x9000 0x4000>; interrupts = , , , , , ; interrupt-parent = <&gic>; }; }; #include "fsl-imx8qm-device.dtsi" }; &A53_0 { operating-points = < /* kHz uV */ /* voltage is maintained by SCFW, so no need here */ 1200000 0 1104000 0 900000 0 600000 0 >; clocks = <&clk IMX8QM_A53_DIV>; clock-latency = <61036>; #cooling-cells = <2>; /delete-property/ cpu-idle-states; }; &A72_0 { operating-points = < /* kHz uV */ /* voltage is maintained by SCFW, so no need here */ 1596000 0 1296000 0 1056000 0 600000 0 >; clocks = <&clk IMX8QM_A72_DIV>; clock-latency = <61036>; #cooling-cells = <2>; /delete-property/ cpu-idle-states; }; &A53_1 { /delete-property/ cpu-idle-states; }; &A53_2 { /delete-property/ cpu-idle-states; }; &A53_3 { /delete-property/ cpu-idle-states; }; &A72_1 { /delete-property/ cpu-idle-states; };