Files
android_kernel_samsung_sm87…/gpu/sun-gpu.dtsi
Kamal Agrawal 40c568a6d1 ARM: dts: msm: Update DDR bandwidth for sun GMU scaling
SVS is the highest voltage corner for GMU. The lowest DDR BW
that puts CX at SVS corner is 1555 MHz. This DDR vote puts CX
at a corner high enough such that GMU can run at 650 MHz. This
is to get better GMU performance at no extra power cost.

Change-Id: I919476577e9b2e69161142c93d47e91505ffc222
Signed-off-by: Kamal Agrawal <quic_kamaagra@quicinc.com>
2024-02-03 16:36:52 +05:30

182 lines
4.5 KiB
Plaintext

// SPDX-License-Identifier: BSD-3-Clause
/*
* Copyright (c) 2023-2024 Qualcomm Innovation Center, Inc. All rights reserved.
*/
#define MHZ_TO_KBPS(mhz, w) ((mhz * 1000000 * w) / (1024))
/* External feature codes */
#define FC_UNKNOWN 0x0
/* Pcodes */
#define PCODE_UNKNOWN 0
#define SKU_CODE(pcode, featurecode) ((pcode << 16) + featurecode)
&msm_gpu {
compatible = "qcom,adreno-gpu-gen8-0-0", "qcom,kgsl-3d0";
status = "ok";
reg = <0x3d00000 0x40000>, <0x3d50000 0x10000>,
<0x3d61000 0x3000>, <0x3d9e000 0x2000>,
<0x10900000 0x80000>, <0x10048000 0x8000>,
<0x10b05000 0x1000>;
reg-names = "kgsl_3d0_reg_memory", "rscc", "cx_dbgc", "cx_misc",
"qdss_gfx", "qdss_etr", "qdss_tmc";
interrupts = <0 300 IRQ_TYPE_LEVEL_HIGH>;
interrupt-names = "kgsl_3d0_irq";
clocks = <&gcc GCC_GPU_GEMNOC_GFX_CLK>,
<&gpucc GPU_CC_AHB_CLK>,
<&aoss_qmp QDSS_CLK>;
clock-names = "gcc_gpu_memnoc_gfx",
"gpu_cc_ahb",
"apb_pclk";
qcom,gpu-model = "Adreno830";
qcom,chipid = <0x44050000>;
qcom,min-access-length = <32>;
qcom,ubwc-mode = <5>;
qcom,gpu-qdss-stm = <0x37000000 0x40000>; /* base addr, size */
qcom,tzone-names = "gpuss-0", "gpuss-1", "gpuss-2", "gpuss-3",
"gpuss-4", "gpuss-5", "gpuss-6", "gpuss-7";
interconnects = <&gem_noc MASTER_GFX3D &mc_virt SLAVE_EBI1>;
interconnect-names = "gpu_icc_path";
qcom,bus-table-cnoc =
<0>, /* Off */
<100>; /* On */
qcom,bus-table-ddr =
<MHZ_TO_KBPS(0, 4)>, /* index=0 */
<MHZ_TO_KBPS(200, 4)>, /* LowSVS index=1 */
<MHZ_TO_KBPS(547, 4)>, /* LowSVS index=2 */
<MHZ_TO_KBPS(1353, 4)>, /* LowSVS index=3 */
<MHZ_TO_KBPS(1555, 4)>, /* SVS index=4 */
<MHZ_TO_KBPS(1708, 4)>, /* SVS index=5 */
<MHZ_TO_KBPS(2092, 4)>, /* SVS index=6 */
<MHZ_TO_KBPS(2736, 4)>, /* NOM index=7 */
<MHZ_TO_KBPS(3187, 4)>, /* NOM index=8 */
<MHZ_TO_KBPS(3686, 4)>, /* TURBO index=9 */
<MHZ_TO_KBPS(4224, 4)>, /* TURBO_L1 index=10 */
<MHZ_TO_KBPS(4761, 4)>; /* TURBO_L3 index=11 */
zap-shader {
memory-region = <&gpu_microcode_mem>;
};
qcom,gpu-mempools {
#address-cells = <1>;
#size-cells = <0>;
compatible = "qcom,gpu-mempools";
/* 4K Page Pool configuration */
qcom,gpu-mempool@0 {
reg = <0>;
qcom,mempool-page-size = <4096>;
qcom,mempool-reserved = <2048>;
};
/* 8K Page Pool configuration */
qcom,gpu-mempool@1 {
reg = <1>;
qcom,mempool-page-size = <8192>;
qcom,mempool-reserved = <1024>;
};
/* 64K Page Pool configuration */
qcom,gpu-mempool@2 {
reg = <2>;
qcom,mempool-page-size = <65536>;
qcom,mempool-reserved = <256>;
};
/* 128K Page Pool configuration */
qcom,gpu-mempool@3 {
reg = <3>;
qcom,mempool-page-size = <131072>;
qcom,mempool-reserved = <128>;
};
/* 256K Page Pool configuration */
qcom,gpu-mempool@4 {
reg = <4>;
qcom,mempool-page-size = <262144>;
qcom,mempool-reserved = <80>;
};
/* 1M Page Pool configuration */
qcom,gpu-mempool@5 {
reg = <5>;
qcom,mempool-page-size = <1048576>;
qcom,mempool-reserved = <32>;
};
};
};
&soc {
kgsl_msm_iommu: qcom,kgsl-iommu@3da0000 {
compatible = "qcom,kgsl-smmu-v2";
reg = <0x3da0000 0x40000>;
vddcx-supply = <&gpu_cc_cx_gdsc>;
gfx3d_user: gfx3d_user {
compatible = "qcom,smmu-kgsl-cb";
iommus = <&kgsl_smmu 0x0 0x000>;
qcom,iommu-dma = "disabled";
};
gfx3d_lpac: gfx3d_lpac {
compatible = "qcom,smmu-kgsl-cb";
iommus = <&kgsl_smmu 0x1 0x000>;
qcom,iommu-dma = "disabled";
};
gfx3d_secure: gfx3d_secure {
compatible = "qcom,smmu-kgsl-cb";
iommus = <&kgsl_smmu 0x2 0x000>;
qcom,iommu-dma = "disabled";
};
};
gmu: qcom,gmu@3d37000 {
compatible = "qcom,gen8-gmu";
reg = <0x3d37000 0x68000>,
<0xb5d0000 0x24000>,
<0x3d40000 0x10000>;
reg-names = "gmu", "gmu_pdc", "gmu_ao_blk_dec0";
interrupts = <0 304 IRQ_TYPE_LEVEL_HIGH>,
<0 305 IRQ_TYPE_LEVEL_HIGH>;
interrupt-names = "hfi", "gmu";
regulator-names = "vddcx", "vdd";
vddcx-supply = <&gpu_cc_cx_gdsc>;
vdd-supply = <&gx_clkctl_gx_gdsc>;
clocks = <&gpucc GPU_CC_CX_GMU_CLK>,
<&gpucc GPU_CC_CXO_CLK>,
<&gcc GCC_DDRSS_GPU_AXI_CLK>,
<&gcc GCC_GPU_GEMNOC_GFX_CLK>,
<&gpucc GPU_CC_AHB_CLK>,
<&gpucc GPU_CC_HUB_CX_INT_CLK>;
clock-names = "gmu_clk", "cxo_clk", "axi_clk",
"memnoc_clk", "ahb_clk", "hub_clk";
qcom,gmu-freq-table = <500000000 RPMH_REGULATOR_LEVEL_LOW_SVS>,
<650000000 RPMH_REGULATOR_LEVEL_SVS>;
qcom,gmu-perf-ddr-bw = <MHZ_TO_KBPS(1555, 4)>;
iommus = <&kgsl_smmu 0x5 0x000>;
qcom,iommu-dma = "disabled";
qcom,ipc-core = <0x00400000 0x140000>;
};
};