From: Alex Deucher <alexander.deuc...@amd.com>

If a card wasn't PCIE, we always set the DMA mask to 32 bits.
This is only applies to the old rage128/r1xx gart block on
early radeon asics (~r1xx-r4xx).  Newer PCI and IGP cards
can handle 40 bits just fine.

Signed-off-by: Alex Deucher <alexander.deucher at amd.com>
Cc: Chen Jie <chenj at lemote.com>
---
 drivers/gpu/drm/radeon/radeon_device.c |    7 ++++---
 1 files changed, 4 insertions(+), 3 deletions(-)

diff --git a/drivers/gpu/drm/radeon/radeon_device.c 
b/drivers/gpu/drm/radeon/radeon_device.c
index b51e157..2c3429d 100644
--- a/drivers/gpu/drm/radeon/radeon_device.c
+++ b/drivers/gpu/drm/radeon/radeon_device.c
@@ -750,14 +750,15 @@ int radeon_device_init(struct radeon_device *rdev,

        /* set DMA mask + need_dma32 flags.
         * PCIE - can handle 40-bits.
-        * IGP - can handle 40-bits (in theory)
+        * IGP - can handle 40-bits
         * AGP - generally dma32 is safest
-        * PCI - only dma32
+        * PCI - dma32 for legacy pci gart, 40 bits on newer asics
         */
        rdev->need_dma32 = false;
        if (rdev->flags & RADEON_IS_AGP)
                rdev->need_dma32 = true;
-       if (rdev->flags & RADEON_IS_PCI)
+       if ((rdev->flags & RADEON_IS_PCI) &&
+           (rdev->family < CHIP_RS400))
                rdev->need_dma32 = true;

        dma_bits = rdev->need_dma32 ? 32 : 40;
-- 
1.7.1.1

Reply via email to