summaryrefslogtreecommitdiffstats
path: root/drivers/gpu/drm/nouveau/core/subdev/clock/nva3.c
diff options
context:
space:
mode:
authorMaarten Lankhorst2012-11-16 17:47:16 +0100
committerBen Skeggs2012-11-18 23:52:30 +0100
commitd9c390561d1c4e520773e62781bbf89bb6845353 (patch)
treed851559261615735f1e3920086cd1eb3a9df4d70 /drivers/gpu/drm/nouveau/core/subdev/clock/nva3.c
parentdrm/nouveau: fix crash with noaccel=1 (diff)
downloadkernel-qcow2-linux-d9c390561d1c4e520773e62781bbf89bb6845353.tar.gz
kernel-qcow2-linux-d9c390561d1c4e520773e62781bbf89bb6845353.tar.xz
kernel-qcow2-linux-d9c390561d1c4e520773e62781bbf89bb6845353.zip
drm/nouveau: add missing pll_calc calls
Fixes a null pointer dereference when reclocking on my fermi. Signed-off-by: Maarten Lankhorst <maarten.lankhorst@canonical.com> Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
Diffstat (limited to 'drivers/gpu/drm/nouveau/core/subdev/clock/nva3.c')
-rw-r--r--drivers/gpu/drm/nouveau/core/subdev/clock/nva3.c19
1 files changed, 19 insertions, 0 deletions
diff --git a/drivers/gpu/drm/nouveau/core/subdev/clock/nva3.c b/drivers/gpu/drm/nouveau/core/subdev/clock/nva3.c
index cc8d7d162d7c..9068c98b96f6 100644
--- a/drivers/gpu/drm/nouveau/core/subdev/clock/nva3.c
+++ b/drivers/gpu/drm/nouveau/core/subdev/clock/nva3.c
@@ -66,6 +66,24 @@ nva3_clock_pll_set(struct nouveau_clock *clk, u32 type, u32 freq)
return ret;
}
+int
+nva3_clock_pll_calc(struct nouveau_clock *clock, struct nvbios_pll *info,
+ int clk, struct nouveau_pll_vals *pv)
+{
+ int ret, N, M, P;
+
+ ret = nva3_pll_calc(clock, info, clk, &N, NULL, &M, &P);
+
+ if (ret > 0) {
+ pv->refclk = info->refclk;
+ pv->N1 = N;
+ pv->M1 = M;
+ pv->log2P = P;
+ }
+ return ret;
+}
+
+
static int
nva3_clock_ctor(struct nouveau_object *parent, struct nouveau_object *engine,
struct nouveau_oclass *oclass, void *data, u32 size,
@@ -80,6 +98,7 @@ nva3_clock_ctor(struct nouveau_object *parent, struct nouveau_object *engine,
return ret;
priv->base.pll_set = nva3_clock_pll_set;
+ priv->base.pll_calc = nva3_clock_pll_calc;
return 0;
}