aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/gpu/drm/nouveau/nouveau_perf.c
diff options
context:
space:
mode:
authorBen Skeggs <bskeggs@redhat.com>2011-06-21 01:12:26 -0400
committerBen Skeggs <bskeggs@redhat.com>2011-09-20 02:03:34 -0400
commit9698b9a680e9aee124b1cd752abf1c672ea24c03 (patch)
treed42bcd462415b86d59e19448fa443e90ff67d2fa /drivers/gpu/drm/nouveau/nouveau_perf.c
parent354d0781e5cef1f227ee3064cb65053365177d3b (diff)
drm/nvc0/pm: more complete parsing of clock domains
Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
Diffstat (limited to 'drivers/gpu/drm/nouveau/nouveau_perf.c')
-rw-r--r--drivers/gpu/drm/nouveau/nouveau_perf.c31
1 files changed, 15 insertions, 16 deletions
diff --git a/drivers/gpu/drm/nouveau/nouveau_perf.c b/drivers/gpu/drm/nouveau/nouveau_perf.c
index b00cf4b5046b..bb50f2490234 100644
--- a/drivers/gpu/drm/nouveau/nouveau_perf.c
+++ b/drivers/gpu/drm/nouveau/nouveau_perf.c
@@ -284,28 +284,27 @@ nouveau_perf_init(struct drm_device *dev)
284 perflvl->unk05 = ROM16(entry[16]) * 1000; 284 perflvl->unk05 = ROM16(entry[16]) * 1000;
285 break; 285 break;
286 case 0x40: 286 case 0x40:
287#define subent(n) entry[perf[2] + ((n) * perf[3])] 287#define subent(n) (ROM16(entry[perf[2] + ((n) * perf[3])]) & 0xfff) * 1000
288 perflvl->fanspeed = 0; /*XXX*/ 288 perflvl->fanspeed = 0; /*XXX*/
289 perflvl->volt_min = entry[2]; 289 perflvl->volt_min = entry[2];
290 if (dev_priv->card_type == NV_50) { 290 if (dev_priv->card_type == NV_50) {
291 perflvl->core = ROM16(subent(0)) & 0xfff; 291 perflvl->core = subent(0);
292 perflvl->shader = ROM16(subent(1)) & 0xfff; 292 perflvl->shader = subent(1);
293 perflvl->memory = ROM16(subent(2)) & 0xfff; 293 perflvl->memory = subent(2);
294 perflvl->vdec = ROM16(subent(3)) & 0xfff; 294 perflvl->vdec = subent(3);
295 perflvl->unka0 = ROM16(subent(4)) & 0xfff; 295 perflvl->unka0 = subent(4);
296 } else { 296 } else {
297 perflvl->shader = ROM16(subent(3)) & 0xfff; 297 perflvl->hub06 = subent(0);
298 perflvl->hub01 = subent(1);
299 perflvl->copy = subent(2);
300 perflvl->shader = subent(3);
301 perflvl->rop = subent(4);
302 perflvl->memory = subent(5);
303 perflvl->vdec = subent(6);
304 perflvl->daemon = subent(10);
305 perflvl->hub07 = subent(11);
298 perflvl->core = perflvl->shader / 2; 306 perflvl->core = perflvl->shader / 2;
299 perflvl->unk0a = ROM16(subent(4)) & 0xfff;
300 perflvl->memory = ROM16(subent(5)) & 0xfff;
301 } 307 }
302
303 perflvl->core *= 1000;
304 perflvl->shader *= 1000;
305 perflvl->memory *= 1000;
306 perflvl->unk0a *= 1000;
307 perflvl->vdec *= 1000;
308 perflvl->unka0 *= 1000;
309 break; 308 break;
310 } 309 }
311 310