aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/gpu/drm/nouveau
diff options
context:
space:
mode:
authorBen Skeggs <bskeggs@redhat.com>2014-08-31 20:44:57 -0400
committerBen Skeggs <bskeggs@redhat.com>2014-09-15 08:25:05 -0400
commit4cc6c3fe391b9a5869e3ca08f3619963064f079c (patch)
tree5b0b710c107694e9b4ab0809b0879180dffa208a /drivers/gpu/drm/nouveau
parent50c4088313aa15e59a7a02645207599e6cdc9e91 (diff)
drm/gk104/fb/ram: skip table entry for mode we're already in
NVIDIA binary driver appears to, not sure if it's for a good reason, but grasping at straws for some GDDR5 reclocking issues here. Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
Diffstat (limited to 'drivers/gpu/drm/nouveau')
-rw-r--r--drivers/gpu/drm/nouveau/core/subdev/fb/ramnve0.c23
1 files changed, 12 insertions, 11 deletions
diff --git a/drivers/gpu/drm/nouveau/core/subdev/fb/ramnve0.c b/drivers/gpu/drm/nouveau/core/subdev/fb/ramnve0.c
index 9764792c3222..caae9efc0084 100644
--- a/drivers/gpu/drm/nouveau/core/subdev/fb/ramnve0.c
+++ b/drivers/gpu/drm/nouveau/core/subdev/fb/ramnve0.c
@@ -1173,18 +1173,19 @@ nve0_ram_init(struct nouveau_object *object)
1173 1173
1174 cnt = nv_ro08(bios, data + 0x14); /* guess at count */ 1174 cnt = nv_ro08(bios, data + 0x14); /* guess at count */
1175 data = nv_ro32(bios, data + 0x10); /* guess u32... */ 1175 data = nv_ro32(bios, data + 0x10); /* guess u32... */
1176 save = nv_rd32(pfb, 0x10f65c); 1176 save = nv_rd32(pfb, 0x10f65c) & 0x000000f0;
1177 for (i = 0; i < cnt; i++) { 1177 for (i = 0; i < cnt; i++, data += 4) {
1178 nv_mask(pfb, 0x10f65c, 0x000000f0, i << 4); 1178 if (i != save >> 4) {
1179 nvbios_exec(&(struct nvbios_init) { 1179 nv_mask(pfb, 0x10f65c, 0x000000f0, i << 4);
1180 .subdev = nv_subdev(pfb), 1180 nvbios_exec(&(struct nvbios_init) {
1181 .bios = bios, 1181 .subdev = nv_subdev(pfb),
1182 .offset = nv_ro32(bios, data), /* guess u32 */ 1182 .bios = bios,
1183 .execute = 1, 1183 .offset = nv_ro32(bios, data),
1184 }); 1184 .execute = 1,
1185 data += 4; 1185 });
1186 }
1186 } 1187 }
1187 nv_wr32(pfb, 0x10f65c, save); 1188 nv_mask(pfb, 0x10f65c, 0x000000f0, save);
1188 nv_mask(pfb, 0x10f584, 0x11000000, 0x00000000); 1189 nv_mask(pfb, 0x10f584, 0x11000000, 0x00000000);
1189 1190
1190 switch (ram->base.type) { 1191 switch (ram->base.type) {