aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/gpu/drm/amd/amdgpu/cik.c
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/gpu/drm/amd/amdgpu/cik.c')
-rw-r--r--drivers/gpu/drm/amd/amdgpu/cik.c24
1 files changed, 12 insertions, 12 deletions
diff --git a/drivers/gpu/drm/amd/amdgpu/cik.c b/drivers/gpu/drm/amd/amdgpu/cik.c
index c7c298b88170..fd9c9588ef46 100644
--- a/drivers/gpu/drm/amd/amdgpu/cik.c
+++ b/drivers/gpu/drm/amd/amdgpu/cik.c
@@ -32,6 +32,7 @@
32#include "amdgpu_vce.h" 32#include "amdgpu_vce.h"
33#include "cikd.h" 33#include "cikd.h"
34#include "atom.h" 34#include "atom.h"
35#include "amd_pcie.h"
35 36
36#include "cik.h" 37#include "cik.h"
37#include "gmc_v7_0.h" 38#include "gmc_v7_0.h"
@@ -1595,8 +1596,8 @@ static void cik_pcie_gen3_enable(struct amdgpu_device *adev)
1595{ 1596{
1596 struct pci_dev *root = adev->pdev->bus->self; 1597 struct pci_dev *root = adev->pdev->bus->self;
1597 int bridge_pos, gpu_pos; 1598 int bridge_pos, gpu_pos;
1598 u32 speed_cntl, mask, current_data_rate; 1599 u32 speed_cntl, current_data_rate;
1599 int ret, i; 1600 int i;
1600 u16 tmp16; 1601 u16 tmp16;
1601 1602
1602 if (pci_is_root_bus(adev->pdev->bus)) 1603 if (pci_is_root_bus(adev->pdev->bus))
@@ -1608,23 +1609,20 @@ static void cik_pcie_gen3_enable(struct amdgpu_device *adev)
1608 if (adev->flags & AMD_IS_APU) 1609 if (adev->flags & AMD_IS_APU)
1609 return; 1610 return;
1610 1611
1611 ret = drm_pcie_get_speed_cap_mask(adev->ddev, &mask); 1612 if (!(adev->pm.pcie_gen_mask & (CAIL_PCIE_LINK_SPEED_SUPPORT_GEN2 |
1612 if (ret != 0) 1613 CAIL_PCIE_LINK_SPEED_SUPPORT_GEN3)))
1613 return;
1614
1615 if (!(mask & (DRM_PCIE_SPEED_50 | DRM_PCIE_SPEED_80)))
1616 return; 1614 return;
1617 1615
1618 speed_cntl = RREG32_PCIE(ixPCIE_LC_SPEED_CNTL); 1616 speed_cntl = RREG32_PCIE(ixPCIE_LC_SPEED_CNTL);
1619 current_data_rate = (speed_cntl & PCIE_LC_SPEED_CNTL__LC_CURRENT_DATA_RATE_MASK) >> 1617 current_data_rate = (speed_cntl & PCIE_LC_SPEED_CNTL__LC_CURRENT_DATA_RATE_MASK) >>
1620 PCIE_LC_SPEED_CNTL__LC_CURRENT_DATA_RATE__SHIFT; 1618 PCIE_LC_SPEED_CNTL__LC_CURRENT_DATA_RATE__SHIFT;
1621 if (mask & DRM_PCIE_SPEED_80) { 1619 if (adev->pm.pcie_gen_mask & CAIL_PCIE_LINK_SPEED_SUPPORT_GEN3) {
1622 if (current_data_rate == 2) { 1620 if (current_data_rate == 2) {
1623 DRM_INFO("PCIE gen 3 link speeds already enabled\n"); 1621 DRM_INFO("PCIE gen 3 link speeds already enabled\n");
1624 return; 1622 return;
1625 } 1623 }
1626 DRM_INFO("enabling PCIE gen 3 link speeds, disable with amdgpu.pcie_gen2=0\n"); 1624 DRM_INFO("enabling PCIE gen 3 link speeds, disable with amdgpu.pcie_gen2=0\n");
1627 } else if (mask & DRM_PCIE_SPEED_50) { 1625 } else if (adev->pm.pcie_gen_mask & CAIL_PCIE_LINK_SPEED_SUPPORT_GEN2) {
1628 if (current_data_rate == 1) { 1626 if (current_data_rate == 1) {
1629 DRM_INFO("PCIE gen 2 link speeds already enabled\n"); 1627 DRM_INFO("PCIE gen 2 link speeds already enabled\n");
1630 return; 1628 return;
@@ -1640,7 +1638,7 @@ static void cik_pcie_gen3_enable(struct amdgpu_device *adev)
1640 if (!gpu_pos) 1638 if (!gpu_pos)
1641 return; 1639 return;
1642 1640
1643 if (mask & DRM_PCIE_SPEED_80) { 1641 if (adev->pm.pcie_gen_mask & CAIL_PCIE_LINK_SPEED_SUPPORT_GEN3) {
1644 /* re-try equalization if gen3 is not already enabled */ 1642 /* re-try equalization if gen3 is not already enabled */
1645 if (current_data_rate != 2) { 1643 if (current_data_rate != 2) {
1646 u16 bridge_cfg, gpu_cfg; 1644 u16 bridge_cfg, gpu_cfg;
@@ -1735,9 +1733,9 @@ static void cik_pcie_gen3_enable(struct amdgpu_device *adev)
1735 1733
1736 pci_read_config_word(adev->pdev, gpu_pos + PCI_EXP_LNKCTL2, &tmp16); 1734 pci_read_config_word(adev->pdev, gpu_pos + PCI_EXP_LNKCTL2, &tmp16);
1737 tmp16 &= ~0xf; 1735 tmp16 &= ~0xf;
1738 if (mask & DRM_PCIE_SPEED_80) 1736 if (adev->pm.pcie_gen_mask & CAIL_PCIE_LINK_SPEED_SUPPORT_GEN3)
1739 tmp16 |= 3; /* gen3 */ 1737 tmp16 |= 3; /* gen3 */
1740 else if (mask & DRM_PCIE_SPEED_50) 1738 else if (adev->pm.pcie_gen_mask & CAIL_PCIE_LINK_SPEED_SUPPORT_GEN2)
1741 tmp16 |= 2; /* gen2 */ 1739 tmp16 |= 2; /* gen2 */
1742 else 1740 else
1743 tmp16 |= 1; /* gen1 */ 1741 tmp16 |= 1; /* gen1 */
@@ -2450,6 +2448,8 @@ static int cik_common_early_init(void *handle)
2450 return -EINVAL; 2448 return -EINVAL;
2451 } 2449 }
2452 2450
2451 amdgpu_get_pcie_info(adev);
2452
2453 return 0; 2453 return 0;
2454} 2454}
2455 2455