Add atomic_enable, a plane helper that enables a plane. It is supposed to be the inverse of atomic_disable. While atomic_update can handle all of a plane's enable, disable and update functionality, many drivers also implement atomic_disable to do disabling separately. Some drivers also try to detect whether the plane gets enabled and can benefit if DRM's atomic helpers already do this. Give them the respective callback. At least in the case of ast, avoiding to enable the primary plane improves performance with some BMCs. Tested on AST2100 hardware. Thomas Zimmermann (6): drm/atomic-helper: Add atomic_enable plane-helper callback drm/ast: Implement struct drm_plane_helper_funcs.atomic_enable drm/mgag200: Remove disable handling from atomic_update drm/mgag200: Implement struct drm_plane_helper_funcs.atomic_enable drm/tidss: Remove return values from dispc_plane_{setup,enable}() drm/tidss: Implement struct drm_plane_helper_funcs.atomic_enable drivers/gpu/drm/ast/ast_mode.c | 28 ++++++++++++++++------- drivers/gpu/drm/drm_atomic_helper.c | 20 ++++++++++++---- drivers/gpu/drm/mgag200/mgag200_drv.h | 3 +++ drivers/gpu/drm/mgag200/mgag200_mode.c | 22 ++++++++++-------- drivers/gpu/drm/tidss/tidss_dispc.c | 12 ++++------ drivers/gpu/drm/tidss/tidss_dispc.h | 8 +++---- drivers/gpu/drm/tidss/tidss_plane.c | 20 ++++++++-------- include/drm/drm_atomic_helper.h | 26 +++++++++++++++++++++ include/drm/drm_modeset_helper_vtables.h | 29 +++++++++++++++++++++++- 9 files changed, 124 insertions(+), 44 deletions(-) base-commit: 1a019dd7a5d25f7c1c9b77931138290e28947e6a -- 2.39.1