drm/nv50: fix memory detection for cards with >=4GiB VRAM
authorBen Skeggs <bskeggs@redhat.com>
Wed, 2 Jun 2010 00:12:00 +0000 (10:12 +1000)
committerBen Skeggs <bskeggs@redhat.com>
Tue, 13 Jul 2010 00:13:01 +0000 (10:13 +1000)
Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
drivers/gpu/drm/nouveau/nouveau_mem.c

index 206bd16..2853ba0 100644 (file)
@@ -364,9 +364,14 @@ nouveau_mem_detect(struct drm_device *dev)
        } else
        if (dev_priv->flags & (NV_NFORCE | NV_NFORCE2)) {
                dev_priv->vram_size = nouveau_mem_detect_nforce(dev);
-       } else {
+       } else
+       if (dev_priv->card_type < NV_50) {
                dev_priv->vram_size  = nv_rd32(dev, NV04_FIFO_DATA);
                dev_priv->vram_size &= NV10_FIFO_DATA_RAM_AMOUNT_MB_MASK;
+       } else {
+               dev_priv->vram_size = nv_rd32(dev, NV04_FIFO_DATA);
+               dev_priv->vram_size |= (dev_priv->vram_size & 0xff) << 32;
+               dev_priv->vram_size &= 0xffffffff00;
                if (dev_priv->chipset == 0xaa || dev_priv->chipset == 0xac) {
                        dev_priv->vram_sys_base = nv_rd32(dev, 0x100e10);
                        dev_priv->vram_sys_base <<= 12;