aboutsummaryrefslogtreecommitdiff
path: root/linux-core/xgi_pcie.c
diff options
context:
space:
mode:
authorIan Romanick <idr@us.ibm.com>2007-08-13 16:21:20 -0700
committerIan Romanick <idr@us.ibm.com>2007-08-13 16:21:20 -0700
commit15f841bd529b50901272ca35a4c57de42a51901a (patch)
tree4ac0505676a67731ca7153c4c36cbf8820c7a787 /linux-core/xgi_pcie.c
parent20a0e5e4298761ae6005399e45d66b93109d2121 (diff)
Strobe magic 0xB03F register to flush PCI-e GART table.
The original XGI kernel driver strobed 0xB03F each time a page was allocated to back a GART page. When the driver was converted to use the DRM SG interface, this code was lost. Returning it fixes a long standing issue where the X-server would work fine the first time, but acceleration commands would be ignored on the second X-server invocation.
Diffstat (limited to 'linux-core/xgi_pcie.c')
-rw-r--r--linux-core/xgi_pcie.c6
1 files changed, 5 insertions, 1 deletions
diff --git a/linux-core/xgi_pcie.c b/linux-core/xgi_pcie.c
index d15ea32a..a0f52740 100644
--- a/linux-core/xgi_pcie.c
+++ b/linux-core/xgi_pcie.c
@@ -103,7 +103,11 @@ static int xgi_pcie_lut_init(struct xgi_info * info)
DRM_WRITE8(info->mmio_map, 0xB00C, temp & ~0x02);
/* Set GART base address to HW */
- dwWriteReg(info->mmio_map, 0xB034, info->lut_handle->busaddr);
+ DRM_WRITE32(info->mmio_map, 0xB034, info->lut_handle->busaddr);
+
+ /* Flush GART table. */
+ DRM_WRITE8(info->mmio_map, 0xB03F, 0x40);
+ DRM_WRITE8(info->mmio_map, 0xB03F, 0x00);
return 0;
}