summaryrefslogtreecommitdiffstats
path: root/drivers/gpu/drm/i915/intel_pm.c
diff options
context:
space:
mode:
authorVille Syrjälä2015-03-05 20:19:43 +0100
committerDaniel Vetter2015-03-17 22:30:02 +0100
commitabfc00b545ba2c4dee1dcb124be59f34df3ed7d9 (patch)
treeb235093e7f033a20ec8e176e734c416c44a13ff6 /drivers/gpu/drm/i915/intel_pm.c
parentdrm/i915: Kill DRAIN_LATENCY_PRECISION_* defines (diff)
downloadkernel-qcow2-linux-abfc00b545ba2c4dee1dcb124be59f34df3ed7d9.tar.gz
kernel-qcow2-linux-abfc00b545ba2c4dee1dcb124be59f34df3ed7d9.tar.xz
kernel-qcow2-linux-abfc00b545ba2c4dee1dcb124be59f34df3ed7d9.zip
drm/i915: Simplify VLV drain latency computation
The current drain lantency computation relies on hardcoded limits to determine when the to use the low vs. high precision multiplier. Rewrite the code to use a more straightforward approach. Reviewed-by: Jesse Barnes <jbarnes@virtuousgeek.org> Signed-off-by: Ville Syrjälä <ville.syrjala@linux.intel.com> Signed-off-by: Daniel Vetter <daniel.vetter@ffwll.ch>
Diffstat (limited to 'drivers/gpu/drm/i915/intel_pm.c')
-rw-r--r--drivers/gpu/drm/i915/intel_pm.c11
1 files changed, 7 insertions, 4 deletions
diff --git a/drivers/gpu/drm/i915/intel_pm.c b/drivers/gpu/drm/i915/intel_pm.c
index cc3c2d9eb7f4..c198dbad3e82 100644
--- a/drivers/gpu/drm/i915/intel_pm.c
+++ b/drivers/gpu/drm/i915/intel_pm.c
@@ -755,12 +755,15 @@ static bool vlv_compute_drain_latency(struct drm_crtc *crtc,
return false;
entries = DIV_ROUND_UP(clock, 1000) * pixel_size;
- if (IS_CHERRYVIEW(dev))
- *prec_mult = (entries > 32) ? 16 : 8;
- else
- *prec_mult = (entries > 128) ? 64 : 32;
+
+ *prec_mult = IS_CHERRYVIEW(dev) ? 16 : 64;
*drain_latency = (64 * (*prec_mult) * 4) / entries;
+ if (*drain_latency > DRAIN_LATENCY_MASK) {
+ *prec_mult /= 2;
+ *drain_latency = (64 * (*prec_mult) * 4) / entries;
+ }
+
if (*drain_latency > DRAIN_LATENCY_MASK)
*drain_latency = DRAIN_LATENCY_MASK;