aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/gpu
diff options
context:
space:
mode:
authorBen Skeggs <bskeggs@redhat.com>2011-04-19 23:15:02 -0400
committerBen Skeggs <bskeggs@redhat.com>2011-05-15 20:50:42 -0400
commit40f6193b8fe3c29f49c675f22c643e9ea9e8950f (patch)
tree4c78bea4044d7f311a2355c87b862c35e0ccb1ae /drivers/gpu
parent730673b6657d61d7380556876551b8e0af251dc0 (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.c16
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