// SPDX-License-Identifier: BSD-3-Clause /* * Copyright (c) 2022-2023 Qualcomm Innovation Center, Inc. All rights reserved. */ #include &soc { kgsl_smmu: kgsl-smmu@3da0000 { compatible = "qcom,qsmmu-v500", "qcom,adreno-smmu"; reg = <0x3da0000 0x40000>; #iommu-cells = <2>; qcom,use-3-lvl-tables; #global-interrupts = <1>; #size-cells = <1>; #address-cells = <1>; ranges; dma-coherent; qcom,regulator-names = "vdd"; vdd-supply = <&gpu_cc_cx_gdsc>; clocks = <&gpucc GPU_CC_HLOS1_VOTE_GPU_SMMU_CLK>, <&gcc GCC_GPU_MEMNOC_GFX_CLK>, <&gcc GCC_GPU_SNOC_DVM_GFX_CLK>, <&gpucc GPU_CC_AHB_CLK>; clock-names = "gpu_cc_hlos1_vote_gpu_smmu", "gcc_gpu_memnoc_gfx", "gcc_gpu_snoc_dvm_gfx", "gpu_cc_ahb"; qcom,actlr = /* All CBs of GFX: +15 deep PF */ <0x000 0x3ff 0x32B>; interrupts = , , , , , , , , , , , , , , , , , , , , , , , , , ; gpu_qtb: gpu_qtb@3de8000 { compatible = "qcom,qsmmuv500-tbu", "qcom,qtb500"; reg = <0x3de8000 0x1000>; qcom,stream-id-range = <0x0 0x400>; qcom,iova-width = <49>; interconnects = <&gem_noc MASTER_GPU_TCU &mc_virt SLAVE_EBI1>; qcom,num-qtb-ports = <2>; }; }; ubwcp_smmu: ubwcp-smmu@179a0000 { compatible = "qcom,qsmmu-v500"; reg = <0x179a0000 0x10000>; #iommu-cells = <2>; qcom,use-3-lvl-tables; #global-interrupts = <1>; #size-cells = <1>; #address-cells = <1>; ranges; dma-coherent; qcom,regulator-names = "vdd"; vdd-supply = <&apss_ubwcp_pwr_ctrl>; qcom,actlr = /* All CBs of UBWC-P: +15 deep PF */ <0x000 0x3ff 0x32B>; qcom,ignore-numpagendxb; interrupts = , , , , ; ubwcp_qtb: ubwcp_qtb@179e8000 { compatible = "qcom,qsmmuv500-tbu", "qcom,qtb500"; reg = <0x179e8000 0x1000>; qcom,stream-id-range = <0x0 0x2>; qcom,iova-width = <36>; qcom,num-qtb-ports = <1>; }; }; apps_smmu: apps-smmu@15000000 { compatible = "qcom,qsmmu-v500"; reg = <0x15000000 0x100000>; #iommu-cells = <2>; qcom,use-3-lvl-tables; qcom,handoff-smrs = <0x1c00 0x2>; #global-interrupts = <1>; #size-cells = <1>; #address-cells = <1>; ranges; dma-coherent; qcom,actlr = /* Camera IFE */ <0x0800 0x0020 0x00000001>, /* Camera SBI */ <0x0840 0x0000 0x00000103>, /* Camera IPE, BPS, CDM and ICP */ <0x1800 0x0000 0x00000001>, <0x1820 0x0000 0x00000001>, <0x1840 0x0000 0x00000001>, <0x1860 0x0000 0x00000001>, <0x1880 0x0000 0x00000001>, <0x18c0 0x0000 0x00000001>, /* Camera JPEG */ <0x18a0 0x0040 0x00000103>, /* Compute */ <0x0c01 0x0020 0x00000303>, <0x0c02 0x0020 0x00000303>, <0x0c03 0x0020 0x00000303>, <0x0c04 0x0020 0x00000303>, <0x0c05 0x0020 0x00000303>, <0x0c06 0x0020 0x00000303>, <0x0c07 0x0020 0x00000303>, <0x0c08 0x0020 0x00000303>, <0x0c09 0x0020 0x00000303>, <0x0c0c 0x0020 0x00000303>, <0x0c0d 0x0020 0x00000303>, <0x0c0e 0x0020 0x00000303>, <0x1961 0x0000 0x00000303>, <0x1962 0x0000 0x00000303>, <0x1963 0x0000 0x00000303>, <0x1964 0x0000 0x00000303>, <0x1965 0x0000 0x00000303>, <0x1966 0x0000 0x00000303>, <0x1967 0x0000 0x00000303>, <0x1968 0x0000 0x00000303>, <0x1969 0x0000 0x00000303>, <0x196c 0x0000 0x00000303>, <0x196d 0x0000 0x00000303>, <0x196e 0x0000 0x00000303>, <0x19c1 0x0000 0x00000303>, <0x19c2 0x0000 0x00000303>, <0x19c3 0x0000 0x00000303>, <0x19c4 0x0000 0x00000303>, <0x19c5 0x0000 0x00000303>, <0x19c6 0x0000 0x00000303>, <0x19c7 0x0000 0x00000303>, <0x19c8 0x0000 0x00000303>, <0x19c9 0x0000 0x00000303>, <0x19cc 0x0000 0x00000303>, <0x19cd 0x0000 0x00000303>, <0x19ce 0x0000 0x00000303>, /* Display */ <0x1c00 0x0002 0x00000001>, <0x1c01 0x0000 0x00000001>, /* EVA */ <0x1920 0x0000 0x00000103>, <0x1923 0x0000 0x00000103>, <0x1924 0x0000 0x00000103>, /* Video */ <0x1940 0x0000 0x00000103>, <0x1941 0x0004 0x00000103>, <0x1943 0x0000 0x00000103>, <0x1944 0x0000 0x00000103>, <0x1947 0x0000 0x00000103>; interrupts = , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , ; anoc_1_qtb: anoc_1_qtb@16f1000 { compatible = "qcom,qsmmuv500-tbu", "qcom,qtb500"; reg = <0x16f1000 0x1000>; qcom,stream-id-range = <0x0 0x400>; qcom,iova-width = <36>; interconnects = <&system_noc MASTER_A1NOC_SNOC &mc_virt SLAVE_EBI1>; qcom,num-qtb-ports = <1>; }; anoc_2_qtb: anoc_2_qtb@171a000 { compatible = "qcom,qsmmuv500-tbu", "qcom,qtb500"; reg = <0x171a000 0x1000>; qcom,stream-id-range = <0x400 0x400>; qcom,iova-width = <36>; interconnects = <&system_noc MASTER_A2NOC_SNOC &mc_virt SLAVE_EBI1>; qcom,num-qtb-ports = <1>; }; cam_hf_qtb: cam_hf_qtb@17d2000 { compatible = "qcom,qsmmuv500-tbu", "qcom,qtb500"; reg = <0x17d2000 0x1000>; qcom,stream-id-range = <0x800 0x400>; qcom,iova-width = <36>; interconnects = <&mmss_noc MASTER_CAMNOC_HF &mc_virt SLAVE_EBI1>; qcom,num-qtb-ports = <2>; }; nsp_qtb: nsp_qtb@7d3000 { compatible = "qcom,qsmmuv500-tbu", "qcom,qtb500"; reg = <0x7d3000 0x1000>; qcom,stream-id-range = <0xc00 0x400>; qcom,iova-width = <34>; interconnects = <&nsp_noc MASTER_CDSP_PROC &mc_virt SLAVE_EBI1>; qcom,num-qtb-ports = <2>; }; lpass_qtb: lpass_qtb@7b3000 { compatible = "qcom,qsmmuv500-tbu", "qcom,qtb500"; reg = <0x7b3000 0x1000>; qcom,stream-id-range = <0x1000 0x400>; qcom,iova-width = <32>; interconnects = <&lpass_lpicx_noc MASTER_LPASS_PROC &mc_virt SLAVE_EBI1>; qcom,num-qtb-ports = <1>; }; pcie_qtb: pcie_qtb@16cd000 { compatible = "qcom,qsmmuv500-tbu", "qcom,qtb500"; reg = <0x16cd000 0x1000>; qcom,stream-id-range = <0x1400 0x400>; qcom,iova-width = <36>; interconnects = <&pcie_noc MASTER_PCIE_0 &mc_virt SLAVE_EBI1>; qcom,num-qtb-ports = <1>; qcom,opt-out-tbu-halting; }; sf_qtb: sf_qtb@17d1000 { compatible = "qcom,qsmmuv500-tbu", "qcom,qtb500"; reg = <0x17d1000 0x1000>; qcom,stream-id-range = <0x1800 0x400>; qcom,iova-width = <36>; interconnects = <&mmss_noc MASTER_VIDEO &mc_virt SLAVE_EBI1>; qcom,num-qtb-ports = <2>; }; mdp_hf_qtb: mdp_hf_qtb@17d0000 { compatible = "qcom,qsmmuv500-tbu", "qcom,qtb500"; reg = <0x17d0000 0x1000>; qcom,stream-id-range = <0x1c00 0x400>; qcom,iova-width = <32>; interconnects = <&mmss_noc MASTER_MDP &mc_virt SLAVE_EBI1>; qcom,num-qtb-ports = <2>; }; }; dma_dev { compatible = "qcom,iommu-dma"; memory-region = <&system_cma>; }; iommu_test_device { compatible = "qcom,iommu-debug-test"; usecase0_apps { compatible = "qcom,iommu-debug-usecase"; iommus = <&apps_smmu 0x400 0x0>; }; usecase1_apps_fastmap { compatible = "qcom,iommu-debug-usecase"; iommus = <&apps_smmu 0x400 0x0>; qcom,iommu-dma = "fastmap"; }; usecase2_apps_atomic { compatible = "qcom,iommu-debug-usecase"; iommus = <&apps_smmu 0x400 0x0>; qcom,iommu-dma = "atomic"; }; usecase3_apps_dma { compatible = "qcom,iommu-debug-usecase"; iommus = <&apps_smmu 0x400 0x0>; dma-coherent; }; usecase4_apps_secure { compatible = "qcom,iommu-debug-usecase"; iommus = <&apps_smmu 0x400 0x0>; qcom,iommu-vmid = <0xa>; /* VMID_CP_PIXEL */ }; usecase5_kgsl { compatible = "qcom,iommu-debug-usecase"; iommus = <&kgsl_smmu 0x7 0x0>; }; usecase6_kgsl_dma { compatible = "qcom,iommu-debug-usecase"; iommus = <&kgsl_smmu 0x7 0x0>; dma-coherent; }; }; };