Commit 5ca929b9 authored by Ben Skeggs's avatar Ben Skeggs

drm/nva3/fbram: restrict training pattern setup to GT218

It doesn't look like the others have the registers.
Signed-off-by: default avatarBen Skeggs <bskeggs@redhat.com>
parent 8687c5d7
...@@ -335,21 +335,23 @@ nva3_ram_init(struct nouveau_object *object) ...@@ -335,21 +335,23 @@ nva3_ram_init(struct nouveau_object *object)
/* prepare for ddr link training, and load training patterns */ /* prepare for ddr link training, and load training patterns */
switch (ram->base.type) { switch (ram->base.type) {
case NV_MEM_TYPE_DDR3: { case NV_MEM_TYPE_DDR3: {
static const u32 pattern[16] = { if (nv_device(pfb)->chipset == 0xa8) {
0xaaaaaaaa, 0xcccccccc, 0xdddddddd, 0xeeeeeeee, static const u32 pattern[16] = {
0x00000000, 0x11111111, 0x44444444, 0xdddddddd, 0xaaaaaaaa, 0xcccccccc, 0xdddddddd, 0xeeeeeeee,
0x33333333, 0x55555555, 0x77777777, 0x66666666, 0x00000000, 0x11111111, 0x44444444, 0xdddddddd,
0x99999999, 0x88888888, 0xeeeeeeee, 0xbbbbbbbb, 0x33333333, 0x55555555, 0x77777777, 0x66666666,
}; 0x99999999, 0x88888888, 0xeeeeeeee, 0xbbbbbbbb,
};
nv_wr32(pfb, 0x100538, 0x10001ff6); /*XXX*/
nv_wr32(pfb, 0x1005a8, 0x0000ffff); nv_wr32(pfb, 0x100538, 0x10001ff6); /*XXX*/
nv_mask(pfb, 0x10f800, 0x00000001, 0x00000001); nv_wr32(pfb, 0x1005a8, 0x0000ffff);
for (i = 0; i < 0x30; i++) { nv_mask(pfb, 0x10f800, 0x00000001, 0x00000001);
nv_wr32(pfb, 0x10f8c0, (i << 8) | i); for (i = 0; i < 0x30; i++) {
nv_wr32(pfb, 0x10f8e0, (i << 8) | i); nv_wr32(pfb, 0x10f8c0, (i << 8) | i);
nv_wr32(pfb, 0x10f900, pattern[i % 16]); nv_wr32(pfb, 0x10f8e0, (i << 8) | i);
nv_wr32(pfb, 0x10f920, pattern[i % 16]); nv_wr32(pfb, 0x10f900, pattern[i % 16]);
nv_wr32(pfb, 0x10f920, pattern[i % 16]);
}
} }
} }
break; break;
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment