The vmwgfx connector reset implementation creates a custom state
subclass, but only initializes a pristine state without resetting any
hardware. This is equivalent to what atomic_create_state expects.
Convert to it.

Signed-off-by: Maxime Ripard <[email protected]>
---
Cc: Broadcom internal kernel review list <[email protected]>
Cc: Zack Rusin <[email protected]>
---
 drivers/gpu/drm/vmwgfx/vmwgfx_kms.c  | 23 ++++++++---------------
 drivers/gpu/drm/vmwgfx/vmwgfx_kms.h  |  3 ++-
 drivers/gpu/drm/vmwgfx/vmwgfx_ldu.c  |  2 +-
 drivers/gpu/drm/vmwgfx/vmwgfx_scrn.c |  2 +-
 drivers/gpu/drm/vmwgfx/vmwgfx_stdu.c |  2 +-
 5 files changed, 13 insertions(+), 19 deletions(-)

diff --git a/drivers/gpu/drm/vmwgfx/vmwgfx_kms.c 
b/drivers/gpu/drm/vmwgfx/vmwgfx_kms.c
index 9031dccad31d..792758d92f3c 100644
--- a/drivers/gpu/drm/vmwgfx/vmwgfx_kms.c
+++ b/drivers/gpu/drm/vmwgfx/vmwgfx_kms.c
@@ -351,36 +351,29 @@ vmw_du_connector_duplicate_state(struct drm_connector 
*connector)
        return state;
 }
 
 
 /**
- * vmw_du_connector_reset - creates a blank vmw connector state
+ * vmw_du_connector_create_state - creates a blank vmw connector state
  * @connector: DRM connector
  *
- * Resets the atomic state for @connector by freeing the state pointer (which
- * might be NULL, e.g. at driver load time) and allocating a new empty state
- * object.
+ * Allocates a new empty state object for @connector.
  */
-void vmw_du_connector_reset(struct drm_connector *connector)
+struct drm_connector_state *
+vmw_du_connector_create_state(struct drm_connector *connector)
 {
        struct vmw_connector_state *vcs;
 
-
-       if (connector->state) {
-               __drm_atomic_helper_connector_destroy_state(connector->state);
-
-               kfree(vmw_connector_state_to_vcs(connector->state));
-       }
-
        vcs = kzalloc_obj(*vcs);
-
        if (!vcs) {
                DRM_ERROR("Cannot allocate vmw_connector_state\n");
-               return;
+               return ERR_PTR(-ENOMEM);
        }
 
-       __drm_atomic_helper_connector_reset(connector, &vcs->base);
+       __drm_atomic_helper_connector_state_init(&vcs->base, connector);
+
+       return &vcs->base;
 }
 
 
 /**
  * vmw_du_connector_destroy_state - destroy connector state
diff --git a/drivers/gpu/drm/vmwgfx/vmwgfx_kms.h 
b/drivers/gpu/drm/vmwgfx/vmwgfx_kms.h
index 5085d8bccf0a..283550363fac 100644
--- a/drivers/gpu/drm/vmwgfx/vmwgfx_kms.h
+++ b/drivers/gpu/drm/vmwgfx/vmwgfx_kms.h
@@ -423,11 +423,12 @@ void vmw_du_crtc_atomic_begin(struct drm_crtc *crtc,
                              struct drm_atomic_commit *state);
 struct drm_crtc_state *vmw_du_crtc_create_state(struct drm_crtc *crtc);
 struct drm_crtc_state *vmw_du_crtc_duplicate_state(struct drm_crtc *crtc);
 void vmw_du_crtc_destroy_state(struct drm_crtc *crtc,
                                struct drm_crtc_state *state);
-void vmw_du_connector_reset(struct drm_connector *connector);
+struct drm_connector_state *
+vmw_du_connector_create_state(struct drm_connector *connector);
 struct drm_connector_state *
 vmw_du_connector_duplicate_state(struct drm_connector *connector);
 
 void vmw_du_connector_destroy_state(struct drm_connector *connector,
                                    struct drm_connector_state *state);
diff --git a/drivers/gpu/drm/vmwgfx/vmwgfx_ldu.c 
b/drivers/gpu/drm/vmwgfx/vmwgfx_ldu.c
index b147f5db9df5..0dea09cc29a7 100644
--- a/drivers/gpu/drm/vmwgfx/vmwgfx_ldu.c
+++ b/drivers/gpu/drm/vmwgfx/vmwgfx_ldu.c
@@ -285,11 +285,11 @@ static void vmw_ldu_connector_destroy(struct 
drm_connector *connector)
 static const struct drm_connector_funcs vmw_legacy_connector_funcs = {
        .dpms = vmw_du_connector_dpms,
        .detect = vmw_du_connector_detect,
        .fill_modes = drm_helper_probe_single_connector_modes,
        .destroy = vmw_ldu_connector_destroy,
-       .reset = vmw_du_connector_reset,
+       .atomic_create_state = vmw_du_connector_create_state,
        .atomic_duplicate_state = vmw_du_connector_duplicate_state,
        .atomic_destroy_state = vmw_du_connector_destroy_state,
 };
 
 static const struct
diff --git a/drivers/gpu/drm/vmwgfx/vmwgfx_scrn.c 
b/drivers/gpu/drm/vmwgfx/vmwgfx_scrn.c
index 89714d5c235b..39d58fc392bf 100644
--- a/drivers/gpu/drm/vmwgfx/vmwgfx_scrn.c
+++ b/drivers/gpu/drm/vmwgfx/vmwgfx_scrn.c
@@ -340,11 +340,11 @@ static void vmw_sou_connector_destroy(struct 
drm_connector *connector)
 static const struct drm_connector_funcs vmw_sou_connector_funcs = {
        .dpms = vmw_du_connector_dpms,
        .detect = vmw_du_connector_detect,
        .fill_modes = drm_helper_probe_single_connector_modes,
        .destroy = vmw_sou_connector_destroy,
-       .reset = vmw_du_connector_reset,
+       .atomic_create_state = vmw_du_connector_create_state,
        .atomic_duplicate_state = vmw_du_connector_duplicate_state,
        .atomic_destroy_state = vmw_du_connector_destroy_state,
 };
 
 
diff --git a/drivers/gpu/drm/vmwgfx/vmwgfx_stdu.c 
b/drivers/gpu/drm/vmwgfx/vmwgfx_stdu.c
index cbf55084110a..b505f8ba3e83 100644
--- a/drivers/gpu/drm/vmwgfx/vmwgfx_stdu.c
+++ b/drivers/gpu/drm/vmwgfx/vmwgfx_stdu.c
@@ -906,11 +906,11 @@ static int vmw_stdu_connector_atomic_check(struct 
drm_connector *conn,
 static const struct drm_connector_funcs vmw_stdu_connector_funcs = {
        .dpms = vmw_du_connector_dpms,
        .detect = vmw_du_connector_detect,
        .fill_modes = drm_helper_probe_single_connector_modes,
        .destroy = vmw_stdu_connector_destroy,
-       .reset = vmw_du_connector_reset,
+       .atomic_create_state = vmw_du_connector_create_state,
        .atomic_duplicate_state = vmw_du_connector_duplicate_state,
        .atomic_destroy_state = vmw_du_connector_destroy_state,
 };
 
 

-- 
2.55.0

Reply via email to