As the renamed drm_atomic_helper_check_wb_connector_state() now accepts
drm_writeback_connector as the first argument (instead of drm_encoder),
move the VKMS writeback atomic_check from drm_encoder_helper_funcs to
drm_connector_helper_funcs. Also drop the vkms_wb_encoder_helper_funcs,
which have become empty now.

Signed-off-by: Dmitry Baryshkov <dmitry.barysh...@linaro.org>
---
 drivers/gpu/drm/vkms/vkms_writeback.c | 26 +++++++++++++++-----------
 1 file changed, 15 insertions(+), 11 deletions(-)

diff --git a/drivers/gpu/drm/vkms/vkms_writeback.c 
b/drivers/gpu/drm/vkms/vkms_writeback.c
index 23c4f7b61cb6..ebb5183794db 100644
--- a/drivers/gpu/drm/vkms/vkms_writeback.c
+++ b/drivers/gpu/drm/vkms/vkms_writeback.c
@@ -30,20 +30,27 @@ static const struct drm_connector_funcs 
vkms_wb_connector_funcs = {
        .atomic_destroy_state = drm_atomic_helper_connector_destroy_state,
 };
 
-static int vkms_wb_encoder_atomic_check(struct drm_encoder *encoder,
-                                       struct drm_crtc_state *crtc_state,
-                                       struct drm_connector_state *conn_state)
+static int vkms_wb_atomic_check(struct drm_connector *connector,
+                               struct drm_atomic_state *state)
 {
-       struct drm_connector *connector = conn_state->connector;
+       struct drm_connector_state *conn_state =
+               drm_atomic_get_new_connector_state(state, connector);
        struct drm_writeback_connector *wb_conn =
                drm_connector_to_writeback(connector);
+       struct drm_crtc_state *crtc_state;
        struct drm_framebuffer *fb;
-       const struct drm_display_mode *mode = &crtc_state->mode;
+       const struct drm_display_mode *mode;
        int ret;
 
        if (!conn_state->writeback_job || !conn_state->writeback_job->fb)
                return 0;
 
+       if (!conn_state->crtc)
+               return 0;
+
+       crtc_state = drm_atomic_get_new_crtc_state(state, conn_state->crtc);
+       mode = &crtc_state->mode;
+
        fb = conn_state->writeback_job->fb;
        if (fb->width != mode->hdisplay || fb->height != mode->vdisplay) {
                DRM_DEBUG_KMS("Invalid framebuffer size %ux%u\n",
@@ -51,17 +58,13 @@ static int vkms_wb_encoder_atomic_check(struct drm_encoder 
*encoder,
                return -EINVAL;
        }
 
-       ret = drm_atomic_helper_check_wb_connector_state(wb_conn, 
conn_state->state);
+       ret = drm_atomic_helper_check_wb_connector_state(wb_conn, state);
        if (ret < 0)
                return ret;
 
        return 0;
 }
 
-static const struct drm_encoder_helper_funcs vkms_wb_encoder_helper_funcs = {
-       .atomic_check = vkms_wb_encoder_atomic_check,
-};
-
 static int vkms_wb_connector_get_modes(struct drm_connector *connector)
 {
        struct drm_device *dev = connector->dev;
@@ -164,6 +167,7 @@ static const struct drm_connector_helper_funcs 
vkms_wb_conn_helper_funcs = {
        .prepare_writeback_job = vkms_wb_prepare_job,
        .cleanup_writeback_job = vkms_wb_cleanup_job,
        .atomic_commit = vkms_wb_atomic_commit,
+       .atomic_check = vkms_wb_atomic_check,
 };
 
 int vkms_enable_writeback_connector(struct vkms_device *vkmsdev)
@@ -174,7 +178,7 @@ int vkms_enable_writeback_connector(struct vkms_device 
*vkmsdev)
 
        return drm_writeback_connector_init(&vkmsdev->drm, wb,
                                            &vkms_wb_connector_funcs,
-                                           &vkms_wb_encoder_helper_funcs,
+                                           NULL,
                                            vkms_wb_formats,
                                            ARRAY_SIZE(vkms_wb_formats),
                                            1);
-- 
2.39.2

Reply via email to