diff options
author | Martin Peres <martin.peres@free.fr> | 2011-04-13 18:46:19 -0400 |
---|---|---|
committer | Ben Skeggs <bskeggs@redhat.com> | 2011-05-15 20:50:30 -0400 |
commit | e614b2e7ca9f9946cede13b34c950b92af6fa7ef (patch) | |
tree | d721917f2a547fd6f9471deb36bb23aceb569b70 /drivers/gpu/drm/nouveau/nouveau_pm.c | |
parent | dac55b58253fe4ced44979543bde35d25eaf56dc (diff) |
drm/nouveau: Associate memtimings with performance levels on cards <= nv98
v2 (Ben Skeggs): fix ramcfg strap, and remove bogus handling of perf 0x40
Signed-off-by: Martin Peres <martin.peres@ensi-bourges.fr>
Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
Diffstat (limited to 'drivers/gpu/drm/nouveau/nouveau_pm.c')
-rw-r--r-- | drivers/gpu/drm/nouveau/nouveau_pm.c | 14 |
1 files changed, 9 insertions, 5 deletions
diff --git a/drivers/gpu/drm/nouveau/nouveau_pm.c b/drivers/gpu/drm/nouveau/nouveau_pm.c index dc8a0cc8e5dc..da8d994d5e8a 100644 --- a/drivers/gpu/drm/nouveau/nouveau_pm.c +++ b/drivers/gpu/drm/nouveau/nouveau_pm.c | |||
@@ -156,7 +156,7 @@ nouveau_pm_perflvl_get(struct drm_device *dev, struct nouveau_pm_level *perflvl) | |||
156 | static void | 156 | static void |
157 | nouveau_pm_perflvl_info(struct nouveau_pm_level *perflvl, char *ptr, int len) | 157 | nouveau_pm_perflvl_info(struct nouveau_pm_level *perflvl, char *ptr, int len) |
158 | { | 158 | { |
159 | char c[16], s[16], v[16], f[16]; | 159 | char c[16], s[16], v[16], f[16], t[16]; |
160 | 160 | ||
161 | c[0] = '\0'; | 161 | c[0] = '\0'; |
162 | if (perflvl->core) | 162 | if (perflvl->core) |
@@ -174,8 +174,12 @@ nouveau_pm_perflvl_info(struct nouveau_pm_level *perflvl, char *ptr, int len) | |||
174 | if (perflvl->fanspeed) | 174 | if (perflvl->fanspeed) |
175 | snprintf(f, sizeof(f), " fanspeed %d%%", perflvl->fanspeed); | 175 | snprintf(f, sizeof(f), " fanspeed %d%%", perflvl->fanspeed); |
176 | 176 | ||
177 | snprintf(ptr, len, "memory %dMHz%s%s%s%s\n", perflvl->memory / 1000, | 177 | t[0] = '\0'; |
178 | c, s, v, f); | 178 | if (perflvl->timing) |
179 | snprintf(t, sizeof(t), " timing %d", perflvl->timing->id); | ||
180 | |||
181 | snprintf(ptr, len, "memory %dMHz%s%s%s%s%s\n", perflvl->memory / 1000, | ||
182 | c, s, v, f, t); | ||
179 | } | 183 | } |
180 | 184 | ||
181 | static ssize_t | 185 | static ssize_t |
@@ -476,10 +480,10 @@ nouveau_pm_init(struct drm_device *dev) | |||
476 | char info[256]; | 480 | char info[256]; |
477 | int ret, i; | 481 | int ret, i; |
478 | 482 | ||
483 | nouveau_mem_timing_init(dev); | ||
479 | nouveau_volt_init(dev); | 484 | nouveau_volt_init(dev); |
480 | nouveau_perf_init(dev); | 485 | nouveau_perf_init(dev); |
481 | nouveau_temp_init(dev); | 486 | nouveau_temp_init(dev); |
482 | nouveau_mem_timing_init(dev); | ||
483 | 487 | ||
484 | NV_INFO(dev, "%d available performance level(s)\n", pm->nr_perflvl); | 488 | NV_INFO(dev, "%d available performance level(s)\n", pm->nr_perflvl); |
485 | for (i = 0; i < pm->nr_perflvl; i++) { | 489 | for (i = 0; i < pm->nr_perflvl; i++) { |
@@ -525,10 +529,10 @@ nouveau_pm_fini(struct drm_device *dev) | |||
525 | if (pm->cur != &pm->boot) | 529 | if (pm->cur != &pm->boot) |
526 | nouveau_pm_perflvl_set(dev, &pm->boot); | 530 | nouveau_pm_perflvl_set(dev, &pm->boot); |
527 | 531 | ||
528 | nouveau_mem_timing_fini(dev); | ||
529 | nouveau_temp_fini(dev); | 532 | nouveau_temp_fini(dev); |
530 | nouveau_perf_fini(dev); | 533 | nouveau_perf_fini(dev); |
531 | nouveau_volt_fini(dev); | 534 | nouveau_volt_fini(dev); |
535 | nouveau_mem_timing_fini(dev); | ||
532 | 536 | ||
533 | #if defined(CONFIG_ACPI) && defined(CONFIG_POWER_SUPPLY) | 537 | #if defined(CONFIG_ACPI) && defined(CONFIG_POWER_SUPPLY) |
534 | unregister_acpi_notifier(&pm->acpi_nb); | 538 | unregister_acpi_notifier(&pm->acpi_nb); |