drm/nv50/vram: fix incorrect detection of bank count on newer chipsets
authorBen Skeggs <bskeggs@redhat.com>
Fri, 7 Oct 2011 06:00:31 +0000 (16:00 +1000)
committerBen Skeggs <bskeggs@redhat.com>
Wed, 9 Nov 2011 22:58:47 +0000 (08:58 +1000)
NVA3+ has an extra bit here compared to NV50:NVA3 chipsets.

Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
drivers/gpu/drm/nouveau/nv50_vram.c

index 9da2383..2e45e57 100644 (file)
@@ -160,7 +160,7 @@ nv50_vram_rblock(struct drm_device *dev)
        colbits  =  (r4 & 0x0000f000) >> 12;
        rowbitsa = ((r4 & 0x000f0000) >> 16) + 8;
        rowbitsb = ((r4 & 0x00f00000) >> 20) + 8;
-       banks    = ((r4 & 0x01000000) ? 8 : 4);
+       banks    = 1 << (((r4 & 0x03000000) >> 24) + 2);
 
        rowsize = parts * banks * (1 << colbits) * 8;
        predicted = rowsize << rowbitsa;