Commit 6dcf0de7 authored by Daniel Vetter's avatar Daniel Vetter

drm/simple-helpers: Always add planes to the state update

Our update function is hooked to the single plane, which might not get
called for crtc-only updates. Which is surprising, so fix this by
always adding the plane.

While at it document how&when the event should be sent out better in
the kerneldoc.

Cc: Noralf Trønnes <noralf@tronnes.org>
Cc: andrea.merello@gmail.com
Tested-and-Reported-by: andrea.merello@gmail.com
Signed-off-by: default avatarDaniel Vetter <daniel.vetter@intel.com>
Reviewed-by: default avatarNoralf Trønnes <noralf@tronnes.org>
Signed-off-by: default avatarDaniel Vetter <daniel.vetter@ffwll.ch>
Link: http://patchwork.freedesktop.org/patch/msgid/1471933540-31131-1-git-send-email-daniel.vetter@ffwll.ch
parent a8c79818
...@@ -34,6 +34,12 @@ static const struct drm_encoder_funcs drm_simple_kms_encoder_funcs = { ...@@ -34,6 +34,12 @@ static const struct drm_encoder_funcs drm_simple_kms_encoder_funcs = {
.destroy = drm_encoder_cleanup, .destroy = drm_encoder_cleanup,
}; };
static int drm_simple_kms_crtc_check(struct drm_crtc *crtc,
struct drm_crtc_state *state)
{
return drm_atomic_add_affected_planes(state->state, crtc);
}
static void drm_simple_kms_crtc_enable(struct drm_crtc *crtc) static void drm_simple_kms_crtc_enable(struct drm_crtc *crtc)
{ {
struct drm_simple_display_pipe *pipe; struct drm_simple_display_pipe *pipe;
...@@ -57,6 +63,7 @@ static void drm_simple_kms_crtc_disable(struct drm_crtc *crtc) ...@@ -57,6 +63,7 @@ static void drm_simple_kms_crtc_disable(struct drm_crtc *crtc)
} }
static const struct drm_crtc_helper_funcs drm_simple_kms_crtc_helper_funcs = { static const struct drm_crtc_helper_funcs drm_simple_kms_crtc_helper_funcs = {
.atomic_check = drm_simple_kms_crtc_check,
.disable = drm_simple_kms_crtc_disable, .disable = drm_simple_kms_crtc_disable,
.enable = drm_simple_kms_crtc_enable, .enable = drm_simple_kms_crtc_enable,
}; };
......
...@@ -60,6 +60,12 @@ struct drm_simple_display_pipe_funcs { ...@@ -60,6 +60,12 @@ struct drm_simple_display_pipe_funcs {
* *
* This function is called when the underlying plane state is updated. * This function is called when the underlying plane state is updated.
* This hook is optional. * This hook is optional.
*
* This is the function drivers should submit the
* &drm_pending_vblank_event from. Using either
* drm_crtc_arm_vblank_event(), when the driver supports vblank
* interrupt handling, or drm_crtc_send_vblank_event() directly in case
* the hardware lacks vblank support entirely.
*/ */
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);
......
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