drm/nve0/fb/gddr5: yet another random 10f200 bit
authorBen Skeggs <bskeggs@redhat.com>
Tue, 3 Dec 2013 04:45:03 +0000 (14:45 +1000)
committerBen Skeggs <bskeggs@redhat.com>
Thu, 23 Jan 2014 03:39:05 +0000 (13:39 +1000)
Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
drivers/gpu/drm/nouveau/core/include/subdev/bios/ramcfg.h
drivers/gpu/drm/nouveau/core/subdev/bios/rammap.c
drivers/gpu/drm/nouveau/core/subdev/fb/ramnve0.c

index c364392a51d0101e611c1079042b3b3eb1b56415..c5e6d1e6ac1d8adff24f25646a5109c62e541119 100644 (file)
@@ -40,6 +40,7 @@ struct nvbios_ramcfg {
        unsigned ramcfg_11_08_04:1;
        unsigned ramcfg_11_08_08:1;
        unsigned ramcfg_11_08_10:1;
+       unsigned ramcfg_11_08_20:1;
        unsigned ramcfg_11_09:8;
 
        unsigned timing[11];
index f13aeead52acf00f078b8eefee023bda4d55cfe3..1811b2cb047276ead557d6d1025568667a1fbc24 100644 (file)
@@ -162,6 +162,7 @@ nvbios_rammapSp(struct nouveau_bios *bios, u32 data,
                p->ramcfg_11_08_04 = (nv_ro08(bios, data + 0x08) & 0x04) >> 2;
                p->ramcfg_11_08_08 = (nv_ro08(bios, data + 0x08) & 0x08) >> 3;
                p->ramcfg_11_08_10 = (nv_ro08(bios, data + 0x08) & 0x10) >> 4;
+               p->ramcfg_11_08_20 = (nv_ro08(bios, data + 0x08) & 0x20) >> 5;
                p->ramcfg_11_09    = (nv_ro08(bios, data + 0x09) & 0xff) >> 0;
                break;
        default:
index 9a79da908d72392f84f1667f48eb4d1d3011ffac..91d9fe68ed6aaa2e69dbeeedea807a8e233c5f1b 100644 (file)
@@ -476,6 +476,14 @@ nve0_ram_calc_gddr5(struct nouveau_fb *pfb, u32 freq)
        ram_mask(fuc, 0x10f2cc, 0xffffffff, next->bios.timing[8]);
        ram_mask(fuc, 0x10f2e8, 0xffffffff, next->bios.timing[9]);
 
+       data = mask = 0x00000000;
+       if (NOTE00(ramcfg_08_20)) {
+               if (next->bios.ramcfg_11_08_20)
+                       data |= 0x01000000;
+               mask |= 0x01000000;
+       }
+       ram_mask(fuc, 0x10f200, mask, data);
+
        data = mask = 0x00000000;
        if (NOTE00(ramcfg_02_03 != 0)) {
                data |= (next->bios.ramcfg_11_02_03) << 8;