aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/gpu/drm/radeon/cik.c
diff options
context:
space:
mode:
authorDave Airlie <airlied@redhat.com>2014-09-15 21:28:52 -0400
committerDave Airlie <airlied@redhat.com>2014-09-15 21:38:04 -0400
commitb2efb3f0a1db62aff5e824125785ec6731143b6d (patch)
tree67510cec69e18e55d82bed803428b2a5027d92bb /drivers/gpu/drm/radeon/cik.c
parent4ac073640a528662a7c072a30e92e70ce00ded33 (diff)
parent9e82bf014195d6f0054982c463575cdce24292be (diff)
drm: backmerge tag 'v3.17-rc5' into drm-next
This is requested to get the fixes for intel and radeon into the same tree for future development work. i915_display.c: fix missing dev_priv conflict.
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 0b5a230d8b96..0d761f73a7fa 100644
--- a/drivers/gpu/drm/radeon/cik.c
+++ b/drivers/gpu/drm/radeon/cik.c
@@ -5750,20 +5750,17 @@ static int cik_pcie_gart_enable(struct radeon_device *rdev)
5750 WREG32(0x15D8, 0); 5750 WREG32(0x15D8, 0);
5751 WREG32(0x15DC, 0); 5751 WREG32(0x15DC, 0);
5752 5752
5753 /* empty context1-15 */ 5753 /* restore context1-15 */
5754 /* FIXME start with 4G, once using 2 level pt switch to full
5755 * vm size space
5756 */
5757 /* set vm size, must be a multiple of 4 */ 5754 /* set vm size, must be a multiple of 4 */
5758 WREG32(VM_CONTEXT1_PAGE_TABLE_START_ADDR, 0); 5755 WREG32(VM_CONTEXT1_PAGE_TABLE_START_ADDR, 0);
5759 WREG32(VM_CONTEXT1_PAGE_TABLE_END_ADDR, rdev->vm_manager.max_pfn); 5756 WREG32(VM_CONTEXT1_PAGE_TABLE_END_ADDR, rdev->vm_manager.max_pfn);
5760 for (i = 1; i < 16; i++) { 5757 for (i = 1; i < 16; i++) {
5761 if (i < 8) 5758 if (i < 8)
5762 WREG32(VM_CONTEXT0_PAGE_TABLE_BASE_ADDR + (i << 2), 5759 WREG32(VM_CONTEXT0_PAGE_TABLE_BASE_ADDR + (i << 2),
5763 rdev->gart.table_addr >> 12); 5760 rdev->vm_manager.saved_table_addr[i]);
5764 else 5761 else
5765 WREG32(VM_CONTEXT8_PAGE_TABLE_BASE_ADDR + ((i - 8) << 2), 5762 WREG32(VM_CONTEXT8_PAGE_TABLE_BASE_ADDR + ((i - 8) << 2),
5766 rdev->gart.table_addr >> 12); 5763 rdev->vm_manager.saved_table_addr[i]);
5767 } 5764 }
5768 5765
5769 /* enable context1-15 */ 5766 /* enable context1-15 */
@@ -5828,6 +5825,17 @@ static int cik_pcie_gart_enable(struct radeon_device *rdev)
5828 */ 5825 */
5829static void cik_pcie_gart_disable(struct radeon_device *rdev) 5826static void cik_pcie_gart_disable(struct radeon_device *rdev)
5830{ 5827{
5828 unsigned i;
5829
5830 for (i = 1; i < 16; ++i) {
5831 uint32_t reg;
5832 if (i < 8)
5833 reg = VM_CONTEXT0_PAGE_TABLE_BASE_ADDR + (i << 2);
5834 else
5835 reg = VM_CONTEXT8_PAGE_TABLE_BASE_ADDR + ((i - 8) << 2);
5836 rdev->vm_manager.saved_table_addr[i] = RREG32(reg);
5837 }
5838
5831 /* Disable all tables */ 5839 /* Disable all tables */
5832 WREG32(VM_CONTEXT0_CNTL, 0); 5840 WREG32(VM_CONTEXT0_CNTL, 0);
5833 WREG32(VM_CONTEXT1_CNTL, 0); 5841 WREG32(VM_CONTEXT1_CNTL, 0);
@@ -9558,6 +9566,9 @@ static void cik_pcie_gen3_enable(struct radeon_device *rdev)
9558 int ret, i; 9566 int ret, i;
9559 u16 tmp16; 9567 u16 tmp16;
9560 9568
9569 if (pci_is_root_bus(rdev->pdev->bus))
9570 return;
9571
9561 if (radeon_pcie_gen2 == 0) 9572 if (radeon_pcie_gen2 == 0)
9562 return; 9573 return;
9563 9574
@@ -9784,7 +9795,8 @@ static void cik_program_aspm(struct radeon_device *rdev)
9784 if (orig != data) 9795 if (orig != data)
9785 WREG32_PCIE_PORT(PCIE_LC_LINK_WIDTH_CNTL, data); 9796 WREG32_PCIE_PORT(PCIE_LC_LINK_WIDTH_CNTL, data);
9786 9797
9787 if (!disable_clkreq) { 9798 if (!disable_clkreq &&
9799 !pci_is_root_bus(rdev->pdev->bus)) {
9788 struct pci_dev *root = rdev->pdev->bus->self; 9800 struct pci_dev *root = rdev->pdev->bus->self;
9789 u32 lnkcap; 9801 u32 lnkcap;
9790 9802