diff options
author | Ben Skeggs <bskeggs@redhat.com> | 2011-06-21 01:12:26 -0400 |
---|---|---|
committer | Ben Skeggs <bskeggs@redhat.com> | 2011-09-20 02:03:34 -0400 |
commit | 9698b9a680e9aee124b1cd752abf1c672ea24c03 (patch) | |
tree | d42bcd462415b86d59e19448fa443e90ff67d2fa /drivers/gpu/drm/nouveau/nouveau_perf.c | |
parent | 354d0781e5cef1f227ee3064cb65053365177d3b (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.c | 31 |
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 | ||