From 48ea5145405a3462d3f5e2046cd2744439bbd112 Mon Sep 17 00:00:00 2001 From: Maxime Ripard Date: Fri, 24 Mar 2023 10:02:59 +0100 Subject: [PATCH] drm/vc4: tests: Return the allocated output 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 --- drivers/gpu/drm/vc4/tests/vc4_mock.h | 7 ++--- drivers/gpu/drm/vc4/tests/vc4_mock_output.c | 9 ++++--- drivers/gpu/drm/vc4/tests/vc4_test_pv_muxing.c | 37 +++++++++++++++----------- 3 files changed, 30 insertions(+), 23 deletions(-) diff --git a/drivers/gpu/drm/vc4/tests/vc4_mock.h b/drivers/gpu/drm/vc4/tests/vc4_mock.h index 3c298a9..7a6ec77 100644 --- a/drivers/gpu/drm/vc4/tests/vc4_mock.h +++ b/drivers/gpu/drm/vc4/tests/vc4_mock.h @@ -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); diff --git a/drivers/gpu/drm/vc4/tests/vc4_mock_output.c b/drivers/gpu/drm/vc4/tests/vc4_mock_output.c index 0e3be43..bcc6c78 100644 --- a/drivers/gpu/drm/vc4/tests/vc4_mock_output.c +++ b/drivers/gpu/drm/vc4/tests/vc4_mock_output.c @@ -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, diff --git a/drivers/gpu/drm/vc4/tests/vc4_test_pv_muxing.c b/drivers/gpu/drm/vc4/tests/vc4_test_pv_muxing.c index e1f095e..d690ebb 100644 --- a/drivers/gpu/drm/vc4/tests/vc4_test_pv_muxing.c +++ b/drivers/gpu/drm/vc4/tests/vc4_test_pv_muxing.c @@ -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); -- 2.7.4