diff options
-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) { |