Skip to content

Commit baefc7c

Browse files
Timur Kristófalexdeucher
authored andcommitted
drm/amdgpu/vce1: Workaround PLL timeout on FirePro W9000
Sometimes the VCE PLL times out waiting for CTLACK/CTLACK2. When it happens, the VCE still works, but much slower. Observed on a Tahiti GPU, but not all: - FirePro W9000 has the issue - Radeon R9 280X not affected - Radeon HD 7990 not affected As a workaround, on the affected chip just don't put the VCE PLL in sleep mode. Leaving the VCE PLL in bypass mode or reset mode both work. Using bypass mode is simpler. Signed-off-by: Timur Kristóf <timur.kristof@gmail.com> Acked-by: Christian König <christian.koenig@amd.com> Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
1 parent eabc716 commit baefc7c

1 file changed

Lines changed: 8 additions & 0 deletions

File tree

  • drivers/gpu/drm/amd/amdgpu

drivers/gpu/drm/amd/amdgpu/si.c

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1918,6 +1918,14 @@ static int si_set_vce_clocks(struct amdgpu_device *adev, u32 evclk, u32 ecclk)
19181918
~VCEPLL_BYPASS_EN_MASK);
19191919

19201920
if (!evclk || !ecclk) {
1921+
/*
1922+
* On some chips, the PLL takes way too long to get out of
1923+
* sleep mode, causing a timeout waiting on CTLACK/CTLACK2.
1924+
* Leave the PLL running in bypass mode.
1925+
*/
1926+
if (adev->pdev->device == 0x6780)
1927+
return 0;
1928+
19211929
/* Keep the Bypass mode, put PLL to sleep */
19221930
WREG32_SMC_P(CG_VCEPLL_FUNC_CNTL, VCEPLL_SLEEP_MASK,
19231931
~VCEPLL_SLEEP_MASK);

0 commit comments

Comments
 (0)