aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--drivers/gpu/drm/nouveau/nva3_pm.c21
1 files changed, 21 insertions, 0 deletions
diff --git a/drivers/gpu/drm/nouveau/nva3_pm.c b/drivers/gpu/drm/nouveau/nva3_pm.c
index 3a237887961e..8cbe59a8852b 100644
--- a/drivers/gpu/drm/nouveau/nva3_pm.c
+++ b/drivers/gpu/drm/nouveau/nva3_pm.c
@@ -456,6 +456,9 @@ mclk_timing_set(struct nouveau_mem_exec_func *exec)
456 if (info->ramcfg[2] & 0x02) 456 if (info->ramcfg[2] & 0x02)
457 unk718 |= 0x00000100; 457 unk718 |= 0x00000100;
458 nv_wr32(dev, 0x100718, unk718); 458 nv_wr32(dev, 0x100718, unk718);
459
460 if (info->ramcfg[2] & 0x10)
461 nv_wr32(dev, 0x111100, 0x48000000); /*XXX*/
459 } 462 }
460} 463}
461 464
@@ -498,15 +501,33 @@ prog_mem(struct drm_device *dev, struct nva3_pm_state *info)
498 nv_mask(dev, 0x004168, 0x003f3141, ctrl); 501 nv_mask(dev, 0x004168, 0x003f3141, ctrl);
499 } 502 }
500 503
504 if (info->ramcfg) {
505 if (info->ramcfg[2] & 0x10) {
506 nv_mask(dev, 0x111104, 0x00000600, 0x00000000);
507 } else {
508 nv_mask(dev, 0x111100, 0x40000000, 0x40000000);
509 nv_mask(dev, 0x111104, 0x00000180, 0x00000000);
510 }
511 }
501 if (info->rammap && !(info->rammap[4] & 0x02)) 512 if (info->rammap && !(info->rammap[4] & 0x02))
502 nv_mask(dev, 0x100200, 0x00000800, 0x00000000); 513 nv_mask(dev, 0x100200, 0x00000800, 0x00000000);
503 nv_wr32(dev, 0x611200, 0x00003300); 514 nv_wr32(dev, 0x611200, 0x00003300);
515 if (!(info->ramcfg[2] & 0x10))
516 nv_wr32(dev, 0x111100, 0x4c020000); /*XXX*/
504 517
505 nouveau_mem_exec(&exec, info->perflvl); 518 nouveau_mem_exec(&exec, info->perflvl);
506 519
507 nv_wr32(dev, 0x611200, 0x00003330); 520 nv_wr32(dev, 0x611200, 0x00003330);
508 if (info->rammap && (info->rammap[4] & 0x02)) 521 if (info->rammap && (info->rammap[4] & 0x02))
509 nv_mask(dev, 0x100200, 0x00000800, 0x00000800); 522 nv_mask(dev, 0x100200, 0x00000800, 0x00000800);
523 if (info->ramcfg) {
524 if (info->ramcfg[2] & 0x10) {
525 nv_mask(dev, 0x111104, 0x00000180, 0x00000180);
526 nv_mask(dev, 0x111100, 0x40000000, 0x00000000);
527 } else {
528 nv_mask(dev, 0x111104, 0x00000600, 0x00000600);
529 }
530 }
510 531
511 if (info->mclk.pll) { 532 if (info->mclk.pll) {
512 nv_mask(dev, 0x004168, 0x00000001, 0x00000000); 533 nv_mask(dev, 0x004168, 0x00000001, 0x00000000);