drm/amdgpu: fix xclk freq on CHIP_STONEY
authorjsg <jsg@openbsd.org>
Tue, 20 Jun 2023 02:37:06 +0000 (02:37 +0000)
committerjsg <jsg@openbsd.org>
Tue, 20 Jun 2023 02:37:06 +0000 (02:37 +0000)
From Chia-I Wu
34419aa0b448b0eee941102793893e0e256abda1 in linux-6.1.y/6.1.34
b447b079cf3a9971ea4d31301e673f49612ccc18 in mainline linux

sys/dev/pci/drm/amd/amdgpu/vi.c

index 1e52c5f..2a3fbba 100644 (file)
@@ -542,8 +542,15 @@ static u32 vi_get_xclk(struct amdgpu_device *adev)
        u32 reference_clock = adev->clock.spll.reference_freq;
        u32 tmp;
 
-       if (adev->flags & AMD_IS_APU)
-               return reference_clock;
+       if (adev->flags & AMD_IS_APU) {
+               switch (adev->asic_type) {
+               case CHIP_STONEY:
+                       /* vbios says 48Mhz, but the actual freq is 100Mhz */
+                       return 10000;
+               default:
+                       return reference_clock;
+               }
+       }
 
        tmp = RREG32_SMC(ixCG_CLKPIN_CNTL_2);
        if (REG_GET_FIELD(tmp, CG_CLKPIN_CNTL_2, MUX_TCLK_TO_XCLK))