drm/vc4: tests: Return the allocated output
authorMaxime Ripard <maxime@cerno.tech>
Fri, 24 Mar 2023 09:02:59 +0000 (10:02 +0100)
committerDom Cobley <popcornmix@gmail.com>
Mon, 19 Feb 2024 11:34:59 +0000 (11:34 +0000)
Some tests will need to retrieve the output that was just allocated by
vc4_mock_atomic_add_output().

Instead of making them look them up in the DRM device, we can simply
make vc4_mock_atomic_add_output() return an error pointer that holds the
allocated output instead of the error code.

Signed-off-by: Maxime Ripard <maxime@cerno.tech>
drivers/gpu/drm/vc4/tests/vc4_mock.h
drivers/gpu/drm/vc4/tests/vc4_mock_output.c
drivers/gpu/drm/vc4/tests/vc4_test_pv_muxing.c

index 3c298a9..7a6ec77 100644 (file)
@@ -56,9 +56,10 @@ struct vc4_dummy_output *vc4_dummy_output(struct kunit *test,
 struct vc4_dev *vc4_mock_device(struct kunit *test);
 struct vc4_dev *vc5_mock_device(struct kunit *test);
 
-int vc4_mock_atomic_add_output(struct kunit *test,
-                              struct drm_atomic_state *state,
-                              enum vc4_encoder_type type);
+struct vc4_dummy_output *
+vc4_mock_atomic_add_output(struct kunit *test,
+                          struct drm_atomic_state *state,
+                          enum vc4_encoder_type type);
 int vc4_mock_atomic_del_output(struct kunit *test,
                               struct drm_atomic_state *state,
                               enum vc4_encoder_type type);
index 0e3be43..bcc6c78 100644 (file)
@@ -61,9 +61,10 @@ static const struct drm_display_mode default_mode = {
        DRM_SIMPLE_MODE(640, 480, 64, 48)
 };
 
-int vc4_mock_atomic_add_output(struct kunit *test,
-                              struct drm_atomic_state *state,
-                              enum vc4_encoder_type type)
+struct vc4_dummy_output *
+vc4_mock_atomic_add_output(struct kunit *test,
+                          struct drm_atomic_state *state,
+                          enum vc4_encoder_type type)
 {
        struct drm_device *drm = state->dev;
        struct drm_connector_state *conn_state;
@@ -96,7 +97,7 @@ int vc4_mock_atomic_add_output(struct kunit *test,
 
        crtc_state->active = true;
 
-       return 0;
+       return output;
 }
 
 int vc4_mock_atomic_del_output(struct kunit *test,
index e1f095e..d690ebb 100644 (file)
@@ -682,10 +682,11 @@ static void drm_vc4_test_pv_muxing(struct kunit *test)
        int ret;
 
        for (i = 0; i < params->nencoders; i++) {
+               struct vc4_dummy_output *output;
                enum vc4_encoder_type enc_type = params->encoders[i];
 
-               ret = vc4_mock_atomic_add_output(test, state, enc_type);
-               KUNIT_ASSERT_EQ(test, ret, 0);
+               output = vc4_mock_atomic_add_output(test, state, enc_type);
+               KUNIT_ASSERT_NOT_ERR_OR_NULL(test, output);
        }
 
        ret = drm_atomic_check_only(state);
@@ -711,10 +712,11 @@ static void drm_vc4_test_pv_muxing_invalid(struct kunit *test)
        int ret;
 
        for (i = 0; i < params->nencoders; i++) {
+               struct vc4_dummy_output *output;
                enum vc4_encoder_type enc_type = params->encoders[i];
 
-               ret = vc4_mock_atomic_add_output(test, state, enc_type);
-               KUNIT_ASSERT_EQ(test, ret, 0);
+               output = vc4_mock_atomic_add_output(test, state, enc_type);
+               KUNIT_ASSERT_NOT_ERR_OR_NULL(test, output);
        }
 
        ret = drm_atomic_check_only(state);
@@ -784,6 +786,7 @@ static void drm_test_vc5_pv_muxing_bugs_subsequent_crtc_enable(struct kunit *tes
 {
        struct drm_modeset_acquire_ctx *ctx;
        struct drm_atomic_state *state;
+       struct vc4_dummy_output *output;
        struct vc4_crtc_state *new_vc4_crtc_state;
        struct vc4_hvs_state *new_hvs_state;
        unsigned int hdmi0_channel;
@@ -802,8 +805,8 @@ static void drm_test_vc5_pv_muxing_bugs_subsequent_crtc_enable(struct kunit *tes
        state = drm_kunit_helper_atomic_state_alloc(test, drm, ctx);
        KUNIT_ASSERT_NOT_ERR_OR_NULL(test, state);
 
-       ret = vc4_mock_atomic_add_output(test, state, VC4_ENCODER_TYPE_HDMI0);
-       KUNIT_ASSERT_EQ(test, ret, 0);
+       output = vc4_mock_atomic_add_output(test, state, VC4_ENCODER_TYPE_HDMI0);
+       KUNIT_ASSERT_NOT_ERR_OR_NULL(test, output);
 
        ret = drm_atomic_check_only(state);
        KUNIT_ASSERT_EQ(test, ret, 0);
@@ -825,8 +828,8 @@ static void drm_test_vc5_pv_muxing_bugs_subsequent_crtc_enable(struct kunit *tes
        state = drm_kunit_helper_atomic_state_alloc(test, drm, ctx);
        KUNIT_ASSERT_NOT_ERR_OR_NULL(test, state);
 
-       ret = vc4_mock_atomic_add_output(test, state, VC4_ENCODER_TYPE_HDMI1);
-       KUNIT_ASSERT_EQ(test, ret, 0);
+       output = vc4_mock_atomic_add_output(test, state, VC4_ENCODER_TYPE_HDMI1);
+       KUNIT_ASSERT_NOT_ERR_OR_NULL(test, output);
 
        ret = drm_atomic_check_only(state);
        KUNIT_ASSERT_EQ(test, ret, 0);
@@ -856,6 +859,7 @@ static void drm_test_vc5_pv_muxing_bugs_stable_fifo(struct kunit *test)
 {
        struct drm_modeset_acquire_ctx *ctx;
        struct drm_atomic_state *state;
+       struct vc4_dummy_output *output;
        struct vc4_crtc_state *new_vc4_crtc_state;
        struct vc4_hvs_state *new_hvs_state;
        unsigned int old_hdmi0_channel;
@@ -874,11 +878,11 @@ static void drm_test_vc5_pv_muxing_bugs_stable_fifo(struct kunit *test)
        state = drm_kunit_helper_atomic_state_alloc(test, drm, ctx);
        KUNIT_ASSERT_NOT_ERR_OR_NULL(test, state);
 
-       ret = vc4_mock_atomic_add_output(test, state, VC4_ENCODER_TYPE_HDMI0);
-       KUNIT_ASSERT_EQ(test, ret, 0);
+       output = vc4_mock_atomic_add_output(test, state, VC4_ENCODER_TYPE_HDMI0);
+       KUNIT_ASSERT_NOT_ERR_OR_NULL(test, output);
 
-       ret = vc4_mock_atomic_add_output(test, state, VC4_ENCODER_TYPE_HDMI1);
-       KUNIT_ASSERT_EQ(test, ret, 0);
+       output = vc4_mock_atomic_add_output(test, state, VC4_ENCODER_TYPE_HDMI1);
+       KUNIT_ASSERT_NOT_ERR_OR_NULL(test, output);
 
        ret = drm_atomic_check_only(state);
        KUNIT_ASSERT_EQ(test, ret, 0);
@@ -951,6 +955,7 @@ drm_test_vc5_pv_muxing_bugs_subsequent_crtc_enable_too_many_crtc_state(struct ku
 {
        struct drm_modeset_acquire_ctx *ctx;
        struct drm_atomic_state *state;
+       struct vc4_dummy_output *output;
        struct vc4_crtc_state *new_vc4_crtc_state;
        struct drm_device *drm;
        struct vc4_dev *vc4;
@@ -966,8 +971,8 @@ drm_test_vc5_pv_muxing_bugs_subsequent_crtc_enable_too_many_crtc_state(struct ku
        state = drm_kunit_helper_atomic_state_alloc(test, drm, ctx);
        KUNIT_ASSERT_NOT_ERR_OR_NULL(test, state);
 
-       ret = vc4_mock_atomic_add_output(test, state, VC4_ENCODER_TYPE_HDMI0);
-       KUNIT_ASSERT_EQ(test, ret, 0);
+       output = vc4_mock_atomic_add_output(test, state, VC4_ENCODER_TYPE_HDMI0);
+       KUNIT_ASSERT_NOT_ERR_OR_NULL(test, output);
 
        ret = drm_atomic_check_only(state);
        KUNIT_ASSERT_EQ(test, ret, 0);
@@ -978,8 +983,8 @@ drm_test_vc5_pv_muxing_bugs_subsequent_crtc_enable_too_many_crtc_state(struct ku
        state = drm_kunit_helper_atomic_state_alloc(test, drm, ctx);
        KUNIT_ASSERT_NOT_ERR_OR_NULL(test, state);
 
-       ret = vc4_mock_atomic_add_output(test, state, VC4_ENCODER_TYPE_HDMI1);
-       KUNIT_ASSERT_EQ(test, ret, 0);
+       output = vc4_mock_atomic_add_output(test, state, VC4_ENCODER_TYPE_HDMI1);
+       KUNIT_ASSERT_NOT_ERR_OR_NULL(test, output);
 
        ret = drm_atomic_check_only(state);
        KUNIT_ASSERT_EQ(test, ret, 0);