drm/amdgpu: use 6.1.0 register offset for HDP CLK_CNTL
authorLang Yu <Lang.Yu@amd.com>
Wed, 19 Jul 2023 04:32:01 +0000 (12:32 +0800)
committerAlex Deucher <alexander.deucher@amd.com>
Wed, 30 Aug 2023 19:00:12 +0000 (15:00 -0400)
Use 6.1.0 register offset and remove unused variable.

v2: clean up logic (Alex)

Signed-off-by: Lang Yu <Lang.Yu@amd.com>
Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
drivers/gpu/drm/amd/amdgpu/hdp_v6_0.c

index 063eba619f2f6ce71606adc9656bb50b01fdc802..6f20f9889a78f1d81323ff6f304d6c3063b9d933 100644 (file)
@@ -28,6 +28,9 @@
 #include "hdp/hdp_6_0_0_sh_mask.h"
 #include <uapi/linux/kfd_ioctl.h>
 
+#define regHDP_CLK_CNTL_V6_1   0xd5
+#define regHDP_CLK_CNTL_V6_1_BASE_IDX 0
+
 static void hdp_v6_0_flush_hdp(struct amdgpu_device *adev,
                                struct amdgpu_ring *ring)
 {
@@ -40,7 +43,7 @@ static void hdp_v6_0_flush_hdp(struct amdgpu_device *adev,
 static void hdp_v6_0_update_clock_gating(struct amdgpu_device *adev,
                                         bool enable)
 {
-       uint32_t hdp_clk_cntl, hdp_clk_cntl1;
+       uint32_t hdp_clk_cntl;
        uint32_t hdp_mem_pwr_cntl;
 
        if (!(adev->cg_flags & (AMD_CG_SUPPORT_HDP_LS |
@@ -48,14 +51,20 @@ static void hdp_v6_0_update_clock_gating(struct amdgpu_device *adev,
                                AMD_CG_SUPPORT_HDP_SD)))
                return;
 
-       hdp_clk_cntl = hdp_clk_cntl1 = RREG32_SOC15(HDP, 0,regHDP_CLK_CNTL);
+       if (adev->ip_versions[HDP_HWIP][0] == IP_VERSION(6, 1, 0))
+               hdp_clk_cntl = RREG32_SOC15(HDP, 0, regHDP_CLK_CNTL_V6_1);
+       else
+               hdp_clk_cntl = RREG32_SOC15(HDP, 0, regHDP_CLK_CNTL);
        hdp_mem_pwr_cntl = RREG32_SOC15(HDP, 0, regHDP_MEM_POWER_CTRL);
 
        /* Before doing clock/power mode switch,
         * forced on IPH & RC clock */
        hdp_clk_cntl = REG_SET_FIELD(hdp_clk_cntl, HDP_CLK_CNTL,
                                     RC_MEM_CLK_SOFT_OVERRIDE, 1);
-       WREG32_SOC15(HDP, 0, regHDP_CLK_CNTL, hdp_clk_cntl);
+       if (adev->ip_versions[HDP_HWIP][0] == IP_VERSION(6, 1, 0))
+               WREG32_SOC15(HDP, 0, regHDP_CLK_CNTL_V6_1, hdp_clk_cntl);
+       else
+               WREG32_SOC15(HDP, 0, regHDP_CLK_CNTL, hdp_clk_cntl);
 
        /* disable clock and power gating before any changing */
        hdp_mem_pwr_cntl = REG_SET_FIELD(hdp_mem_pwr_cntl, HDP_MEM_POWER_CTRL,
@@ -117,7 +126,10 @@ static void hdp_v6_0_update_clock_gating(struct amdgpu_device *adev,
        /* disable IPH & RC clock override after clock/power mode changing */
        hdp_clk_cntl = REG_SET_FIELD(hdp_clk_cntl, HDP_CLK_CNTL,
                                     RC_MEM_CLK_SOFT_OVERRIDE, 0);
-       WREG32_SOC15(HDP, 0, regHDP_CLK_CNTL, hdp_clk_cntl);
+       if (adev->ip_versions[HDP_HWIP][0] == IP_VERSION(6, 1, 0))
+               WREG32_SOC15(HDP, 0, regHDP_CLK_CNTL_V6_1, hdp_clk_cntl);
+       else
+               WREG32_SOC15(HDP, 0, regHDP_CLK_CNTL, hdp_clk_cntl);
 }
 
 static void hdp_v6_0_get_clockgating_state(struct amdgpu_device *adev,