Эх сурвалжийг харах

drm/amd/powerplay: add a new register define for APU in VI.

the ixcurrent_pg_status addr is different between APU and DGPU.

Signed-off-by: Rex Zhu <Rex.Zhu@amd.com>
Reviewed-by: Alex Deucher <alexander.deucher@amd.com>
Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
Rex Zhu 8 жил өмнө
parent
commit
1c622002b1

+ 6 - 2
drivers/gpu/drm/amd/amdgpu/uvd_v6_0.c

@@ -1068,8 +1068,12 @@ static void uvd_v6_0_get_clockgating_state(void *handle, u32 *flags)
 
 
 	mutex_lock(&adev->pm.mutex);
 	mutex_lock(&adev->pm.mutex);
 
 
-	if (RREG32_SMC(ixCURRENT_PG_STATUS) &
-				CURRENT_PG_STATUS__UVD_PG_STATUS_MASK) {
+	if (adev->flags & AMD_IS_APU)
+		data = RREG32_SMC(ixCURRENT_PG_STATUS_APU);
+	else
+		data = RREG32_SMC(ixCURRENT_PG_STATUS);
+
+	if (data & CURRENT_PG_STATUS__UVD_PG_STATUS_MASK) {
 		DRM_INFO("Cannot get clockgating state when UVD is powergated.\n");
 		DRM_INFO("Cannot get clockgating state when UVD is powergated.\n");
 		goto out;
 		goto out;
 	}
 	}

+ 6 - 2
drivers/gpu/drm/amd/amdgpu/vce_v3_0.c

@@ -783,8 +783,12 @@ static void vce_v3_0_get_clockgating_state(void *handle, u32 *flags)
 
 
 	mutex_lock(&adev->pm.mutex);
 	mutex_lock(&adev->pm.mutex);
 
 
-	if (RREG32_SMC(ixCURRENT_PG_STATUS) &
-			CURRENT_PG_STATUS__VCE_PG_STATUS_MASK) {
+	if (adev->flags & AMD_IS_APU)
+		data = RREG32_SMC(ixCURRENT_PG_STATUS_APU);
+	else
+		data = RREG32_SMC(ixCURRENT_PG_STATUS);
+
+	if (data & CURRENT_PG_STATUS__VCE_PG_STATUS_MASK) {
 		DRM_INFO("Cannot get clockgating state when VCE is powergated.\n");
 		DRM_INFO("Cannot get clockgating state when VCE is powergated.\n");
 		goto out;
 		goto out;
 	}
 	}

+ 1 - 0
drivers/gpu/drm/amd/include/asic_reg/smu/smu_7_1_2_d.h

@@ -1272,5 +1272,6 @@
 #define ixROM_SW_DATA_63                                                        0xc0600120
 #define ixROM_SW_DATA_63                                                        0xc0600120
 #define ixROM_SW_DATA_64                                                        0xc0600124
 #define ixROM_SW_DATA_64                                                        0xc0600124
 #define ixCURRENT_PG_STATUS                                                     0xc020029c
 #define ixCURRENT_PG_STATUS                                                     0xc020029c
+#define ixCURRENT_PG_STATUS_APU                                                 0xd020029c
 
 
 #endif /* SMU_7_1_2_D_H */
 #endif /* SMU_7_1_2_D_H */

+ 2 - 0
drivers/gpu/drm/amd/include/asic_reg/smu/smu_7_1_3_d.h

@@ -1245,4 +1245,6 @@
 #define ixGC_CAC_ACC_CU15                                                       0xc9
 #define ixGC_CAC_ACC_CU15                                                       0xc9
 #define ixGC_CAC_OVRD_CU                                                        0xe7
 #define ixGC_CAC_OVRD_CU                                                        0xe7
 #define ixCURRENT_PG_STATUS                                                     0xc020029c
 #define ixCURRENT_PG_STATUS                                                     0xc020029c
+#define ixCURRENT_PG_STATUS_APU                                                 0xd020029c
+
 #endif /* SMU_7_1_3_D_H */
 #endif /* SMU_7_1_3_D_H */