diff options
-rw-r--r-- | drivers/gpu/drm/nouveau/core/subdev/fb/ramnva3.c | 32 |
1 files changed, 17 insertions, 15 deletions
diff --git a/drivers/gpu/drm/nouveau/core/subdev/fb/ramnva3.c b/drivers/gpu/drm/nouveau/core/subdev/fb/ramnva3.c index 503e09b14e1b..6eb97f16fbda 100644 --- a/drivers/gpu/drm/nouveau/core/subdev/fb/ramnva3.c +++ b/drivers/gpu/drm/nouveau/core/subdev/fb/ramnva3.c | |||
@@ -335,21 +335,23 @@ nva3_ram_init(struct nouveau_object *object) | |||
335 | /* prepare for ddr link training, and load training patterns */ | 335 | /* prepare for ddr link training, and load training patterns */ |
336 | switch (ram->base.type) { | 336 | switch (ram->base.type) { |
337 | case NV_MEM_TYPE_DDR3: { | 337 | case NV_MEM_TYPE_DDR3: { |
338 | static const u32 pattern[16] = { | 338 | if (nv_device(pfb)->chipset == 0xa8) { |
339 | 0xaaaaaaaa, 0xcccccccc, 0xdddddddd, 0xeeeeeeee, | 339 | static const u32 pattern[16] = { |
340 | 0x00000000, 0x11111111, 0x44444444, 0xdddddddd, | 340 | 0xaaaaaaaa, 0xcccccccc, 0xdddddddd, 0xeeeeeeee, |
341 | 0x33333333, 0x55555555, 0x77777777, 0x66666666, | 341 | 0x00000000, 0x11111111, 0x44444444, 0xdddddddd, |
342 | 0x99999999, 0x88888888, 0xeeeeeeee, 0xbbbbbbbb, | 342 | 0x33333333, 0x55555555, 0x77777777, 0x66666666, |
343 | }; | 343 | 0x99999999, 0x88888888, 0xeeeeeeee, 0xbbbbbbbb, |
344 | 344 | }; | |
345 | nv_wr32(pfb, 0x100538, 0x10001ff6); /*XXX*/ | 345 | |
346 | nv_wr32(pfb, 0x1005a8, 0x0000ffff); | 346 | nv_wr32(pfb, 0x100538, 0x10001ff6); /*XXX*/ |
347 | nv_mask(pfb, 0x10f800, 0x00000001, 0x00000001); | 347 | nv_wr32(pfb, 0x1005a8, 0x0000ffff); |
348 | for (i = 0; i < 0x30; i++) { | 348 | nv_mask(pfb, 0x10f800, 0x00000001, 0x00000001); |
349 | nv_wr32(pfb, 0x10f8c0, (i << 8) | i); | 349 | for (i = 0; i < 0x30; i++) { |
350 | nv_wr32(pfb, 0x10f8e0, (i << 8) | i); | 350 | nv_wr32(pfb, 0x10f8c0, (i << 8) | i); |
351 | nv_wr32(pfb, 0x10f900, pattern[i % 16]); | 351 | nv_wr32(pfb, 0x10f8e0, (i << 8) | i); |
352 | nv_wr32(pfb, 0x10f920, pattern[i % 16]); | 352 | nv_wr32(pfb, 0x10f900, pattern[i % 16]); |
353 | nv_wr32(pfb, 0x10f920, pattern[i % 16]); | ||
354 | } | ||
353 | } | 355 | } |
354 | } | 356 | } |
355 | break; | 357 | break; |