aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/gpu/drm/amd/amdgpu/mmhub_v1_0.c
diff options
context:
space:
mode:
authorHawking Zhang <Hawking.Zhang@amd.com>2017-06-16 09:31:43 -0400
committerAlex Deucher <alexander.deucher@amd.com>2017-06-29 12:43:45 -0400
commita95890b45fcf982b34a0357793499ed44f15ddd9 (patch)
treea4b41170775ed0d9c3df32cd2cc65657791c4337 /drivers/gpu/drm/amd/amdgpu/mmhub_v1_0.c
parent2fcd43cef6e28ca546376af07c0454dc72b593f9 (diff)
drm/amdgpu: add interface to enable/disable mmhub pg on raven
Signed-off-by: Hawking Zhang <Hawking.Zhang@amd.com> Reviewed-by: Alex Deucher <alexander.deucher@amd.com> Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
Diffstat (limited to 'drivers/gpu/drm/amd/amdgpu/mmhub_v1_0.c')
-rw-r--r--drivers/gpu/drm/amd/amdgpu/mmhub_v1_0.c48
1 files changed, 48 insertions, 0 deletions
diff --git a/drivers/gpu/drm/amd/amdgpu/mmhub_v1_0.c b/drivers/gpu/drm/amd/amdgpu/mmhub_v1_0.c
index 8447ce74304f..c885c0d9344b 100644
--- a/drivers/gpu/drm/amd/amdgpu/mmhub_v1_0.c
+++ b/drivers/gpu/drm/amd/amdgpu/mmhub_v1_0.c
@@ -414,6 +414,54 @@ void mmhub_v1_0_initialize_power_gating(struct amdgpu_device *adev)
414 WREG32_SOC15(MMHUB, 0, mmPCTL1_MISC, pctl1_misc); 414 WREG32_SOC15(MMHUB, 0, mmPCTL1_MISC, pctl1_misc);
415} 415}
416 416
417void mmhub_v1_0_update_power_gating(struct amdgpu_device *adev,
418 bool enable)
419{
420 uint32_t pctl0_reng_execute = 0;
421 uint32_t pctl1_reng_execute = 0;
422
423 if (amdgpu_sriov_vf(adev))
424 return;
425
426 pctl0_reng_execute = RREG32_SOC15(MMHUB, 0, mmPCTL0_RENG_EXECUTE);
427 pctl1_reng_execute = RREG32_SOC15(MMHUB, 0, mmPCTL1_RENG_EXECUTE);
428
429 if (enable) {
430 pctl0_reng_execute = REG_SET_FIELD(pctl0_reng_execute,
431 PCTL0_RENG_EXECUTE,
432 RENG_EXECUTE_ON_PWR_UP, 1);
433 pctl0_reng_execute = REG_SET_FIELD(pctl0_reng_execute,
434 PCTL0_RENG_EXECUTE,
435 RENG_EXECUTE_ON_REG_UPDATE, 1);
436 WREG32_SOC15(MMHUB, 0, mmPCTL0_RENG_EXECUTE, pctl0_reng_execute);
437
438 pctl1_reng_execute = REG_SET_FIELD(pctl1_reng_execute,
439 PCTL1_RENG_EXECUTE,
440 RENG_EXECUTE_ON_PWR_UP, 1);
441 pctl1_reng_execute = REG_SET_FIELD(pctl1_reng_execute,
442 PCTL1_RENG_EXECUTE,
443 RENG_EXECUTE_ON_REG_UPDATE, 1);
444 WREG32_SOC15(MMHUB, 0, mmPCTL1_RENG_EXECUTE, pctl1_reng_execute);
445
446 } else {
447 pctl0_reng_execute = REG_SET_FIELD(pctl0_reng_execute,
448 PCTL0_RENG_EXECUTE,
449 RENG_EXECUTE_ON_PWR_UP, 0);
450 pctl0_reng_execute = REG_SET_FIELD(pctl0_reng_execute,
451 PCTL0_RENG_EXECUTE,
452 RENG_EXECUTE_ON_REG_UPDATE, 0);
453 WREG32_SOC15(MMHUB, 0, mmPCTL0_RENG_EXECUTE, pctl0_reng_execute);
454
455 pctl1_reng_execute = REG_SET_FIELD(pctl1_reng_execute,
456 PCTL1_RENG_EXECUTE,
457 RENG_EXECUTE_ON_PWR_UP, 0);
458 pctl1_reng_execute = REG_SET_FIELD(pctl1_reng_execute,
459 PCTL1_RENG_EXECUTE,
460 RENG_EXECUTE_ON_REG_UPDATE, 0);
461 WREG32_SOC15(MMHUB, 0, mmPCTL1_RENG_EXECUTE, pctl1_reng_execute);
462 }
463}
464
417int mmhub_v1_0_gart_enable(struct amdgpu_device *adev) 465int mmhub_v1_0_gart_enable(struct amdgpu_device *adev)
418{ 466{
419 if (amdgpu_sriov_vf(adev)) { 467 if (amdgpu_sriov_vf(adev)) {