/* * Copyright (C) 2016 Freescale Semiconductor, Inc. * Copyright 2017-2018 NXP * * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public License * as published by the Free Software Foundation; either version 2 * of the License, or (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. */ #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 { csi0 = &mipi_csi_0; csi1 = &mipi_csi_1; dpu0 = &dpu1; dpu1 = &dpu2; ethernet0 = &fec1; ethernet1 = &fec2; dsi_phy0 = &mipi_dsi_phy1; dsi_phy1 = &mipi_dsi_phy2; mipi_dsi0 = &mipi_dsi1; mipi_dsi1 = &mipi_dsi2; ldb0 = &ldb1; ldb1 = &ldb2; isi0 = &isi_0; isi1 = &isi_1; isi2 = &isi_2; isi3 = &isi_3; isi4 = &isi_4; isi5 = &isi_5; isi6 = &isi_6; isi7 = &isi_7; serial0 = &lpuart0; serial1 = &lpuart1; serial2 = &lpuart2; serial3 = &lpuart3; serial4 = &lpuart4; mmc0 = &usdhc1; mmc1 = &usdhc2; mmc2 = &usdhc3; usbphy0 = &usbphy1; can0 = &flexcan1; can1 = &flexcan2; can2 = &flexcan3; i2c0 = &i2c_rpbus_0; i2c1 = &i2c_rpbus_1; }; 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>; }; mu: mu@5d1c0000 { compatible = "fsl,imx8-mu"; reg = <0x0 0x5d1c0000 0x0 0x10000>; interrupts = ; interrupt-parent = <&gic>; fsl,scu_ap_mu_id = <0>; status = "okay"; }; 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"; }; vpu_decoder: vpu_decoder@2c000000 { compatible = "nxp,imx8qm-b0-vpudec", "nxp,imx8qxp-b0-vpudec"; boot-region = <&decoder_boot>; rpc-region = <&decoder_rpc>; reg = <0x0 0x2c000000 0x0 0x1000000>; reg-names = "vpu_regs"; reg-csr = <0x2d080000>; power-domains = <&pd_vpu_dec>; status = "disabled"; }; vpu_encoder: vpu_encoder@2d000000 { compatible = "nxp,imx8qm-b0-vpuenc"; #address-cells = <1>; #size-cells = <1>; boot-region = <&encoder_boot>; rpc-region = <&encoder_rpc>; reserved-region = <&encoder_reserved>; reg = <0x0 0x2d000000 0x0 0x1000000>, /*VPU Encoder*/ <0x0 0x2c000000 0x0 0x2000000>; /*VPU*/ reg-names = "vpu_regs"; power-domains = <&pd_vpu_enc>; reg-rpc-system = <0x40000000>; resolution-max = <1920 1080>; fps-max = <120>; status = "disabled"; core0@1020000 { compatible = "fsl,imx8-mu1-vpu-m0"; reg = <0x1020000 0x20000>; reg-csr = <0x1090000 0x10000>; interrupts = ; fsl,vpu_ap_mu_id = <17>; fw-buf-size = <0x200000>; rpc-buf-size = <0x80000>; print-buf-size = <0x80000>; }; core1@1040000 { compatible = "fsl,imx8-mu2-vpu-m0"; reg = <0x1040000 0x20000>; reg-csr = <0x10a0000 0x10000>; interrupts = ; fsl,vpu_ap_mu_id = <18>; fw-buf-size = <0x200000>; rpc-buf-size = <0x80000>; print-buf-size = <0x80000>; }; }; clk: clk { compatible = "fsl,imx8qm-clk"; #clock-cells = <1>; }; iomuxc: iomuxc { compatible = "fsl,imx8qm-iomuxc"; }; 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; }; &imx8_gpu_ss {/**/ operating-points = < /*overdrive*/ 800000 0 /*The first tuple is for core clock frequency*/ 1000000 0 /*The second tuple is for shader clock frequency*/ /*nominal*/ 650000 0 700000 0 /*underdrive*/ 400000 0 /*core/shader clock share the same frequency on underdrive mode*/ >; }; &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; };