The amdgpu_dm 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: "Christian König" <[email protected]>
Cc: Alex Deucher <[email protected]>
Cc: Harry Wentland <[email protected]>
Cc: Leo Li <[email protected]>
Cc: Rodrigo Siqueira <[email protected]>
Cc: [email protected]
---
 .../amd/display/amdgpu_dm/amdgpu_dm_connector.c    | 32 ++++----
 .../amd/display/amdgpu_dm/amdgpu_dm_connector.h    |  3 +-
 .../amd/display/amdgpu_dm/amdgpu_dm_mst_types.c    |  4 +-
 .../gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_wb.c   | 14 +++-
 .../amdgpu_dm/tests/amdgpu_dm_connector_test.c     | 90 ++++++++++++++--------
 5 files changed, 91 insertions(+), 52 deletions(-)

diff --git a/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_connector.c 
b/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_connector.c
index 3a4e98b08ac1..2c22f00f521c 100644
--- a/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_connector.c
+++ b/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_connector.c
@@ -1939,26 +1939,20 @@ STATIC_IFN_KUNIT void 
amdgpu_dm_connector_destroy(struct drm_connector *connecto
 
        kfree(connector);
 }
 EXPORT_IF_KUNIT(amdgpu_dm_connector_destroy);
 
-void amdgpu_dm_connector_funcs_reset(struct drm_connector *connector)
+struct drm_connector_state *
+amdgpu_dm_connector_atomic_create_state(struct drm_connector *connector)
 {
-       struct dm_connector_state *old_state =
-               to_dm_connector_state(connector->state);
        struct dm_connector_state *state;
 
        state = kzalloc_obj(*state);
        if (!state)
-               return;
+               return ERR_PTR(-ENOMEM);
 
-       if (connector->state)
-               __drm_atomic_helper_connector_destroy_state(connector->state);
-
-       kfree(old_state);
-
-       __drm_atomic_helper_connector_reset(connector, &state->base);
+       __drm_atomic_helper_connector_state_init(&state->base, connector);
 
        state->scaling = RMX_OFF;
        state->underscan_enable = false;
        state->underscan_hborder = 0;
        state->underscan_vborder = 0;
@@ -1970,12 +1964,14 @@ void amdgpu_dm_connector_funcs_reset(struct 
drm_connector *connector)
                if (amdgpu_dm_abm_level <= 0)
                        state->abm_level = ABM_LEVEL_IMMEDIATE_DISABLE;
                else
                        state->abm_level = amdgpu_dm_abm_level;
        }
+
+       return &state->base;
 }
