From 1a881a7da1c92df2d8c5e7406f7db56f7c1ad533 Mon Sep 17 00:00:00 2001 From: Ben Skeggs Date: Fri, 3 Feb 2012 10:34:33 +1000 Subject: [PATCH] --- yaml --- r: 307519 b: refs/heads/master c: 2b20fd0ab497df5284743975e4204c1c2b03a397 h: refs/heads/master i: 307517: ac267e7e173a9073173963acacf4049ad612e214 307515: 557fbc2a0caaf79325387aa0640cb1e3497cec55 307511: 2c4554fda05efae03c03265e2371f5f22527e353 307503: 321dd0c98c33b2ce0d46b64bc21d92da83628693 307487: 350138bae19f76939e94578a9f5462ef7d528dc4 307455: a04b7ef5d79a7caee997218753b197a217654c50 v: v3 --- [refs] | 2 +- trunk/drivers/gpu/drm/nouveau/nva3_pm.c | 21 +++++++++++++++++++++ 2 files changed, 22 insertions(+), 1 deletion(-) diff --git a/[refs] b/[refs] index 1c230827465e..ade7ff1966f7 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: 5f54d29ee9dace1e2ef4e8c9873ad4dd7a06d11a +refs/heads/master: 2b20fd0ab497df5284743975e4204c1c2b03a397 diff --git a/trunk/drivers/gpu/drm/nouveau/nva3_pm.c b/trunk/drivers/gpu/drm/nouveau/nva3_pm.c index 3a237887961e..8cbe59a8852b 100644 --- a/trunk/drivers/gpu/drm/nouveau/nva3_pm.c +++ b/trunk/drivers/gpu/drm/nouveau/nva3_pm.c @@ -456,6 +456,9 @@ mclk_timing_set(struct nouveau_mem_exec_func *exec) if (info->ramcfg[2] & 0x02) unk718 |= 0x00000100; nv_wr32(dev, 0x100718, unk718); + + if (info->ramcfg[2] & 0x10) + nv_wr32(dev, 0x111100, 0x48000000); /*XXX*/ } } @@ -498,15 +501,33 @@ prog_mem(struct drm_device *dev, struct nva3_pm_state *info) nv_mask(dev, 0x004168, 0x003f3141, ctrl); } + if (info->ramcfg) { + if (info->ramcfg[2] & 0x10) { + nv_mask(dev, 0x111104, 0x00000600, 0x00000000); + } else { + nv_mask(dev, 0x111100, 0x40000000, 0x40000000); + nv_mask(dev, 0x111104, 0x00000180, 0x00000000); + } + } if (info->rammap && !(info->rammap[4] & 0x02)) nv_mask(dev, 0x100200, 0x00000800, 0x00000000); nv_wr32(dev, 0x611200, 0x00003300); + if (!(info->ramcfg[2] & 0x10)) + nv_wr32(dev, 0x111100, 0x4c020000); /*XXX*/ nouveau_mem_exec(&exec, info->perflvl); nv_wr32(dev, 0x611200, 0x00003330); if (info->rammap && (info->rammap[4] & 0x02)) nv_mask(dev, 0x100200, 0x00000800, 0x00000800); + if (info->ramcfg) { + if (info->ramcfg[2] & 0x10) { + nv_mask(dev, 0x111104, 0x00000180, 0x00000180); + nv_mask(dev, 0x111100, 0x40000000, 0x00000000); + } else { + nv_mask(dev, 0x111104, 0x00000600, 0x00000600); + } + } if (info->mclk.pll) { nv_mask(dev, 0x004168, 0x00000001, 0x00000000);