Commit fe616928 authored by Rodrigo Siqueira's avatar Rodrigo Siqueira Committed by Gerd Hoffmann

drm/atomic-helper: Make atomic_enable/disable crtc callbacks optional

Allow atomic_enable and atomic_disable operations from
drm_crtc_helper_funcs struct optional. With this, the target display
drivers don't need to define a dummy function if they don't need one.

Changes since v2:
* Don't make funcs optional
* Update kerneldoc for atomic_enable/disable
* Replace "if (funcs->atomic_enable)" by "if (funcs->commit)"
* Improve commit message
Signed-off-by: default avatarRodrigo Siqueira <rodrigosiqueiramelo@gmail.com>
Reviewed-by: default avatarDaniel Vetter <daniel.vetter@ffwll.ch>
Link: http://patchwork.freedesktop.org/patch/msgid/20190314184845.gjmvkamobj4dilyp@smtp.gmail.comSigned-off-by: default avatarGerd Hoffmann <kraxel@redhat.com>
parent 36a1da15
...@@ -1034,7 +1034,7 @@ disable_outputs(struct drm_device *dev, struct drm_atomic_state *old_state) ...@@ -1034,7 +1034,7 @@ disable_outputs(struct drm_device *dev, struct drm_atomic_state *old_state)
funcs->atomic_disable(crtc, old_crtc_state); funcs->atomic_disable(crtc, old_crtc_state);
else if (funcs->disable) else if (funcs->disable)
funcs->disable(crtc); funcs->disable(crtc);
else else if (funcs->dpms)
funcs->dpms(crtc, DRM_MODE_DPMS_OFF); funcs->dpms(crtc, DRM_MODE_DPMS_OFF);
if (!(dev->irq_enabled && dev->num_crtcs)) if (!(dev->irq_enabled && dev->num_crtcs))
...@@ -1277,10 +1277,9 @@ void drm_atomic_helper_commit_modeset_enables(struct drm_device *dev, ...@@ -1277,10 +1277,9 @@ void drm_atomic_helper_commit_modeset_enables(struct drm_device *dev,
if (new_crtc_state->enable) { if (new_crtc_state->enable) {
DRM_DEBUG_ATOMIC("enabling [CRTC:%d:%s]\n", DRM_DEBUG_ATOMIC("enabling [CRTC:%d:%s]\n",
crtc->base.id, crtc->name); crtc->base.id, crtc->name);
if (funcs->atomic_enable) if (funcs->atomic_enable)
funcs->atomic_enable(crtc, old_crtc_state); funcs->atomic_enable(crtc, old_crtc_state);
else else if (funcs->commit)
funcs->commit(crtc); funcs->commit(crtc);
} }
} }
......
...@@ -418,6 +418,8 @@ struct drm_crtc_helper_funcs { ...@@ -418,6 +418,8 @@ struct drm_crtc_helper_funcs {
* Drivers can use the @old_crtc_state input parameter if the operations * Drivers can use the @old_crtc_state input parameter if the operations
* needed to enable the CRTC don't depend solely on the new state but * needed to enable the CRTC don't depend solely on the new state but
* also on the transition between the old state and the new state. * also on the transition between the old state and the new state.
*
* This function is optional.
*/ */
void (*atomic_enable)(struct drm_crtc *crtc, void (*atomic_enable)(struct drm_crtc *crtc,
struct drm_crtc_state *old_crtc_state); struct drm_crtc_state *old_crtc_state);
...@@ -441,6 +443,8 @@ struct drm_crtc_helper_funcs { ...@@ -441,6 +443,8 @@ struct drm_crtc_helper_funcs {
* parameter @old_crtc_state which could be used to access the old * parameter @old_crtc_state which could be used to access the old
* state. Atomic drivers should consider to use this one instead * state. Atomic drivers should consider to use this one instead
* of @disable. * of @disable.
*
* This function is optional.
*/ */
void (*atomic_disable)(struct drm_crtc *crtc, void (*atomic_disable)(struct drm_crtc *crtc,
struct drm_crtc_state *old_crtc_state); struct drm_crtc_state *old_crtc_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