-EXPORT_IF_KUNIT(amdgpu_dm_connector_funcs_reset);
+EXPORT_IF_KUNIT(amdgpu_dm_connector_atomic_create_state);
 
 struct drm_connector_state *
 amdgpu_dm_connector_atomic_duplicate_state(struct drm_connector *connector)
 {
        struct dm_connector_state *state =
@@ -2070,11 +2066,11 @@ STATIC_IFN_KUNIT void 
amdgpu_dm_connector_funcs_force(struct drm_connector *conn
        }
 }
 EXPORT_IF_KUNIT(amdgpu_dm_connector_funcs_force);
 
 static const struct drm_connector_funcs amdgpu_dm_connector_funcs = {
-       .reset = amdgpu_dm_connector_funcs_reset,
+       .atomic_create_state = amdgpu_dm_connector_atomic_create_state,
        .detect = amdgpu_dm_connector_detect,
        .fill_modes = drm_helper_probe_single_connector_modes,
        .destroy = amdgpu_dm_connector_destroy,
        .atomic_duplicate_state = amdgpu_dm_connector_atomic_duplicate_state,
        .atomic_destroy_state = drm_atomic_helper_connector_destroy_state,
@@ -3197,12 +3193,20 @@ void amdgpu_dm_connector_init_helper(struct 
amdgpu_display_manager *dm,
 
        /*
         * Some of the properties below require access to state, like bpc.
         * Allocate some default initial connector state with our reset helper.
         */
-       if (aconnector->base.funcs->reset)
-               aconnector->base.funcs->reset(&aconnector->base);
+       if (!aconnector->base.state &&
+           aconnector->base.funcs->atomic_create_state) {
+               struct drm_connector_state *conn_state;
+
+               conn_state = 
aconnector->base.funcs->atomic_create_state(&aconnector->base);
+               if (IS_ERR(conn_state))
+                       return;
+
+               aconnector->base.state = conn_state;
+       }
 
        aconnector->connector_id = link_index;
        aconnector->bl_idx = -1;
        aconnector->dc_link = link;
        aconnector->base.interlace_allowed = false;
diff --git a/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_connector.h 
b/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_connector.h
index 79698deacf61..4a73fc607f38 100644
--- a/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_connector.h
+++ b/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_connector.h
@@ -48,11 +48,12 @@ struct drm_crtc;
 struct drm_device;
 struct drm_display_mode;
 struct drm_edid;
 struct drm_property;
 
-void amdgpu_dm_connector_funcs_reset(struct drm_connector *connector);
+struct drm_connector_state *
+amdgpu_dm_connector_atomic_create_state(struct drm_connector *connector);
 
 struct drm_connector_state *
 amdgpu_dm_connector_atomic_duplicate_state(struct drm_connector *connector);
 
 int amdgpu_dm_connector_atomic_set_property(struct drm_connector *connector,
diff --git a/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_mst_types.c 
b/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_mst_types.c
index a5b15bef8aa0..cb189c098ec3 100644
--- a/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_mst_types.c
+++ b/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_mst_types.c
@@ -256,11 +256,11 @@ amdgpu_dm_mst_connector_early_unregister(struct 
drm_connector *connector)
 EXPORT_IF_KUNIT(amdgpu_dm_mst_connector_early_unregister);
 
 static const struct drm_connector_funcs dm_dp_mst_connector_funcs = {
        .fill_modes = drm_helper_probe_single_connector_modes,
        .destroy = dm_dp_mst_connector_destroy,
-       .reset = amdgpu_dm_connector_funcs_reset,
+       .atomic_create_state = amdgpu_dm_connector_atomic_create_state,
        .atomic_duplicate_state = amdgpu_dm_connector_atomic_duplicate_state,
        .atomic_destroy_state = drm_atomic_helper_connector_destroy_state,
        .atomic_set_property = amdgpu_dm_connector_atomic_set_property,
        .atomic_get_property = amdgpu_dm_connector_atomic_get_property,
        .late_register = amdgpu_dm_mst_connector_late_register,
@@ -736,11 +736,11 @@ dm_dp_add_mst_connector(struct drm_dp_mst_topology_mgr 
*mgr,
 
        /*
         * Initialize connector state before adding the connectror to drm and
         * framebuffer lists
         */
-       amdgpu_dm_connector_funcs_reset(connector);
+       connector->state = amdgpu_dm_connector_atomic_create_state(connector);
 
        drm_dp_mst_get_port_malloc(port);
 
        return connector;
 }
diff --git a/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_wb.c 
b/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_wb.c
index 6f91a992d43f..8181fcac299d 100644
--- a/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_wb.c
+++ b/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_wb.c
@@ -223,11 +223,11 @@ static const struct drm_encoder_helper_funcs 
amdgpu_dm_wb_encoder_helper_funcs =
 };
 
 static const struct drm_connector_funcs amdgpu_dm_wb_connector_funcs = {
        .fill_modes = drm_helper_probe_single_connector_modes,
        .destroy = drm_connector_cleanup,
-       .reset = amdgpu_dm_connector_funcs_reset,
+       .atomic_create_state = amdgpu_dm_connector_atomic_create_state,
        .atomic_duplicate_state = amdgpu_dm_connector_atomic_duplicate_state,
        .atomic_destroy_state = drm_atomic_helper_connector_destroy_state,
 };
 
 static const struct drm_connector_helper_funcs amdgpu_dm_wb_conn_helper_funcs 
= {
@@ -259,11 +259,19 @@ int amdgpu_dm_wb_connector_init(struct 
amdgpu_display_manager *dm,
                return res;
        /*
         * Some of the properties below require access to state, like bpc.
         * Allocate some default initial connector state with our reset helper.
         */
-       if (wbcon->base.base.funcs->reset)
-               wbcon->base.base.funcs->reset(&wbcon->base.base);
+       if (!wbcon->base.base.state &&
+           wbcon->base.base.funcs->atomic_create_state) {
+               struct drm_connector_state *conn_state;
+
+               conn_state = 
amdgpu_dm_connector_atomic_create_state(&wbcon->base.base);
+               if (IS_ERR(conn_state))
+                       return PTR_ERR(conn_state);
+
+               wbcon->base.base.state = conn_state;
+       }
 
        return 0;
 }
 EXPORT_IF_KUNIT(amdgpu_dm_wb_connector_init);
diff --git 
a/drivers/gpu/drm/amd/display/amdgpu_dm/tests/amdgpu_dm_connector_test.c 
b/drivers/gpu/drm/amd/display/amdgpu_dm/tests/amdgpu_dm_connector_test.c
index 8117aaf41f22..ebf8155326cb 100644
--- a/drivers/gpu/drm/amd/display/amdgpu_dm/tests/amdgpu_dm_connector_test.c
+++ b/drivers/gpu/drm/amd/display/amdgpu_dm/tests/amdgpu_dm_connector_test.c
@@ -1466,23 +1466,23 @@ static void 
dm_test_decide_crtc_timing_no_crtc_clock(struct kunit *test)
 
        KUNIT_EXPECT_EQ(test, drm_mode.crtc_clock, 0);
        KUNIT_EXPECT_EQ(test, drm_mode.crtc_hdisplay, 0);
 }
 
-/* Tests for amdgpu_dm_connector_funcs_reset() */
+/* Tests for amdgpu_dm_connector_atomic_create_state() */
 
 static const struct drm_connector_funcs dm_test_connector_funcs = {
-       .reset = amdgpu_dm_connector_funcs_reset,
+       .atomic_create_state = amdgpu_dm_connector_atomic_create_state,
        .atomic_duplicate_state = amdgpu_dm_connector_atomic_duplicate_state,
        .atomic_destroy_state = drm_atomic_helper_connector_destroy_state,
 };
 
 /**
- * dm_test_funcs_reset_sets_defaults - Test funcs_reset sets defaults
+ * dm_test_atomic_create_sets_defaults - Test funcs_reset sets defaults
  * @test: The KUnit test context
  */
-static void dm_test_funcs_reset_sets_defaults(struct kunit *test)
+static void dm_test_atomic_create_sets_defaults(struct kunit *test)
 {
        struct device *dev;
        struct drm_device *drm;
        struct drm_connector *connector;
        struct dm_connector_state *dm_state;
@@ -1499,13 +1499,13 @@ static void dm_test_funcs_reset_sets_defaults(struct 
kunit *test)
        KUNIT_ASSERT_NOT_NULL(test, connector);
 
        drmm_connector_init(drm, connector, &dm_test_connector_funcs,
                            DRM_MODE_CONNECTOR_DisplayPort, NULL);
 
-       amdgpu_dm_connector_funcs_reset(connector);
+       connector->state = amdgpu_dm_connector_atomic_create_state(connector);
+       KUNIT_ASSERT_NOT_ERR_OR_NULL(test, connector->state);
 
-       KUNIT_ASSERT_NOT_NULL(test, connector->state);
        dm_state = to_dm_connector_state(connector->state);
        KUNIT_EXPECT_EQ(test, (int)dm_state->scaling, (int)RMX_OFF);
        KUNIT_EXPECT_FALSE(test, dm_state->underscan_enable);
        KUNIT_EXPECT_EQ(test, (int)dm_state->underscan_hborder, 0);
        KUNIT_EXPECT_EQ(test, (int)dm_state->underscan_vborder, 0);
@@ -1513,14 +1513,14 @@ static void dm_test_funcs_reset_sets_defaults(struct 
kunit *test)
        KUNIT_EXPECT_EQ(test, dm_state->vcpi_slots, 0);
        KUNIT_EXPECT_EQ(test, (int)dm_state->pbn, 0);
 }
 
 /**
- * dm_test_funcs_reset_edp_abm_level - Test funcs_reset eDP sets ABM
+ * dm_test_atomic_create_edp_abm_level - Test funcs_reset eDP sets ABM
  * @test: The KUnit test context
  */
-static void dm_test_funcs_reset_edp_abm_level(struct kunit *test)
+static void dm_test_atomic_create_edp_abm_level(struct kunit *test)
 {
        struct device *dev;
        struct drm_device *drm;
        struct drm_connector *connector;
        struct dm_connector_state *dm_state;
@@ -1540,25 +1540,26 @@ static void dm_test_funcs_reset_edp_abm_level(struct 
kunit *test)
        drmm_connector_init(drm, connector, &dm_test_connector_funcs,
                            DRM_MODE_CONNECTOR_eDP, NULL);
 
        /* Test with abm_level > 0 */
        amdgpu_dm_set_abm_level_param(3);
-       amdgpu_dm_connector_funcs_reset(connector);
 
-       KUNIT_ASSERT_NOT_NULL(test, connector->state);
+       connector->state = amdgpu_dm_connector_atomic_create_state(connector);
+       KUNIT_ASSERT_NOT_ERR_OR_NULL(test, connector->state);
+
        dm_state = to_dm_connector_state(connector->state);
        KUNIT_EXPECT_EQ(test, (int)dm_state->abm_level, 3);
 
        amdgpu_dm_set_abm_level_param(saved_abm_level);
 }
 
 /**
- * dm_test_funcs_reset_edp_abm_disabled - Test funcs_reset eDP ABM
+ * dm_test_atomic_create_edp_abm_disabled - Test funcs_reset eDP ABM
  * disabled
  * @test: The KUnit test context
  */
-static void dm_test_funcs_reset_edp_abm_disabled(struct kunit *test)
+static void dm_test_atomic_create_edp_abm_disabled(struct kunit *test)
 {
        struct device *dev;
        struct drm_device *drm;
        struct drm_connector *connector;
        struct dm_connector_state *dm_state;
@@ -1578,13 +1579,14 @@ static void dm_test_funcs_reset_edp_abm_disabled(struct 
kunit *test)
        drmm_connector_init(drm, connector, &dm_test_connector_funcs,
                            DRM_MODE_CONNECTOR_eDP, NULL);
 
        /* Test with abm_level <= 0 → immediate disable */
        amdgpu_dm_set_abm_level_param(-1);
-       amdgpu_dm_connector_funcs_reset(connector);
 
-       KUNIT_ASSERT_NOT_NULL(test, connector->state);
+       connector->state = amdgpu_dm_connector_atomic_create_state(connector);
+       KUNIT_ASSERT_NOT_ERR_OR_NULL(test, connector->state);
+
        dm_state = to_dm_connector_state(connector->state);
        KUNIT_EXPECT_EQ(test, (int)dm_state->abm_level,
                        (int)ABM_LEVEL_IMMEDIATE_DISABLE);
 
        amdgpu_dm_set_abm_level_param(saved_abm_level);
@@ -1618,12 +1620,12 @@ static void 
dm_test_atomic_dup_state_copies_fields(struct kunit *test)
        KUNIT_ASSERT_NOT_NULL(test, connector);
 
        drmm_connector_init(drm, connector, &dm_test_connector_funcs,
                            DRM_MODE_CONNECTOR_HDMIA, NULL);
 
-       amdgpu_dm_connector_funcs_reset(connector);
-       KUNIT_ASSERT_NOT_NULL(test, connector->state);
+       connector->state = amdgpu_dm_connector_atomic_create_state(connector);
+       KUNIT_ASSERT_NOT_ERR_OR_NULL(test, connector->state);
 
        /* Modify original state fields */
        dm_state = to_dm_connector_state(connector->state);
        dm_state->scaling = RMX_CENTER;
        dm_state->underscan_enable = true;
@@ -4884,11 +4886,11 @@ static struct dm_test_destroy_ctx 
*dm_test_destroy_ctx_alloc(struct kunit *test)
  * drm_connector_init() requires funcs->destroy to be set, so a dedicated funcs
  * table wires it to amdgpu_dm_connector_destroy() (the test invokes it
  * directly; the connector is removed from the device before teardown).
  */
 static const struct drm_connector_funcs dm_test_destroy_funcs = {
-       .reset = amdgpu_dm_connector_funcs_reset,
+       .atomic_create_state = amdgpu_dm_connector_atomic_create_state,
        .atomic_duplicate_state = amdgpu_dm_connector_atomic_duplicate_state,
        .atomic_destroy_state = drm_atomic_helper_connector_destroy_state,
        .destroy = amdgpu_dm_connector_destroy,
 };
 
@@ -6251,17 +6253,21 @@ static void 
dm_test_restore_state_no_connector_state(struct kunit *test)
  */
 static void dm_test_restore_state_no_encoder(struct kunit *test)
 {
        struct drm_device *drm = dm_test_alloc_drm(test);
        struct amdgpu_dm_connector *aconnector;
+       struct drm_connector_state *conn_state;
 
        aconnector = dm_test_add_connector(test, drm,
                                           DRM_MODE_CONNECTOR_HDMIA);
        aconnector->dc_sink = kunit_kzalloc(test, 1, GFP_KERNEL);
        KUNIT_ASSERT_NOT_NULL(test, aconnector->dc_sink);
-       aconnector->base.funcs->reset(&aconnector->base);
-       KUNIT_ASSERT_NOT_NULL(test, aconnector->base.state);
+
+       conn_state = 
aconnector->base.funcs->atomic_create_state(&aconnector->base);
+       KUNIT_ASSERT_NOT_ERR_OR_NULL(test, conn_state);
+
+       aconnector->base.state = conn_state;
        /* connector->encoder left NULL. */
 
        dm_restore_drm_connector_state(drm, &aconnector->base);
 
        KUNIT_EXPECT_NULL(test, aconnector->base.encoder);
@@ -6275,20 +6281,25 @@ static void dm_test_restore_state_no_encoder(struct 
kunit *test)
  * dc stream, so the function returns before comparing sinks.
  */
 static void dm_test_restore_state_no_stream(struct kunit *test)
 {
        struct drm_device *drm = dm_test_alloc_drm(test);
+       struct drm_connector_state *conn_state;
        struct amdgpu_dm_connector *aconnector;
        struct dm_crtc_state *acrtc_state;
        struct drm_encoder *enc;
        struct drm_crtc *crtc;
 
        aconnector = dm_test_add_connector(test, drm,
                                           DRM_MODE_CONNECTOR_HDMIA);
        aconnector->dc_sink = kunit_kzalloc(test, 1, GFP_KERNEL);
        KUNIT_ASSERT_NOT_NULL(test, aconnector->dc_sink);
-       aconnector->base.funcs->reset(&aconnector->base);
+
+       conn_state = 
aconnector->base.funcs->atomic_create_state(&aconnector->base);
+       KUNIT_ASSERT_NOT_ERR_OR_NULL(test, conn_state);
+
+       aconnector->base.state = conn_state;
 
        enc = kunit_kzalloc(test, sizeof(*enc), GFP_KERNEL);
        KUNIT_ASSERT_NOT_NULL(test, enc);
        crtc = kunit_kzalloc(test, sizeof(*crtc), GFP_KERNEL);
        KUNIT_ASSERT_NOT_NULL(test, crtc);
@@ -6313,21 +6324,26 @@ static void dm_test_restore_state_no_stream(struct 
kunit *test)
  * nothing to restore, so the forced atomic commit is not issued.
  */
 static void dm_test_restore_state_same_sink(struct kunit *test)
 {
        struct drm_device *drm = dm_test_alloc_drm(test);
+       struct drm_connector_state *conn_state;
        struct amdgpu_dm_connector *aconnector;
        struct dm_crtc_state *acrtc_state;
        struct dc_stream_state *stream;
        struct drm_encoder *enc;
        struct drm_crtc *crtc;
 
        aconnector = dm_test_add_connector(test, drm,
                                           DRM_MODE_CONNECTOR_HDMIA);
        aconnector->dc_sink = kunit_kzalloc(test, 1, GFP_KERNEL);
        KUNIT_ASSERT_NOT_NULL(test, aconnector->dc_sink);
-       aconnector->base.funcs->reset(&aconnector->base);
+
+       conn_state = 
aconnector->base.funcs->atomic_create_state(&aconnector->base);
+       KUNIT_ASSERT_NOT_ERR_OR_NULL(test, conn_state);
+
+       aconnector->base.state = conn_state;
 
        enc = kunit_kzalloc(test, sizeof(*enc), GFP_KERNEL);
        KUNIT_ASSERT_NOT_NULL(test, enc);
        crtc = kunit_kzalloc(test, sizeof(*crtc), GFP_KERNEL);
        KUNIT_ASSERT_NOT_NULL(test, crtc);
@@ -7030,10 +7046,11 @@ static void dm_test_mode_valid_no_dc_sink(struct kunit 
*test)
  */
 static void dm_test_mode_valid_force_on_no_stream(struct kunit *test)
 {
        struct dm_test_cvs_ctx *ctx =
                dm_test_cvs_ctx_alloc(test, DRM_MODE_CONNECTOR_DisplayPort);
+       struct drm_connector_state *conn_state;
        struct dc_sink *em_sink;
 
        em_sink = kunit_kzalloc(test, sizeof(*em_sink), GFP_KERNEL);
        KUNIT_ASSERT_NOT_NULL(test, em_sink);
 
@@ -7042,12 +7059,14 @@ static void 
dm_test_mode_valid_force_on_no_stream(struct kunit *test)
        ctx->aconnector->base.force = DRM_FORCE_ON;
 
        /* drm_connector_cleanup() kfree()s connector->state, so it must not
         * point at KUnit-managed memory.
         */
-       amdgpu_dm_connector_funcs_reset(&ctx->aconnector->base);
-       KUNIT_ASSERT_NOT_NULL(test, ctx->aconnector->base.state);
+       conn_state = 
amdgpu_dm_connector_atomic_create_state(&ctx->aconnector->base);
+       KUNIT_ASSERT_NOT_ERR_OR_NULL(test, conn_state);
+
+       ctx->aconnector->base.state = conn_state;
        ctx->aconnector->base.state->max_requested_bpc = 4;
 
        KUNIT_EXPECT_EQ(test,
                        amdgpu_dm_connector_mode_valid(&ctx->aconnector->base,
                                                       ctx->mode),
@@ -7557,10 +7576,11 @@ static void 
dm_test_update_after_detect_disconnect(struct kunit *test)
 {
        struct dm_test_uad_ctx *ctx =
                dm_test_uad_ctx_alloc(test, DRM_MODE_CONNECTOR_HDMIA);
        struct dc_sink *old_sink = dm_test_uad_owned_sink();
        struct dc_crtc_timing *timing = kzalloc_obj(*timing, GFP_KERNEL);
+       struct drm_connector_state *conn_state;
 
        KUNIT_ASSERT_NOT_NULL(test, old_sink);
        KUNIT_ASSERT_NOT_NULL(test, timing);
 
        mutex_init(&ctx->adev->dm.audio_lock);
@@ -7568,12 +7588,14 @@ static void 
dm_test_update_after_detect_disconnect(struct kunit *test)
        ctx->aconnector->timing_requested = timing;
        ctx->aconnector->num_modes = 3;
        ctx->aconnector->audio_inst = 5;
        ctx->link->local_sink = NULL;
 
-       amdgpu_dm_connector_funcs_reset(&ctx->aconnector->base);
-       KUNIT_ASSERT_NOT_NULL(test, ctx->aconnector->base.state);
+       conn_state = 
amdgpu_dm_connector_atomic_create_state(&ctx->aconnector->base);
+       KUNIT_ASSERT_NOT_ERR_OR_NULL(test, conn_state);
+
+       ctx->aconnector->base.state = conn_state;
        ctx->aconnector->base.state->content_protection =
                DRM_MODE_CONTENT_PROTECTION_ENABLED;
 
        amdgpu_dm_update_connector_after_detect(ctx->aconnector);
 
@@ -9197,10 +9219,11 @@ struct dm_test_fs_caps_ctx {
  * parser to succeed install one.
  */
 static struct dm_test_fs_caps_ctx *
 dm_test_fs_caps_ctx_alloc(struct kunit *test, enum signal_type sink_signal)
 {
+       struct drm_connector_state *conn_state;
        struct dm_test_fs_caps_ctx *ctx;
        struct dc_context *dc_ctx;
        struct device *dev;
        struct dc *dc;
 
@@ -9222,12 +9245,15 @@ dm_test_fs_caps_ctx_alloc(struct kunit *test, enum 
signal_type sink_signal)
        KUNIT_ASSERT_NOT_NULL(test, ctx->aconnector);
        KUNIT_ASSERT_EQ(test,
                        drmm_connector_init(ctx->drm, &ctx->aconnector->base,
                                            &dm_test_connector_funcs,
                                            DRM_MODE_CONNECTOR_DisplayPort, 
NULL), 0);
-       amdgpu_dm_connector_funcs_reset(&ctx->aconnector->base);
-       KUNIT_ASSERT_NOT_NULL(test, ctx->aconnector->base.state);
+
+       conn_state = 
amdgpu_dm_connector_atomic_create_state(&ctx->aconnector->base);
+       KUNIT_ASSERT_NOT_ERR_OR_NULL(test, conn_state);
+
+       ctx->aconnector->base.state = conn_state;
        KUNIT_ASSERT_EQ(test,
                        
drm_connector_attach_vrr_capable_property(&ctx->aconnector->base), 0);
 
        dc_ctx = kunit_kzalloc(test, sizeof(*dc_ctx), GFP_KERNEL);
        KUNIT_ASSERT_NOT_NULL(test, dc_ctx);
@@ -9628,11 +9654,11 @@ dm_test_force_dup_state_fail(struct drm_connector 
*connector)
 {
        return NULL;
 }
 
 static const struct drm_connector_funcs dm_test_force_fail_funcs = {
-       .reset = amdgpu_dm_connector_funcs_reset,
+       .atomic_create_state = amdgpu_dm_connector_atomic_create_state,
        .atomic_duplicate_state = dm_test_force_dup_state_fail,
        .atomic_destroy_state = drm_atomic_helper_connector_destroy_state,
 };
 
 /* The atomic modeset check dereferences the helper funcs unconditionally. */
@@ -9845,14 +9871,14 @@ static struct kunit_case amdgpu_dm_connector_tests[] = {
        /* decide_crtc_timing_for_drm_display_mode */
        KUNIT_CASE(dm_test_decide_crtc_timing_scale_enabled),
        KUNIT_CASE(dm_test_decide_crtc_timing_matching_mode),
        KUNIT_CASE(dm_test_decide_crtc_timing_no_copy),
        KUNIT_CASE(dm_test_decide_crtc_timing_no_crtc_clock),
-       /* amdgpu_dm_connector_funcs_reset */
-       KUNIT_CASE(dm_test_funcs_reset_sets_defaults),
-       KUNIT_CASE(dm_test_funcs_reset_edp_abm_level),
-       KUNIT_CASE(dm_test_funcs_reset_edp_abm_disabled),
+       /* amdgpu_dm_connector_atomic_create_state */
+       KUNIT_CASE(dm_test_atomic_create_sets_defaults),
+       KUNIT_CASE(dm_test_atomic_create_edp_abm_level),
+       KUNIT_CASE(dm_test_atomic_create_edp_abm_disabled),
        /* amdgpu_dm_connector_atomic_duplicate_state */
        KUNIT_CASE(dm_test_atomic_dup_state_copies_fields),
        /* amdgpu_dm_fill_hdr_info_packet */
        KUNIT_CASE(dm_test_fill_hdr_null_metadata),
        KUNIT_CASE(dm_test_fill_hdr_zeroes_output),

-- 
2.55.0

Reply via email to