diff options
author | Francisco Jerez <currojerez@riseup.net> | 2010-06-17 06:42:14 -0400 |
---|---|---|
committer | Ben Skeggs <bskeggs@redhat.com> | 2010-07-12 20:13:04 -0400 |
commit | 190a43783f2c43186180c827444d4eac901b4bcf (patch) | |
tree | 9eb197e45a1991e891c5d56e8b938c515d0a3787 /drivers | |
parent | 2fa67f12e71d7f8adade7c4e6bb839156dea2365 (diff) |
drm/nouveau: Don't clear AGPCMD completely on INIT_RESET.
We just need to clear the SBA and ENABLE bits to reset the AGP
controller: If the AGP bridge was configured to use "fast writes",
clearing the FW bit would break the subsequent MMIO writes and
eventually end with a lockup.
Note that all the BIOSes I've seen do the same as we did (it works for
them because they don't use MMIO), OTOH the blob leaves FW untouched.
Signed-off-by: Francisco Jerez <currojerez@riseup.net>
Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
Diffstat (limited to 'drivers')
-rw-r--r-- | drivers/gpu/drm/nouveau/nouveau_bios.c | 3 |
1 files changed, 2 insertions, 1 deletions
diff --git a/drivers/gpu/drm/nouveau/nouveau_bios.c b/drivers/gpu/drm/nouveau/nouveau_bios.c index fc924b649195..9ab0c83fe9be 100644 --- a/drivers/gpu/drm/nouveau/nouveau_bios.c +++ b/drivers/gpu/drm/nouveau/nouveau_bios.c | |||
@@ -2146,7 +2146,8 @@ init_reset(struct nvbios *bios, uint16_t offset, struct init_exec *iexec) | |||
2146 | /* no iexec->execute check by design */ | 2146 | /* no iexec->execute check by design */ |
2147 | 2147 | ||
2148 | pci_nv_19 = bios_rd32(bios, NV_PBUS_PCI_NV_19); | 2148 | pci_nv_19 = bios_rd32(bios, NV_PBUS_PCI_NV_19); |
2149 | bios_wr32(bios, NV_PBUS_PCI_NV_19, 0); | 2149 | bios_wr32(bios, NV_PBUS_PCI_NV_19, pci_nv_19 & ~0xf00); |
2150 | |||
2150 | bios_wr32(bios, reg, value1); | 2151 | bios_wr32(bios, reg, value1); |
2151 | 2152 | ||
2152 | udelay(10); | 2153 | udelay(10); |