Skip to content

Commit

Permalink
---
Browse files Browse the repository at this point in the history
yaml
---
r: 282607
b: refs/heads/master
c: 463464e
h: refs/heads/master
i:
  282605: d65bca8
  282603: 0a8448b
  282599: 837f40d
  282591: 770a13c
v: v3
  • Loading branch information
Ben Skeggs committed Dec 21, 2011
1 parent 761493a commit fb65e9f
Show file tree
Hide file tree
Showing 2 changed files with 25 additions and 23 deletions.
2 changes: 1 addition & 1 deletion [refs]
Original file line number Diff line number Diff line change
@@ -1,2 +1,2 @@
---
refs/heads/master: 6805979fa9090b2c69c645cf19bba9a2849f336b
refs/heads/master: 463464eb9bf7d0254f3effa8050246fa4e009ace
46 changes: 24 additions & 22 deletions trunk/drivers/gpu/drm/nouveau/nv50_pm.c
Original file line number Diff line number Diff line change
Expand Up @@ -66,7 +66,7 @@ read_div(struct drm_device *dev)
}

static u32
read_pll_ref(struct drm_device *dev, u32 base)
read_pll_src(struct drm_device *dev, u32 base)
{
struct drm_nouveau_private *dev_priv = dev->dev_private;
u32 coef, ref = read_clk(dev, clk_src_crystal);
Expand Down Expand Up @@ -137,21 +137,12 @@ read_pll_ref(struct drm_device *dev, u32 base)
}

static u32
read_pll(struct drm_device *dev, u32 base)
read_pll_ref(struct drm_device *dev, u32 base)
{
struct drm_nouveau_private *dev_priv = dev->dev_private;
u32 mast = nv_rd32(dev, 0x00c040);
u32 src = 0, ref = 0, clk = 0;
u32 ctrl, coef;
int N1, N2, M1, M2;
u32 src, mast = nv_rd32(dev, 0x00c040);

switch (base) {
case 0x004028:
if (mast & 0x00100000) {
/* wtf, appears to only disable post-divider on nva0 */
if (dev_priv->chipset != 0xa0)
return read_clk(dev, clk_src_dom6);
}
src = !!(mast & 0x00200000);
break;
case 0x004020:
Expand All @@ -164,22 +155,33 @@ read_pll(struct drm_device *dev, u32 base)
src = !!(mast & 0x02000000);
break;
case 0x00e810:
ref = read_clk(dev, clk_src_crystal);
break;
return read_clk(dev, clk_src_crystal);
default:
NV_ERROR(dev, "bad pll 0x%06x\n", base);
return 0;
}

if (ref == 0) {
if (src)
ref = read_clk(dev, clk_src_href);
else
ref = read_pll_ref(dev, base);
}
if (src)
return read_clk(dev, clk_src_href);
return read_pll_src(dev, base);
}

ctrl = nv_rd32(dev, base + 0);
coef = nv_rd32(dev, base + 4);
static u32
read_pll(struct drm_device *dev, u32 base)
{
struct drm_nouveau_private *dev_priv = dev->dev_private;
u32 mast = nv_rd32(dev, 0x00c040);
u32 ctrl = nv_rd32(dev, base + 0);
u32 coef = nv_rd32(dev, base + 4);
u32 ref = read_pll_ref(dev, base);
u32 clk = 0;
int N1, N2, M1, M2;

if (base == 0x004028 && (mast & 0x00100000)) {
/* wtf, appears to only disable post-divider on nva0 */
if (dev_priv->chipset != 0xa0)
return read_clk(dev, clk_src_dom6);
}

N2 = (coef & 0xff000000) >> 24;
M2 = (coef & 0x00ff0000) >> 16;
Expand Down

0 comments on commit fb65e9f

Please sign in to comment.