Commit 2e9a7121 authored by Philipp Zabel's avatar Philipp Zabel

drm/imx: ipuv3-plane: update overlay plane position also without modeset

Previously, the overlay plane position would only be updated when the
plane was first enabled or during a modeset. We can instruct the DP to
move the plane also when just updating the EBA.
Signed-off-by: default avatarPhilipp Zabel <p.zabel@pengutronix.de>
parent 03ee3da8
...@@ -366,10 +366,14 @@ static void ipu_plane_atomic_update(struct drm_plane *plane, ...@@ -366,10 +366,14 @@ static void ipu_plane_atomic_update(struct drm_plane *plane,
struct drm_plane_state *state = plane->state; struct drm_plane_state *state = plane->state;
struct drm_crtc_state *crtc_state = state->crtc->state; struct drm_crtc_state *crtc_state = state->crtc->state;
struct drm_framebuffer *fb = state->fb; struct drm_framebuffer *fb = state->fb;
struct drm_rect *dst = &state->dst;
unsigned long eba, ubo, vbo; unsigned long eba, ubo, vbo;
enum ipu_color_space ics; enum ipu_color_space ics;
int active; int active;
if (ipu_plane->dp_flow == IPU_DP_FLOW_SYNC_FG)
ipu_dp_set_window_pos(ipu_plane->dp, dst->x1, dst->y1);
eba = drm_plane_state_to_eba(state); eba = drm_plane_state_to_eba(state);
if (old_state->fb && !drm_atomic_crtc_needs_modeset(crtc_state)) { if (old_state->fb && !drm_atomic_crtc_needs_modeset(crtc_state)) {
...@@ -390,8 +394,6 @@ static void ipu_plane_atomic_update(struct drm_plane *plane, ...@@ -390,8 +394,6 @@ static void ipu_plane_atomic_update(struct drm_plane *plane,
ics = ipu_drm_fourcc_to_colorspace(state->fb->format->format); ics = ipu_drm_fourcc_to_colorspace(state->fb->format->format);
ipu_dp_setup_channel(ipu_plane->dp, ics, ipu_dp_setup_channel(ipu_plane->dp, ics,
IPUV3_COLORSPACE_UNKNOWN); IPUV3_COLORSPACE_UNKNOWN);
ipu_dp_set_window_pos(ipu_plane->dp,
state->dst.x1, state->dst.y1);
/* Enable local alpha on partial plane */ /* Enable local alpha on partial plane */
switch (state->fb->format->format) { switch (state->fb->format->format) {
case DRM_FORMAT_ARGB1555: case DRM_FORMAT_ARGB1555:
...@@ -411,7 +413,7 @@ static void ipu_plane_atomic_update(struct drm_plane *plane, ...@@ -411,7 +413,7 @@ static void ipu_plane_atomic_update(struct drm_plane *plane,
} }
} }
ipu_dmfc_config_wait4eot(ipu_plane->dmfc, drm_rect_width(&state->dst)); ipu_dmfc_config_wait4eot(ipu_plane->dmfc, drm_rect_width(dst));
ipu_cpmem_zero(ipu_plane->ipu_ch); ipu_cpmem_zero(ipu_plane->ipu_ch);
ipu_cpmem_set_resolution(ipu_plane->ipu_ch, ipu_cpmem_set_resolution(ipu_plane->ipu_ch,
......
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