aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/gpu/drm/radeon/cik.c
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/gpu/drm/radeon/cik.c')
-rw-r--r--drivers/gpu/drm/radeon/cik.c26
1 files changed, 19 insertions, 7 deletions
diff --git a/drivers/gpu/drm/radeon/cik.c b/drivers/gpu/drm/radeon/cik.c
index 79a5a5519bd6..fa9565957f9d 100644
--- a/drivers/gpu/drm/radeon/cik.c
+++ b/drivers/gpu/drm/radeon/cik.c
@@ -5749,20 +5749,17 @@ static int cik_pcie_gart_enable(struct radeon_device *rdev)
5749 WREG32(0x15D8, 0); 5749 WREG32(0x15D8, 0);
5750 WREG32(0x15DC, 0); 5750 WREG32(0x15DC, 0);
5751 5751
5752 /* empty context1-15 */ 5752 /* restore context1-15 */
5753 /* FIXME start with 4G, once using 2 level pt switch to full
5754 * vm size space
5755 */
5756 /* set vm size, must be a multiple of 4 */ 5753 /* set vm size, must be a multiple of 4 */
5757 WREG32(VM_CONTEXT1_PAGE_TABLE_START_ADDR, 0); 5754 WREG32(VM_CONTEXT1_PAGE_TABLE_START_ADDR, 0);
5758 WREG32(VM_CONTEXT1_PAGE_TABLE_END_ADDR, rdev->vm_manager.max_pfn); 5755 WREG32(VM_CONTEXT1_PAGE_TABLE_END_ADDR, rdev->vm_manager.max_pfn);
5759 for (i = 1; i < 16; i++) { 5756 for (i = 1; i < 16; i++) {
5760 if (i < 8) 5757 if (i < 8)
5761 WREG32(VM_CONTEXT0_PAGE_TABLE_BASE_ADDR + (i << 2), 5758 WREG32(VM_CONTEXT0_PAGE_TABLE_BASE_ADDR + (i << 2),
5762 rdev->gart.table_addr >> 12); 5759 rdev->vm_manager.saved_table_addr[i]);
5763 else 5760 else
5764 WREG32(VM_CONTEXT8_PAGE_TABLE_BASE_ADDR + ((i - 8) << 2), 5761 WREG32(VM_CONTEXT8_PAGE_TABLE_BASE_ADDR + ((i - 8) << 2),
5765 rdev->gart.table_addr >> 12); 5762 rdev->vm_manager.saved_table_addr[i]);
5766 } 5763 }
5767 5764
5768 /* enable context1-15 */ 5765 /* enable context1-15 */
@@ -5827,6 +5824,17 @@ static int cik_pcie_gart_enable(struct radeon_device *rdev)
5827 */ 5824 */
5828static void cik_pcie_gart_disable(struct radeon_device *rdev) 5825static void cik_pcie_gart_disable(struct radeon_device *rdev)
5829{ 5826{
5827 unsigned i;
5828
5829 for (i = 1; i < 16; ++i) {
5830 uint32_t reg;
5831 if (i < 8)
5832 reg = VM_CONTEXT0_PAGE_TABLE_BASE_ADDR + (i << 2);
5833 else
5834 reg = VM_CONTEXT8_PAGE_TABLE_BASE_ADDR + ((i - 8) << 2);
5835 rdev->vm_manager.saved_table_addr[i] = RREG32(reg);
5836 }
5837
5830 /* Disable all tables */ 5838 /* Disable all tables */
5831 WREG32(VM_CONTEXT0_CNTL, 0); 5839 WREG32(VM_CONTEXT0_CNTL, 0);
5832 WREG32(VM_CONTEXT1_CNTL, 0); 5840 WREG32(VM_CONTEXT1_CNTL, 0);
@@ -9555,6 +9563,9 @@ static void cik_pcie_gen3_enable(struct radeon_device *rdev)
9555 int ret, i; 9563 int ret, i;
9556 u16 tmp16; 9564 u16 tmp16;
9557 9565
9566 if (pci_is_root_bus(rdev->pdev->bus))
9567 return;
9568
9558 if (radeon_pcie_gen2 == 0) 9569 if (radeon_pcie_gen2 == 0)
9559 return; 9570 return;
9560 9571
@@ -9781,7 +9792,8 @@ static void cik_program_aspm(struct radeon_device *rdev)
9781 if (orig != data) 9792 if (orig != data)
9782 WREG32_PCIE_PORT(PCIE_LC_LINK_WIDTH_CNTL, data); 9793 WREG32_PCIE_PORT(PCIE_LC_LINK_WIDTH_CNTL, data);
9783 9794
9784 if (!disable_clkreq) { 9795 if (!disable_clkreq &&
9796 !pci_is_root_bus(rdev->pdev->bus)) {
9785 struct pci_dev *root = rdev->pdev->bus->self; 9797 struct pci_dev *root = rdev->pdev->bus->self;
9786 u32 lnkcap; 9798 u32 lnkcap;
9787 9799