diff options
author | Alex Deucher <alexander.deucher@amd.com> | 2016-04-08 00:52:58 -0400 |
---|---|---|
committer | Alex Deucher <alexander.deucher@amd.com> | 2016-05-04 20:21:55 -0400 |
commit | c90766cf4e78e4708111afe5011a00288e60c66e (patch) | |
tree | a1ab811058f324c216b5c656d1cc5fb5328c9f41 /drivers/gpu | |
parent | e08d53cb6943b9b263021320523629005c1f512f (diff) |
drm/amdgpu/common: add proper CG flags for fiji
We were already enabling these CG features, this uses
the standard interface for doing so.
Acked-by: Tom St Denis <tom.stdenis@amd.com>
Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
Diffstat (limited to 'drivers/gpu')
-rw-r--r-- | drivers/gpu/drm/amd/amdgpu/vi.c | 22 |
1 files changed, 13 insertions, 9 deletions
diff --git a/drivers/gpu/drm/amd/amdgpu/vi.c b/drivers/gpu/drm/amd/amdgpu/vi.c index 57595049ad9a..ea9edf4e32ad 100644 --- a/drivers/gpu/drm/amd/amdgpu/vi.c +++ b/drivers/gpu/drm/amd/amdgpu/vi.c | |||
@@ -1085,7 +1085,11 @@ static int vi_common_early_init(void *handle) | |||
1085 | AMD_CG_SUPPORT_GFX_CGCG | | 1085 | AMD_CG_SUPPORT_GFX_CGCG | |
1086 | AMD_CG_SUPPORT_GFX_CGLS | | 1086 | AMD_CG_SUPPORT_GFX_CGLS | |
1087 | AMD_CG_SUPPORT_SDMA_MGCG | | 1087 | AMD_CG_SUPPORT_SDMA_MGCG | |
1088 | AMD_CG_SUPPORT_SDMA_LS; | 1088 | AMD_CG_SUPPORT_SDMA_LS | |
1089 | AMD_CG_SUPPORT_BIF_LS | | ||
1090 | AMD_CG_SUPPORT_HDP_MGCG | | ||
1091 | AMD_CG_SUPPORT_HDP_LS | | ||
1092 | AMD_CG_SUPPORT_ROM_MGCG; | ||
1089 | adev->pg_flags = 0; | 1093 | adev->pg_flags = 0; |
1090 | adev->external_rev_id = adev->rev_id + 0x3c; | 1094 | adev->external_rev_id = adev->rev_id + 0x3c; |
1091 | break; | 1095 | break; |
@@ -1188,13 +1192,13 @@ static int vi_common_soft_reset(void *handle) | |||
1188 | } | 1192 | } |
1189 | 1193 | ||
1190 | static void fiji_update_bif_medium_grain_light_sleep(struct amdgpu_device *adev, | 1194 | static void fiji_update_bif_medium_grain_light_sleep(struct amdgpu_device *adev, |
1191 | bool enable) | 1195 | bool enable) |
1192 | { | 1196 | { |
1193 | uint32_t temp, data; | 1197 | uint32_t temp, data; |
1194 | 1198 | ||
1195 | temp = data = RREG32_PCIE(ixPCIE_CNTL2); | 1199 | temp = data = RREG32_PCIE(ixPCIE_CNTL2); |
1196 | 1200 | ||
1197 | if (enable) | 1201 | if (enable && (adev->cg_flags & AMD_CG_SUPPORT_BIF_LS)) |
1198 | data |= PCIE_CNTL2__SLV_MEM_LS_EN_MASK | | 1202 | data |= PCIE_CNTL2__SLV_MEM_LS_EN_MASK | |
1199 | PCIE_CNTL2__MST_MEM_LS_EN_MASK | | 1203 | PCIE_CNTL2__MST_MEM_LS_EN_MASK | |
1200 | PCIE_CNTL2__REPLAY_MEM_LS_EN_MASK; | 1204 | PCIE_CNTL2__REPLAY_MEM_LS_EN_MASK; |
@@ -1208,13 +1212,13 @@ static void fiji_update_bif_medium_grain_light_sleep(struct amdgpu_device *adev, | |||
1208 | } | 1212 | } |
1209 | 1213 | ||
1210 | static void fiji_update_hdp_medium_grain_clock_gating(struct amdgpu_device *adev, | 1214 | static void fiji_update_hdp_medium_grain_clock_gating(struct amdgpu_device *adev, |
1211 | bool enable) | 1215 | bool enable) |
1212 | { | 1216 | { |
1213 | uint32_t temp, data; | 1217 | uint32_t temp, data; |
1214 | 1218 | ||
1215 | temp = data = RREG32(mmHDP_HOST_PATH_CNTL); | 1219 | temp = data = RREG32(mmHDP_HOST_PATH_CNTL); |
1216 | 1220 | ||
1217 | if (enable) | 1221 | if (enable && (adev->cg_flags & AMD_CG_SUPPORT_HDP_MGCG)) |
1218 | data &= ~HDP_HOST_PATH_CNTL__CLOCK_GATING_DIS_MASK; | 1222 | data &= ~HDP_HOST_PATH_CNTL__CLOCK_GATING_DIS_MASK; |
1219 | else | 1223 | else |
1220 | data |= HDP_HOST_PATH_CNTL__CLOCK_GATING_DIS_MASK; | 1224 | data |= HDP_HOST_PATH_CNTL__CLOCK_GATING_DIS_MASK; |
@@ -1230,7 +1234,7 @@ static void fiji_update_hdp_light_sleep(struct amdgpu_device *adev, | |||
1230 | 1234 | ||
1231 | temp = data = RREG32(mmHDP_MEM_POWER_LS); | 1235 | temp = data = RREG32(mmHDP_MEM_POWER_LS); |
1232 | 1236 | ||
1233 | if (enable) | 1237 | if (enable && (adev->cg_flags & AMD_CG_SUPPORT_HDP_LS)) |
1234 | data |= HDP_MEM_POWER_LS__LS_ENABLE_MASK; | 1238 | data |= HDP_MEM_POWER_LS__LS_ENABLE_MASK; |
1235 | else | 1239 | else |
1236 | data &= ~HDP_MEM_POWER_LS__LS_ENABLE_MASK; | 1240 | data &= ~HDP_MEM_POWER_LS__LS_ENABLE_MASK; |
@@ -1240,13 +1244,13 @@ static void fiji_update_hdp_light_sleep(struct amdgpu_device *adev, | |||
1240 | } | 1244 | } |
1241 | 1245 | ||
1242 | static void fiji_update_rom_medium_grain_clock_gating(struct amdgpu_device *adev, | 1246 | static void fiji_update_rom_medium_grain_clock_gating(struct amdgpu_device *adev, |
1243 | bool enable) | 1247 | bool enable) |
1244 | { | 1248 | { |
1245 | uint32_t temp, data; | 1249 | uint32_t temp, data; |
1246 | 1250 | ||
1247 | temp = data = RREG32_SMC(ixCGTT_ROM_CLK_CTRL0); | 1251 | temp = data = RREG32_SMC(ixCGTT_ROM_CLK_CTRL0); |
1248 | 1252 | ||
1249 | if (enable) | 1253 | if (enable && (adev->cg_flags & AMD_CG_SUPPORT_ROM_MGCG)) |
1250 | data &= ~(CGTT_ROM_CLK_CTRL0__SOFT_OVERRIDE0_MASK | | 1254 | data &= ~(CGTT_ROM_CLK_CTRL0__SOFT_OVERRIDE0_MASK | |
1251 | CGTT_ROM_CLK_CTRL0__SOFT_OVERRIDE1_MASK); | 1255 | CGTT_ROM_CLK_CTRL0__SOFT_OVERRIDE1_MASK); |
1252 | else | 1256 | else |
@@ -1258,7 +1262,7 @@ static void fiji_update_rom_medium_grain_clock_gating(struct amdgpu_device *adev | |||
1258 | } | 1262 | } |
1259 | 1263 | ||
1260 | static int vi_common_set_clockgating_state(void *handle, | 1264 | static int vi_common_set_clockgating_state(void *handle, |
1261 | enum amd_clockgating_state state) | 1265 | enum amd_clockgating_state state) |
1262 | { | 1266 | { |
1263 | struct amdgpu_device *adev = (struct amdgpu_device *)handle; | 1267 | struct amdgpu_device *adev = (struct amdgpu_device *)handle; |
1264 | 1268 | ||