drm/amd/pm: revise the ASPM settings for thunderbolt attached scenario
authorEvan Quan <evan.quan@amd.com>
Thu, 15 Jun 2023 02:56:55 +0000 (10:56 +0800)
committerAlex Deucher <alexander.deucher@amd.com>
Fri, 23 Jun 2023 19:36:03 +0000 (15:36 -0400)
Also, correct the comment for NAVI10_PCIE__LC_L1_INACTIVITY_TBT_DEFAULT
as 0x0000000E stands for 400ms instead of 4ms.

Signed-off-by: Evan Quan <evan.quan@amd.com>
Reviewed-by: Alex Deucher <alexander.deucher@amd.com>
Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
drivers/gpu/drm/amd/amdgpu/nbio_v2_3.c

index aa761ff..7ba47fc 100644 (file)
@@ -346,7 +346,7 @@ static void nbio_v2_3_init_registers(struct amdgpu_device *adev)
 
 #define NAVI10_PCIE__LC_L0S_INACTIVITY_DEFAULT         0x00000000 // off by default, no gains over L1
 #define NAVI10_PCIE__LC_L1_INACTIVITY_DEFAULT          0x00000009 // 1=1us, 9=1ms
-#define NAVI10_PCIE__LC_L1_INACTIVITY_TBT_DEFAULT      0x0000000E // 4ms
+#define NAVI10_PCIE__LC_L1_INACTIVITY_TBT_DEFAULT      0x0000000E // 400ms
 
 static void nbio_v2_3_enable_aspm(struct amdgpu_device *adev,
                                  bool enable)
@@ -479,9 +479,12 @@ static void nbio_v2_3_program_aspm(struct amdgpu_device *adev)
                WREG32_SOC15(NBIO, 0, mmRCC_BIF_STRAP5, data);
 
        def = data = RREG32_PCIE(smnPCIE_LC_CNTL);
-       data &= ~PCIE_LC_CNTL__LC_L0S_INACTIVITY_MASK;
-       data |= 0x9 << PCIE_LC_CNTL__LC_L1_INACTIVITY__SHIFT;
-       data |= 0x1 << PCIE_LC_CNTL__LC_PMI_TO_L1_DIS__SHIFT;
+       data |= NAVI10_PCIE__LC_L0S_INACTIVITY_DEFAULT << PCIE_LC_CNTL__LC_L0S_INACTIVITY__SHIFT;
+       if (pci_is_thunderbolt_attached(adev->pdev))
+               data |= NAVI10_PCIE__LC_L1_INACTIVITY_TBT_DEFAULT  << PCIE_LC_CNTL__LC_L1_INACTIVITY__SHIFT;
+       else
+               data |= NAVI10_PCIE__LC_L1_INACTIVITY_DEFAULT << PCIE_LC_CNTL__LC_L1_INACTIVITY__SHIFT;
+       data &= ~PCIE_LC_CNTL__LC_PMI_TO_L1_DIS_MASK;
        if (def != data)
                WREG32_PCIE(smnPCIE_LC_CNTL, data);