diff options
author | Ben Skeggs <bskeggs@redhat.com> | 2014-08-31 20:44:57 -0400 |
---|---|---|
committer | Ben Skeggs <bskeggs@redhat.com> | 2014-09-15 08:25:05 -0400 |
commit | 4cc6c3fe391b9a5869e3ca08f3619963064f079c (patch) | |
tree | 5b0b710c107694e9b4ab0809b0879180dffa208a /drivers/gpu/drm/nouveau | |
parent | 50c4088313aa15e59a7a02645207599e6cdc9e91 (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.c | 23 |
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) { |