Commit 50f4caef authored by Ville Syrjälä's avatar Ville Syrjälä

drm/i915: Write all DDL registers in one go

We'll want to decouple the vlv/chv wm register reprogramming from any
single pipe. So let's just write all the DDL registers in one go. We
already write all the wm registers anyway since the bits are sprinkled
all over the place and so writing them for just a single pipe would have
been too messy anyway.
Signed-off-by: default avatarVille Syrjälä <ville.syrjala@linux.intel.com>
Link: http://patchwork.freedesktop.org/patch/msgid/1480354637-14209-14-git-send-email-ville.syrjala@linux.intel.comReviewed-by: default avatarMaarten Lankhorst <maarten.lankhorst@linux.intel.com>
parent 6fe6a7ff
...@@ -865,17 +865,18 @@ static bool g4x_compute_srwm(struct drm_i915_private *dev_priv, ...@@ -865,17 +865,18 @@ static bool g4x_compute_srwm(struct drm_i915_private *dev_priv,
#define FW_WM_VLV(value, plane) \ #define FW_WM_VLV(value, plane) \
(((value) << DSPFW_ ## plane ## _SHIFT) & DSPFW_ ## plane ## _MASK_VLV) (((value) << DSPFW_ ## plane ## _SHIFT) & DSPFW_ ## plane ## _MASK_VLV)
static void vlv_write_wm_values(struct intel_crtc *crtc, static void vlv_write_wm_values(struct drm_i915_private *dev_priv,
const struct vlv_wm_values *wm) const struct vlv_wm_values *wm)
{ {
struct drm_i915_private *dev_priv = to_i915(crtc->base.dev); enum pipe pipe;
enum pipe pipe = crtc->pipe;
I915_WRITE(VLV_DDL(pipe), for_each_pipe(dev_priv, pipe) {
(wm->ddl[pipe].plane[PLANE_CURSOR] << DDL_CURSOR_SHIFT) | I915_WRITE(VLV_DDL(pipe),
(wm->ddl[pipe].plane[PLANE_SPRITE1] << DDL_SPRITE_SHIFT(1)) | (wm->ddl[pipe].plane[PLANE_CURSOR] << DDL_CURSOR_SHIFT) |
(wm->ddl[pipe].plane[PLANE_SPRITE0] << DDL_SPRITE_SHIFT(0)) | (wm->ddl[pipe].plane[PLANE_SPRITE1] << DDL_SPRITE_SHIFT(1)) |
(wm->ddl[pipe].plane[PLANE_PRIMARY] << DDL_PLANE_SHIFT)); (wm->ddl[pipe].plane[PLANE_SPRITE0] << DDL_SPRITE_SHIFT(0)) |
(wm->ddl[pipe].plane[PLANE_PRIMARY] << DDL_PLANE_SHIFT));
}
/* /*
* Zero the (unused) WM1 watermarks, and also clear all the * Zero the (unused) WM1 watermarks, and also clear all the
...@@ -1355,7 +1356,7 @@ static void vlv_update_wm(struct intel_crtc *crtc) ...@@ -1355,7 +1356,7 @@ static void vlv_update_wm(struct intel_crtc *crtc)
/* FIXME should be part of crtc atomic commit */ /* FIXME should be part of crtc atomic commit */
vlv_pipe_set_fifo_size(crtc); vlv_pipe_set_fifo_size(crtc);
vlv_write_wm_values(crtc, &wm); vlv_write_wm_values(dev_priv, &wm);
DRM_DEBUG_KMS("Setting FIFO watermarks - %c: plane=%d, cursor=%d, " DRM_DEBUG_KMS("Setting FIFO watermarks - %c: plane=%d, cursor=%d, "
"sprite0=%d, sprite1=%d, SR: plane=%d, cursor=%d level=%d cxsr=%d\n", "sprite0=%d, sprite1=%d, SR: plane=%d, cursor=%d level=%d cxsr=%d\n",
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment