Commit 46f788ba authored by Ville Syrjälä's avatar Ville Syrjälä

drm/i915: Extract skl_plane_ctl()

Pull the code to calculate the SKL plane control register value into
a separate function. Allows us to pre-compute it in the future.
Signed-off-by: default avatarVille Syrjälä <ville.syrjala@linux.intel.com>
Link: http://patchwork.freedesktop.org/patch/msgid/20170317211808.14693-2-ville.syrjala@linux.intel.comReviewed-by: default avatarChris Wilson <chris@chris-wilson.co.uk>
parent 618ef005
...@@ -3335,6 +3335,31 @@ u32 skl_plane_ctl_rotation(unsigned int rotation) ...@@ -3335,6 +3335,31 @@ u32 skl_plane_ctl_rotation(unsigned int rotation)
return 0; return 0;
} }
static u32 skl_plane_ctl(const struct intel_crtc_state *crtc_state,
const struct intel_plane_state *plane_state)
{
struct drm_i915_private *dev_priv =
to_i915(plane_state->base.plane->dev);
const struct drm_framebuffer *fb = plane_state->base.fb;
unsigned int rotation = plane_state->base.rotation;
u32 plane_ctl;
plane_ctl = PLANE_CTL_ENABLE;
if (!IS_GEMINILAKE(dev_priv)) {
plane_ctl |=
PLANE_CTL_PIPE_GAMMA_ENABLE |
PLANE_CTL_PIPE_CSC_ENABLE |
PLANE_CTL_PLANE_GAMMA_DISABLE;
}
plane_ctl |= skl_plane_ctl_format(fb->format->format);
plane_ctl |= skl_plane_ctl_tiling(fb->modifier);
plane_ctl |= skl_plane_ctl_rotation(rotation);
return plane_ctl;
}
static void skylake_update_primary_plane(struct drm_plane *plane, static void skylake_update_primary_plane(struct drm_plane *plane,
const struct intel_crtc_state *crtc_state, const struct intel_crtc_state *crtc_state,
const struct intel_plane_state *plane_state) const struct intel_plane_state *plane_state)
...@@ -3360,18 +3385,7 @@ static void skylake_update_primary_plane(struct drm_plane *plane, ...@@ -3360,18 +3385,7 @@ static void skylake_update_primary_plane(struct drm_plane *plane,
int dst_h = drm_rect_height(&plane_state->base.dst); int dst_h = drm_rect_height(&plane_state->base.dst);
unsigned long irqflags; unsigned long irqflags;
plane_ctl = PLANE_CTL_ENABLE; plane_ctl = skl_plane_ctl(crtc_state, plane_state);
if (!IS_GEMINILAKE(dev_priv)) {
plane_ctl |=
PLANE_CTL_PIPE_GAMMA_ENABLE |
PLANE_CTL_PIPE_CSC_ENABLE |
PLANE_CTL_PLANE_GAMMA_DISABLE;
}
plane_ctl |= skl_plane_ctl_format(fb->format->format);
plane_ctl |= skl_plane_ctl_tiling(fb->modifier);
plane_ctl |= skl_plane_ctl_rotation(rotation);
/* Sizes are 0 based */ /* Sizes are 0 based */
src_w--; src_w--;
......
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