Commit 005a83f1 authored by Alex Deucher's avatar Alex Deucher Committed by Dave Airlie
Browse files

drm/radeon/kms: set DMA mask properly on newer PCI asics



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: default avatarAlex Deucher <alexander.deucher@amd.com>
Cc: Chen Jie <chenj@lemote.com>
Signed-off-by: default avatarDave Airlie <airlied@redhat.com>
parent c245cb9e
Loading
Loading
Loading
Loading
+4 −3
Original line number Diff line number Diff line
@@ -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;