summaryrefslogtreecommitdiffstats
path: root/drivers/gpu/drm/radeon/r300.c
diff options
context:
space:
mode:
authorDave Airlie <airlied@redhat.com>2009-06-29 10:29:11 +0200
committerDave Airlie <airlied@redhat.com>2009-07-15 09:13:02 +0200
commited10f95d60d41033d356fdcf88c240d7065bd5b4 (patch)
tree319558df2249b066c6678c2b54a8ae2fdfa7ae5c /drivers/gpu/drm/radeon/r300.c
parentx86: don't clear nodes_states[N_NORMAL_MEMORY] when numa is not compiled in (diff)
downloadlinux-ed10f95d60d41033d356fdcf88c240d7065bd5b4.tar.xz
linux-ed10f95d60d41033d356fdcf88c240d7065bd5b4.zip
drm/radeon/kms: fix some GART table entry bugs.
1. rv370 can accept 40-bit addresses - also at 24-bit shift not 4 bits 2. rs480 table can be in 40-bit space. - 4 bit shift for top 8 bits 3. rs480 table entries can be in 40-bit space. Signed-off-by: Dave Airlie <airlied@redhat.com>
Diffstat (limited to 'drivers/gpu/drm/radeon/r300.c')
-rw-r--r--drivers/gpu/drm/radeon/r300.c4
1 files changed, 3 insertions, 1 deletions
diff --git a/drivers/gpu/drm/radeon/r300.c b/drivers/gpu/drm/radeon/r300.c
index e2ed5bc08170..cd9ea98e9c6f 100644
--- a/drivers/gpu/drm/radeon/r300.c
+++ b/drivers/gpu/drm/radeon/r300.c
@@ -150,7 +150,9 @@ int rv370_pcie_gart_set_page(struct radeon_device *rdev, int i, uint64_t addr)
if (i < 0 || i > rdev->gart.num_gpu_pages) {
return -EINVAL;
}
- addr = (((u32)addr) >> 8) | ((upper_32_bits(addr) & 0xff) << 4) | 0xC;
+ addr = (lower_32_bits(addr) >> 8) |
+ ((upper_32_bits(addr) & 0xff) << 24) |
+ 0xc;
writel(cpu_to_le32(addr), ((void __iomem *)ptr) + (i * 4));
return 0;
}