/* Copyright (c) 2018-2019, The Linux Foundation. All rights reserved. * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License version 2 and * only version 2 as published by the Free Software Foundation. * * 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 &soc { kgsl_smmu: kgsl-smmu@0x59a0000 { status = "okay"; compatible = "qcom,qsmmu-v500"; reg = <0x59a0000 0x10000>, <0x59c2000 0x20>; reg-names = "base", "tcu-base"; #iommu-cells = <2>; qcom,dynamic; qcom,skip-init; qcom,testbus-version = <1>; qcom,no-dynamic-asid; qcom,use-3-lvl-tables; #global-interrupts = <1>; qcom,regulator-names = "vdd"; vdd-supply = <&gpu_cx_gdsc>; clocks = <&clock_gcc GCC_GPU_MEMNOC_GFX_CLK>, <&clock_gcc GCC_GPU_SNOC_DVM_GFX_CLK>, <&clock_gpucc GPU_CC_AHB_CLK>, <&clock_gpucc GPU_CC_HLOS1_VOTE_GPU_SMMU_CLK>; clock-names = "gcc_gpu_memnoc_gfx_clk", "gcc_gpu_snoc_dvm_gfx_clk", "gpu_cc_ahb_clk", "gpu_cc_hlos1_vote_gpu_smmu_clk"; #size-cells = <1>; #address-cells = <1>; ranges; interrupts = , , , , , , , , ; gfx_0_tbu: gfx_0_tbu@0x59c5000 { compatible = "qcom,qsmmuv500-tbu"; reg = <0x59c5000 0x1000>, <0x59c2200 0x8>; reg-names = "base", "status-reg"; qcom,stream-id-range = <0x0 0x400>; interrupts = ; }; }; apps_smmu: apps-smmu@0xc600000 { status = "okay"; compatible = "qcom,qsmmu-v500"; reg = <0xc600000 0x80000>, <0xc782000 0x20>; reg-names = "base", "tcu-base"; #iommu-cells = <2>; qcom,skip-init; qcom,use-3-lvl-tables; #global-interrupts = <1>; #size-cells = <1>; #address-cells = <1>; ranges; interrupts = , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , ; qcom,msm-bus,name = "apps_smmu"; qcom,msm-bus,num-cases = <2>; qcom,msm-bus,active-only; qcom,msm-bus,num-paths = <1>; qcom,msm-bus,vectors-KBps = , , <0 0>, , , <0 1000>; anoc_1_tbu: anoc_1_tbu@0xc785000 { compatible = "qcom,qsmmuv500-tbu"; reg = <0xc785000 0x1000>, <0xc782200 0x8>; reg-names = "base", "status-reg"; qcom,stream-id-range = <0x0 0x400>; interrupts = ; qcom,msm-bus,name = "apps_smmu"; qcom,msm-bus,num-cases = <2>; qcom,msm-bus,active-only; qcom,msm-bus,num-paths = <2>; qcom,msm-bus,vectors-KBps = , , <0 0>, , , <0 1000>, , , <0 0>, , , <0 1000>; }; mm_rt_tbu: mm_rt_tbu@0xc789000 { compatible = "qcom,qsmmuv500-tbu"; reg = <0xc789000 0x1000>, <0xc782208 0x8>; reg-names = "base", "status-reg"; qcom,stream-id-range = <0x400 0x400>; interrupts = ; qcom,regulator-names = "vdd"; vdd-supply = <&hlos1_vote_mm_snoc_mmu_tbu_rt_gdsc>; qcom,msm-bus,name = "apps_smmu"; qcom,msm-bus,num-cases = <2>; qcom,msm-bus,active-only; qcom,msm-bus,num-paths = <2>; qcom,msm-bus,vectors-KBps = , , <0 0>, , , <0 1000>, , , <0 0>, , , <0 1000>; }; mm_nrt_tbu: mm_nrt_tbu@0xc78d000 { compatible = "qcom,qsmmuv500-tbu"; reg = <0xc78d000 0x1000>, <0xc782210 0x8>; reg-names = "base", "status-reg"; qcom,stream-id-range = <0x800 0x400>; interrupts = ; qcom,regulator-names = "vdd"; vdd-supply = <&hlos1_vote_mm_snoc_mmu_tbu_nrt_gdsc>; qcom,msm-bus,name = "apps_smmu"; qcom,msm-bus,num-cases = <2>; qcom,msm-bus,active-only; qcom,msm-bus,num-paths = <2>; qcom,msm-bus,vectors-KBps = , , <0 0>, , , <0 1000>, , , <0 0>, , , <0 1000>; }; cdsp_tbu: cdsp_tbu@0xc791000 { compatible = "qcom,qsmmuv500-tbu"; reg = <0xc791000 0x1000>, <0xc782218 0x8>; reg-names = "base", "status-reg"; qcom,stream-id-range = <0xc00 0x400>; interrupts = ; qcom,regulator-names = "vdd"; vdd-supply = <&hlos1_vote_turing_mmu_tbu0_gdsc>; qcom,msm-bus,name = "apps_smmu"; qcom,msm-bus,num-cases = <2>; qcom,msm-bus,active-only; qcom,msm-bus,num-paths = <2>; qcom,msm-bus,vectors-KBps = , , <0 0>, , , <0 1000>, , , <0 0>, , , <0 1000>; }; }; kgsl_iommu_test_device { compatible = "iommu-debug-test"; iommus = <&kgsl_smmu 0x7 0>; }; apps_iommu_test_device { compatible = "iommu-debug-test"; iommus = <&apps_smmu 0x21 0>; }; }; &kgsl_smmu { qcom,actlr = /* All CBs of GFX: +15 deep PF */ <0x0 0x3ff 0x303>; }; &apps_smmu { qcom,actlr = /* MMRT and MMNRT TBUs: +3 deep PF */ <0x400 0x3ff 0x103>, <0x800 0x3ff 0x103>; };