]> git.karo-electronics.de Git - karo-tx-linux.git/commitdiff
drm/i915/chv: Freq(opcode) request for CHV.
authorDeepak S <deepak.s@linux.intel.com>
Fri, 23 May 2014 15:30:21 +0000 (21:00 +0530)
committerDaniel Vetter <daniel.vetter@ffwll.ch>
Tue, 27 May 2014 11:43:37 +0000 (13:43 +0200)
On CHV, All the freq request should be even. So, we need to make sure we
request the opcode accordingly.

v2: Avoid vairable for freq request (ville)

Signed-off-by: Deepak S <deepak.s@linux.intel.com>
Reviewed-by: Ben Widawsky <ben@bwidawsk.net>
Signed-off-by: Daniel Vetter <daniel.vetter@ffwll.ch>
drivers/gpu/drm/i915/i915_irq.c

index a628a110346dfc17c68a1c4178dd55ce3976bccb..4ef64234845091545f2fe7ee57c2f63e3a21a011 100644 (file)
@@ -1252,8 +1252,10 @@ static void gen6_pm_rps_work(struct work_struct *work)
        if (pm_iir & GEN6_PM_RP_UP_THRESHOLD) {
                if (adj > 0)
                        adj *= 2;
-               else
-                       adj = 1;
+               else {
+                       /* CHV needs even encode values */
+                       adj = IS_CHERRYVIEW(dev_priv->dev) ? 2 : 1;
+               }
                new_delay = dev_priv->rps.cur_freq + adj;
 
                /*
@@ -1271,8 +1273,10 @@ static void gen6_pm_rps_work(struct work_struct *work)
        } else if (pm_iir & GEN6_PM_RP_DOWN_THRESHOLD) {
                if (adj < 0)
                        adj *= 2;
-               else
-                       adj = -1;
+               else {
+                       /* CHV needs even encode values */
+                       adj = IS_CHERRYVIEW(dev_priv->dev) ? -2 : -1;
+               }
                new_delay = dev_priv->rps.cur_freq + adj;
        } else { /* unknown event */
                new_delay = dev_priv->rps.cur_freq;