drm/nouveau: fix fetching vbios from above 4GiB vram addresses

Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
This commit is contained in:
Ben Skeggs 2011-06-24 08:18:23 +10:00
parent 9a11dd6587
commit 9617757fb3

View File

@ -135,13 +135,14 @@ static void load_vbios_pramin(struct drm_device *dev, uint8_t *data)
int i; int i;
if (dev_priv->card_type >= NV_50) { if (dev_priv->card_type >= NV_50) {
uint32_t vbios_vram = (nv_rd32(dev, 0x619f04) & ~0xff) << 8; u64 addr = (u64)(nv_rd32(dev, 0x619f04) & 0xffffff00) << 8;
if (!addr) {
if (!vbios_vram) addr = (u64)nv_rd32(dev, 0x1700) << 16;
vbios_vram = (nv_rd32(dev, 0x1700) << 16) + 0xf0000; addr += 0xf0000;
}
old_bar0_pramin = nv_rd32(dev, 0x1700); old_bar0_pramin = nv_rd32(dev, 0x1700);
nv_wr32(dev, 0x1700, vbios_vram >> 16); nv_wr32(dev, 0x1700, addr >> 16);
} }
/* bail if no rom signature */ /* bail if no rom signature */