summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--drivers/gpu/drm/drm_atomic_helper.c20
-rw-r--r--include/drm/drm_crtc_helper.h2
2 files changed, 22 insertions, 0 deletions
diff --git a/drivers/gpu/drm/drm_atomic_helper.c b/drivers/gpu/drm/drm_atomic_helper.c
index 8da8db6db5f1..9a513abd8a47 100644
--- a/drivers/gpu/drm/drm_atomic_helper.c
+++ b/drivers/gpu/drm/drm_atomic_helper.c
@@ -1558,6 +1558,26 @@ void drm_atomic_helper_commit_planes(struct drm_device *dev,
struct drm_connector_state *old_conn_state;
int i;
+ for_each_connector_in_state(old_state, connector, old_conn_state, i) {
+ const struct drm_connector_helper_funcs *funcs;
+
+ if (!connector->state->crtc)
+ continue;
+
+ if (!connector->state->crtc->state->active)
+ continue;
+
+ funcs = connector->helper_private;
+
+ if (!funcs || !funcs->atomic_begin)
+ continue;
+
+ DRM_DEBUG_ATOMIC("flush beginning [CONNECTOR:%d:%s]\n",
+ connector->base.id, connector->name);
+
+ funcs->atomic_begin(connector, old_conn_state);
+ }
+
for_each_crtc_in_state(old_state, crtc, old_crtc_state, i) {
const struct drm_crtc_helper_funcs *funcs;
diff --git a/include/drm/drm_crtc_helper.h b/include/drm/drm_crtc_helper.h
index c110e07d437f..d8d2bc14ee5b 100644
--- a/include/drm/drm_crtc_helper.h
+++ b/include/drm/drm_crtc_helper.h
@@ -185,6 +185,8 @@ struct drm_connector_helper_funcs {
struct drm_encoder *(*best_encoder)(struct drm_connector *connector);
struct drm_encoder *(*atomic_best_encoder)(struct drm_connector *connector,
struct drm_connector_state *connector_state);
+ void (*atomic_begin)(struct drm_connector *connector,
+ struct drm_connector_state *conn_state);
void (*atomic_flush)(struct drm_connector *connector,
struct drm_connector_state *conn_state);
};