From 88ea93aeb07c090c867d65f0118803f34fbfdce2 Mon Sep 17 00:00:00 2001 From: Algea Cao Date: Thu, 24 Nov 2022 14:56:15 +0800 Subject: [PATCH] drm/rockchip: Introduce connector commit In order to achieve seamless HDR switching, avmute must be unmuted after VOP atomic flush. So we introduce connector commit. Signed-off-by: Algea Cao Change-Id: Ibf11da67c4388f50d8fa34aa5b4902a45ef89f6f --- drivers/gpu/drm/rockchip/rockchip_drm_fb.c | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) diff --git a/drivers/gpu/drm/rockchip/rockchip_drm_fb.c b/drivers/gpu/drm/rockchip/rockchip_drm_fb.c index e442befd850c..55fdcba0f850 100644 --- a/drivers/gpu/drm/rockchip/rockchip_drm_fb.c +++ b/drivers/gpu/drm/rockchip/rockchip_drm_fb.c @@ -172,6 +172,24 @@ static int rockchip_drm_bandwidth_atomic_check(struct drm_device *dev, return 0; } +static void drm_atomic_helper_connector_commit(struct drm_device *dev, + struct drm_atomic_state *old_state) +{ + struct drm_connector *connector; + struct drm_connector_state *new_conn_state; + int i; + + for_each_new_connector_in_state(old_state, connector, new_conn_state, i) { + const struct drm_connector_helper_funcs *funcs; + + funcs = connector->helper_private; + if (!funcs->atomic_commit) + continue; + + funcs->atomic_commit(connector, new_conn_state); + } +} + /** * rockchip_drm_atomic_helper_commit_tail_rpm - commit atomic update to hardware * @old_state: new modeset state to be committed @@ -202,6 +220,8 @@ static void rockchip_drm_atomic_helper_commit_tail_rpm(struct drm_atomic_state * drm_atomic_helper_fake_vblank(old_state); + drm_atomic_helper_connector_commit(dev, old_state); + drm_atomic_helper_commit_hw_done(old_state); drm_atomic_helper_wait_for_vblanks(dev, old_state);