OSDN Git Service

drm/i915: Clean up VLV/CHV maxfifo watermark setup
authorVille Syrjälä <ville.syrjala@linux.intel.com>
Mon, 28 Nov 2016 17:37:06 +0000 (19:37 +0200)
committerVille Syrjälä <ville.syrjala@linux.intel.com>
Mon, 5 Dec 2016 14:23:25 +0000 (16:23 +0200)
Let's compute the maxfifo watermarks using max() instead of min().
Can't even recall why I did it the other way originally. Anyways
using max() avoids having to initialize the watermarks to the max
value first.

Signed-off-by: Ville Syrjälä <ville.syrjala@linux.intel.com>
Link: http://patchwork.freedesktop.org/patch/msgid/1480354637-14209-5-git-send-email-ville.syrjala@linux.intel.com
Reviewed-by: Maarten Lankhorst <maarten.lankhorst@linux.intel.com>
drivers/gpu/drm/i915/intel_pm.c

index 8ff1e23..b979e06 100644 (file)
@@ -1100,7 +1100,6 @@ static void vlv_compute_wm(struct intel_crtc *crtc)
        struct drm_i915_private *dev_priv = to_i915(dev);
        struct vlv_wm_state *wm_state = &crtc->wm_state;
        struct intel_plane *plane;
-       int sr_fifo_size = INTEL_INFO(dev_priv)->num_pipes * 512 - 1;
        int level;
 
        memset(wm_state, 0, sizeof(*wm_state));
@@ -1115,13 +1114,6 @@ static void vlv_compute_wm(struct intel_crtc *crtc)
        if (wm_state->num_active_planes != 1)
                wm_state->cxsr = false;
 
-       if (wm_state->cxsr) {
-               for (level = 0; level < wm_state->num_levels; level++) {
-                       wm_state->sr[level].plane = sr_fifo_size;
-                       wm_state->sr[level].cursor = 63;
-               }
-       }
-
        for_each_intel_plane_on_crtc(dev, crtc, plane) {
                struct intel_plane_state *state =
                        to_intel_plane_state(plane->base.state);
@@ -1172,14 +1164,14 @@ static void vlv_compute_wm(struct intel_crtc *crtc)
                case DRM_PLANE_TYPE_PRIMARY:
                        for (level = 0; level < wm_state->num_levels; level++)
                                wm_state->sr[level].plane =
-                                       min(wm_state->sr[level].plane,
+                                       max(wm_state->sr[level].plane,
                                            wm_state->wm[level].primary);
                        break;
                case DRM_PLANE_TYPE_OVERLAY:
                        sprite = vlv_sprite_id(plane->id);
                        for (level = 0; level < wm_state->num_levels; level++)
                                wm_state->sr[level].plane =
-                                       min(wm_state->sr[level].plane,
+                                       max(wm_state->sr[level].plane,
                                            wm_state->wm[level].sprite[sprite]);
                        break;
                }