diff options
author | Ben Skeggs <bskeggs@redhat.com> | 2011-04-19 23:15:02 -0400 |
---|---|---|
committer | Ben Skeggs <bskeggs@redhat.com> | 2011-05-15 20:50:42 -0400 |
commit | 40f6193b8fe3c29f49c675f22c643e9ea9e8950f (patch) | |
tree | 4c78bea4044d7f311a2355c87b862c35e0ccb1ae /drivers/gpu | |
parent | 730673b6657d61d7380556876551b8e0af251dc0 (diff) |
drm/nvc0/pm: correct core/mem/shader perflvl parsing
We need to parse some of these other entries still, but I've yet to
determine exactly which PLLs the rest map to.
Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
Diffstat (limited to 'drivers/gpu')
-rw-r--r-- | drivers/gpu/drm/nouveau/nouveau_perf.c | 16 |
1 files changed, 13 insertions, 3 deletions
diff --git a/drivers/gpu/drm/nouveau/nouveau_perf.c b/drivers/gpu/drm/nouveau/nouveau_perf.c index b70b6ef4ee78..90ab4978e812 100644 --- a/drivers/gpu/drm/nouveau/nouveau_perf.c +++ b/drivers/gpu/drm/nouveau/nouveau_perf.c | |||
@@ -236,9 +236,19 @@ nouveau_perf_init(struct drm_device *dev) | |||
236 | #define subent(n) entry[perf[2] + ((n) * perf[3])] | 236 | #define subent(n) entry[perf[2] + ((n) * perf[3])] |
237 | perflvl->fanspeed = 0; /*XXX*/ | 237 | perflvl->fanspeed = 0; /*XXX*/ |
238 | perflvl->voltage = entry[2]; | 238 | perflvl->voltage = entry[2]; |
239 | perflvl->core = (ROM16(subent(0)) & 0xfff) * 1000; | 239 | if (dev_priv->card_type == NV_50) { |
240 | perflvl->shader = (ROM16(subent(1)) & 0xfff) * 1000; | 240 | perflvl->core = ROM16(subent(0)) & 0xfff; |
241 | perflvl->memory = (ROM16(subent(2)) & 0xfff) * 1000; | 241 | perflvl->shader = ROM16(subent(1)) & 0xfff; |
242 | perflvl->memory = ROM16(subent(2)) & 0xfff; | ||
243 | } else { | ||
244 | perflvl->shader = ROM16(subent(3)) & 0xfff; | ||
245 | perflvl->core = perflvl->shader / 2; | ||
246 | perflvl->memory = ROM16(subent(5)) & 0xfff; | ||
247 | } | ||
248 | |||
249 | perflvl->core *= 1000; | ||
250 | perflvl->shader *= 1000; | ||
251 | perflvl->memory *= 1000; | ||
242 | break; | 252 | break; |
243 | } | 253 | } |
244 | 254 | ||