drm/nouveau: fix fetching vbios from above 4GiB vram addresses
[pandora-kernel.git] / drivers / gpu / drm / nouveau / nouveau_bios.c
index ff339df..1aa73d3 100644 (file)
@@ -135,13 +135,14 @@ static void load_vbios_pramin(struct drm_device *dev, uint8_t *data)
        int i;
 
        if (dev_priv->card_type >= NV_50) {
-               uint32_t vbios_vram = (nv_rd32(dev, 0x619f04) & ~0xff) << 8;
-
-               if (!vbios_vram)
-                       vbios_vram = (nv_rd32(dev, 0x1700) << 16) + 0xf0000;
+               u64 addr = (u64)(nv_rd32(dev, 0x619f04) & 0xffffff00) << 8;
+               if (!addr) {
+                       addr  = (u64)nv_rd32(dev, 0x1700) << 16;
+                       addr += 0xf0000;
+               }
 
                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 */