diff options
Diffstat (limited to 'drivers/gpu/drm/amd/amdgpu/uvd_v4_2.c')
-rw-r--r-- | drivers/gpu/drm/amd/amdgpu/uvd_v4_2.c | 15 |
1 files changed, 10 insertions, 5 deletions
diff --git a/drivers/gpu/drm/amd/amdgpu/uvd_v4_2.c b/drivers/gpu/drm/amd/amdgpu/uvd_v4_2.c index f15df99f0a06..b34cefc7ebd5 100644 --- a/drivers/gpu/drm/amd/amdgpu/uvd_v4_2.c +++ b/drivers/gpu/drm/amd/amdgpu/uvd_v4_2.c @@ -401,7 +401,8 @@ static void uvd_v4_2_stop(struct amdgpu_device *adev) break; mdelay(1); } - break; + if (status & 2) + break; } for (i = 0; i < 10; ++i) { @@ -411,7 +412,8 @@ static void uvd_v4_2_stop(struct amdgpu_device *adev) break; mdelay(1); } - break; + if (status & 0xf) + break; } /* Stall UMC and register bus before resetting VCPU */ @@ -424,7 +426,8 @@ static void uvd_v4_2_stop(struct amdgpu_device *adev) break; mdelay(1); } - break; + if (status & 0x240) + break; } WREG32_P(0x3D49, 0, ~(1 << 2)); @@ -723,7 +726,8 @@ static int uvd_v4_2_set_powergating_state(void *handle, if (state == AMD_PG_STATE_GATE) { uvd_v4_2_stop(adev); if (adev->pg_flags & AMD_PG_SUPPORT_UVD && amdgpu_dpm == 0) { - if (!(RREG32_SMC(ixCURRENT_PG_STATUS) & 0x4)) { + if (!(RREG32_SMC(ixCURRENT_PG_STATUS) & + CURRENT_PG_STATUS__UVD_PG_STATUS_MASK)) { WREG32(mmUVD_PGFSM_CONFIG, (UVD_PGFSM_CONFIG__UVD_PGFSM_FSM_ADDR_MASK | UVD_PGFSM_CONFIG__UVD_PGFSM_POWER_DOWN_MASK | UVD_PGFSM_CONFIG__UVD_PGFSM_P1_SELECT_MASK)); @@ -733,7 +737,8 @@ static int uvd_v4_2_set_powergating_state(void *handle, return 0; } else { if (adev->pg_flags & AMD_PG_SUPPORT_UVD && amdgpu_dpm == 0) { - if (RREG32_SMC(ixCURRENT_PG_STATUS) & 0x4) { + if (RREG32_SMC(ixCURRENT_PG_STATUS) & + CURRENT_PG_STATUS__UVD_PG_STATUS_MASK) { WREG32(mmUVD_PGFSM_CONFIG, (UVD_PGFSM_CONFIG__UVD_PGFSM_FSM_ADDR_MASK | UVD_PGFSM_CONFIG__UVD_PGFSM_POWER_UP_MASK | UVD_PGFSM_CONFIG__UVD_PGFSM_P1_SELECT_MASK)); |