diff options
author | Ian Romanick <idr@us.ibm.com> | 2007-08-13 16:21:20 -0700 |
---|---|---|
committer | Ian Romanick <idr@us.ibm.com> | 2007-08-13 16:21:20 -0700 |
commit | 15f841bd529b50901272ca35a4c57de42a51901a (patch) | |
tree | 4ac0505676a67731ca7153c4c36cbf8820c7a787 /linux-core | |
parent | 20a0e5e4298761ae6005399e45d66b93109d2121 (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')
-rw-r--r-- | linux-core/xgi_pcie.c | 6 |
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; } |