diff options
author | Ben Widawsky <benjamin.widawsky@intel.com> | 2014-03-19 21:31:08 -0400 |
---|---|---|
committer | Daniel Vetter <daniel.vetter@ffwll.ch> | 2014-03-20 09:45:00 -0400 |
commit | d060c1695345df6c82b5253acb7055698b2bf002 (patch) | |
tree | 05b4108b4a415ae80228b8de222e2cacc3efa326 | |
parent | 33688d95c458ffca6b247189cc6f15277fd6abf0 (diff) |
drm/i915: Reorganize the overclock code
The existing code (which I changed last) was very convoluted. I believe
it was attempting to skip the overclock portion if the previous pcode
write failed. When I last touched the code, I was preserving this
behavior. There is some benefit to doing it that way in that if the
first pcode access fails, the later is likely invalid.
Having a bit more confidence in my understanding of how things work, I
now feel it's better to have clear, readable, code than to try to skip
over this one operation in an unusual case.
Signed-off-by: Ben Widawsky <ben@bwidawsk.net>
Reviewed-by: Chris Wilson <chris@chris-wilson.co.uk>
Signed-off-by: Daniel Vetter <daniel.vetter@ffwll.ch>
-rw-r--r-- | drivers/gpu/drm/i915/intel_pm.c | 20 |
1 files changed, 9 insertions, 11 deletions
diff --git a/drivers/gpu/drm/i915/intel_pm.c b/drivers/gpu/drm/i915/intel_pm.c index 39f3238bf1c3..dd3a1216eab0 100644 --- a/drivers/gpu/drm/i915/intel_pm.c +++ b/drivers/gpu/drm/i915/intel_pm.c | |||
@@ -3326,7 +3326,7 @@ static void gen6_enable_rps(struct drm_device *dev) | |||
3326 | struct intel_ring_buffer *ring; | 3326 | struct intel_ring_buffer *ring; |
3327 | u32 rp_state_cap, hw_max, hw_min; | 3327 | u32 rp_state_cap, hw_max, hw_min; |
3328 | u32 gt_perf_status; | 3328 | u32 gt_perf_status; |
3329 | u32 rc6vids, pcu_mbox, rc6_mask = 0; | 3329 | u32 rc6vids, pcu_mbox = 0, rc6_mask = 0; |
3330 | u32 gtfifodbg; | 3330 | u32 gtfifodbg; |
3331 | int rc6_mode; | 3331 | int rc6_mode; |
3332 | int i, ret; | 3332 | int i, ret; |
@@ -3414,17 +3414,15 @@ static void gen6_enable_rps(struct drm_device *dev) | |||
3414 | I915_WRITE(GEN6_RP_IDLE_HYSTERSIS, 10); | 3414 | I915_WRITE(GEN6_RP_IDLE_HYSTERSIS, 10); |
3415 | 3415 | ||
3416 | ret = sandybridge_pcode_write(dev_priv, GEN6_PCODE_WRITE_MIN_FREQ_TABLE, 0); | 3416 | ret = sandybridge_pcode_write(dev_priv, GEN6_PCODE_WRITE_MIN_FREQ_TABLE, 0); |
3417 | if (!ret) { | 3417 | if (ret) |
3418 | pcu_mbox = 0; | ||
3419 | ret = sandybridge_pcode_read(dev_priv, GEN6_READ_OC_PARAMS, &pcu_mbox); | ||
3420 | if (!ret && (pcu_mbox & (1<<31))) { /* OC supported */ | ||
3421 | DRM_DEBUG_DRIVER("Overclocking supported. Max: %dMHz, Overclock max: %dMHz\n", | ||
3422 | (dev_priv->rps.max_delay & 0xff) * 50, | ||
3423 | (pcu_mbox & 0xff) * 50); | ||
3424 | dev_priv->rps.hw_max = pcu_mbox & 0xff; | ||
3425 | } | ||
3426 | } else { | ||
3427 | DRM_DEBUG_DRIVER("Failed to set the min frequency\n"); | 3418 | DRM_DEBUG_DRIVER("Failed to set the min frequency\n"); |
3419 | |||
3420 | ret = sandybridge_pcode_read(dev_priv, GEN6_READ_OC_PARAMS, &pcu_mbox); | ||
3421 | if (!ret && (pcu_mbox & (1<<31))) { /* OC supported */ | ||
3422 | DRM_DEBUG_DRIVER("Overclocking supported. Max: %dMHz, Overclock max: %dMHz\n", | ||
3423 | (dev_priv->rps.max_delay & 0xff) * 50, | ||
3424 | (pcu_mbox & 0xff) * 50); | ||
3425 | dev_priv->rps.hw_max = pcu_mbox & 0xff; | ||
3428 | } | 3426 | } |
3429 | 3427 | ||
3430 | dev_priv->rps.power = HIGH_POWER; /* force a reset */ | 3428 | dev_priv->rps.power = HIGH_POWER; /* force a reset */ |