Commit 7d83a155 authored by Marek Vasut's avatar Marek Vasut Committed by Daniel Vetter

drm: simple_kms_helper: Add prepare_fb and cleanup_fb hooks

Add .prepare_fb and .cleanup_fb plane hooks into the drm_simple_kms.
These can be used by drivers to call ie. the drm_fb_cma_setup_fence()
helper.
Signed-off-by: default avatarMarek Vasut <marex@denx.de>
Cc: Noralf Trønnes <noralf@tronnes.org>
Cc: Daniel Vetter <daniel@ffwll.ch>
Cc: David Airlie <airlied@linux.ie>
Signed-off-by: default avatarDaniel Vetter <daniel.vetter@ffwll.ch>
Link: http://patchwork.freedesktop.org/patch/msgid/20161002170124.6099-1-marex@denx.de
parent 587680c1
...@@ -125,7 +125,33 @@ static void drm_simple_kms_plane_atomic_update(struct drm_plane *plane, ...@@ -125,7 +125,33 @@ static void drm_simple_kms_plane_atomic_update(struct drm_plane *plane,
pipe->funcs->update(pipe, pstate); pipe->funcs->update(pipe, pstate);
} }
static int drm_simple_kms_plane_prepare_fb(struct drm_plane *plane,
struct drm_plane_state *state)
{
struct drm_simple_display_pipe *pipe;
pipe = container_of(plane, struct drm_simple_display_pipe, plane);
if (!pipe->funcs || !pipe->funcs->prepare_fb)
return 0;
return pipe->funcs->prepare_fb(pipe, state);
}
static void drm_simple_kms_plane_cleanup_fb(struct drm_plane *plane,
struct drm_plane_state *state)
{
struct drm_simple_display_pipe *pipe;
pipe = container_of(plane, struct drm_simple_display_pipe, plane);
if (!pipe->funcs || !pipe->funcs->cleanup_fb)
return;
pipe->funcs->cleanup_fb(pipe, state);
}
static const struct drm_plane_helper_funcs drm_simple_kms_plane_helper_funcs = { static const struct drm_plane_helper_funcs drm_simple_kms_plane_helper_funcs = {
.prepare_fb = drm_simple_kms_plane_prepare_fb,
.cleanup_fb = drm_simple_kms_plane_cleanup_fb,
.atomic_check = drm_simple_kms_plane_atomic_check, .atomic_check = drm_simple_kms_plane_atomic_check,
.atomic_update = drm_simple_kms_plane_atomic_update, .atomic_update = drm_simple_kms_plane_atomic_update,
}; };
......
...@@ -69,6 +69,26 @@ struct drm_simple_display_pipe_funcs { ...@@ -69,6 +69,26 @@ struct drm_simple_display_pipe_funcs {
*/ */
void (*update)(struct drm_simple_display_pipe *pipe, void (*update)(struct drm_simple_display_pipe *pipe,
struct drm_plane_state *plane_state); struct drm_plane_state *plane_state);
/**
* @prepare_fb:
*
* Optional, called by struct &drm_plane_helper_funcs ->prepare_fb .
* Please read the documentation for the ->prepare_fb hook in
* struct &drm_plane_helper_funcs for more details.
*/
int (*prepare_fb)(struct drm_simple_display_pipe *pipe,
struct drm_plane_state *plane_state);
/**
* @cleanup_fb:
*
* Optional, called by struct &drm_plane_helper_funcs ->cleanup_fb .
* Please read the documentation for the ->cleanup_fb hook in
* struct &drm_plane_helper_funcs for more details.
*/
void (*cleanup_fb)(struct drm_simple_display_pipe *pipe,
struct drm_plane_state *plane_state);
}; };
/** /**
......
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