Commit 6b8562c8 authored by Maxime Ripard's avatar Maxime Ripard

drm/sun4i: engine: Create an atomic_begin callback

We have to implement some display engine specific behaviours in
atomic_begin. Let's add a function for that.
Reviewed-by: default avatarChen-Yu Tsai <wens@csie.org>
Signed-off-by: default avatarMaxime Ripard <maxime.ripard@free-electrons.com>
Link: https://patchwork.freedesktop.org/patch/msgid/44110951ae0cc13767fefc7fc1d9e2ec782d0a40.1516613040.git-series.maxime.ripard@free-electrons.com
parent 3004f75f
...@@ -64,6 +64,7 @@ static void sun4i_crtc_atomic_begin(struct drm_crtc *crtc, ...@@ -64,6 +64,7 @@ static void sun4i_crtc_atomic_begin(struct drm_crtc *crtc,
{ {
struct sun4i_crtc *scrtc = drm_crtc_to_sun4i_crtc(crtc); struct sun4i_crtc *scrtc = drm_crtc_to_sun4i_crtc(crtc);
struct drm_device *dev = crtc->dev; struct drm_device *dev = crtc->dev;
struct sunxi_engine *engine = scrtc->engine;
unsigned long flags; unsigned long flags;
if (crtc->state->event) { if (crtc->state->event) {
...@@ -73,7 +74,10 @@ static void sun4i_crtc_atomic_begin(struct drm_crtc *crtc, ...@@ -73,7 +74,10 @@ static void sun4i_crtc_atomic_begin(struct drm_crtc *crtc,
scrtc->event = crtc->state->event; scrtc->event = crtc->state->event;
spin_unlock_irqrestore(&dev->event_lock, flags); spin_unlock_irqrestore(&dev->event_lock, flags);
crtc->state->event = NULL; crtc->state->event = NULL;
} }
if (engine->ops->atomic_begin)
engine->ops->atomic_begin(engine, old_state);
} }
static void sun4i_crtc_atomic_flush(struct drm_crtc *crtc, static void sun4i_crtc_atomic_flush(struct drm_crtc *crtc,
......
...@@ -22,6 +22,19 @@ struct sunxi_engine; ...@@ -22,6 +22,19 @@ struct sunxi_engine;
* implement the proper behaviour. * implement the proper behaviour.
*/ */
struct sunxi_engine_ops { struct sunxi_engine_ops {
/**
* @atomic_begin:
*
* This callback allows to prepare our engine for an atomic
* update. This is mirroring the
* &drm_crtc_helper_funcs.atomic_begin callback, so any
* documentation there applies.
*
* This function is optional.
*/
void (*atomic_begin)(struct sunxi_engine *engine,
struct drm_crtc_state *old_state);
/** /**
* @atomic_check: * @atomic_check:
* *
......
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