Considering the current adoption of the KUnit framework, convert the
DRM plane helper selftest to the KUnit API.

Co-developed-by: Djakson C. G. Filho <djakson.fi...@gmail.com>
Signed-off-by: Djakson C. G. Filho <djakson.fi...@gmail.com>
Co-developed-by: Anderson Fraga <aaafr...@gmail.com>
Signed-off-by: Anderson Fraga <aaafr...@gmail.com>
Signed-off-by: Maíra Canal <maira.ca...@usp.br>
---
 drivers/gpu/drm/selftests/Makefile            |   4 +-
 .../gpu/drm/selftests/drm_modeset_selftests.h |   1 -
 .../drm/selftests/test-drm_modeset_common.h   |   1 -
 drivers/gpu/drm/tests/Kconfig                 |  12 +++
 drivers/gpu/drm/tests/Makefile                |   1 +
 .../test-drm_plane_helper.c                   | 101 ++++++++++--------
 6 files changed, 70 insertions(+), 50 deletions(-)
 rename drivers/gpu/drm/{selftests => tests}/test-drm_plane_helper.c (62%)

diff --git a/drivers/gpu/drm/selftests/Makefile 
b/drivers/gpu/drm/selftests/Makefile
index b7f252d886d0..9e0ccb482841 100644
--- a/drivers/gpu/drm/selftests/Makefile
+++ b/drivers/gpu/drm/selftests/Makefile
@@ -1,6 +1,6 @@
 # SPDX-License-Identifier: GPL-2.0-only
-test-drm_modeset-y := test-drm_modeset_common.o test-drm_plane_helper.o \
-                      test-drm_framebuffer.o test-drm_dp_mst_helper.o
+test-drm_modeset-y := test-drm_modeset_common.o test-drm_framebuffer.o \
+                                       test-drm_dp_mst_helper.o
 
 obj-$(CONFIG_DRM_DEBUG_SELFTEST) += test-drm_mm.o test-drm_modeset.o \
                                    test-drm_buddy.o
diff --git a/drivers/gpu/drm/selftests/drm_modeset_selftests.h 
b/drivers/gpu/drm/selftests/drm_modeset_selftests.h
index 63061ef55eff..22e467f6465a 100644
--- a/drivers/gpu/drm/selftests/drm_modeset_selftests.h
+++ b/drivers/gpu/drm/selftests/drm_modeset_selftests.h
@@ -6,7 +6,6 @@
  *
  * Tests are executed in order by igt/drm_selftests_helper
  */
-selftest(check_plane_state, igt_check_plane_state)
 selftest(check_drm_framebuffer_create, igt_check_drm_framebuffer_create)
 selftest(dp_mst_calc_pbn_mode, igt_dp_mst_calc_pbn_mode)
 selftest(dp_mst_sideband_msg_req_decode, igt_dp_mst_sideband_msg_req_decode)
diff --git a/drivers/gpu/drm/selftests/test-drm_modeset_common.h 
b/drivers/gpu/drm/selftests/test-drm_modeset_common.h
index 5709d967a5c4..790f3cf31f0d 100644
--- a/drivers/gpu/drm/selftests/test-drm_modeset_common.h
+++ b/drivers/gpu/drm/selftests/test-drm_modeset_common.h
@@ -16,7 +16,6 @@
 
 #define FAIL_ON(x) FAIL((x), "%s", "FAIL_ON(" __stringify(x) ")\n")
 
-int igt_check_plane_state(void *ignored);
 int igt_check_drm_framebuffer_create(void *ignored);
 int igt_dp_mst_calc_pbn_mode(void *ignored);
 int igt_dp_mst_sideband_msg_req_decode(void *ignored);
diff --git a/drivers/gpu/drm/tests/Kconfig b/drivers/gpu/drm/tests/Kconfig
index 7c4f76560152..5aa8ac2dd28e 100644
--- a/drivers/gpu/drm/tests/Kconfig
+++ b/drivers/gpu/drm/tests/Kconfig
@@ -61,4 +61,16 @@ config DRM_FORMAT_KUNIT_TEST
 
                If in doubt, say "N".
 
+config DRM_PLANE_HELPER_KUNIT_TEST
+       tristate "KUnit tests for DRM plane helper" if !DRM_KUNIT_TEST
+       select DRM_KMS_HELPER
+       default y if DRM_KUNIT_TEST
+       help
+               This option provides KUnit modules that can be used to run
+               various selftests on parts of the DRM plane helper API.  This
+               option is not useful for distributions or general kernels, but 
only
+               for kernel developers working on DRM and associated drivers.
+
+               If in doubt, say "N".
+
 endmenu
diff --git a/drivers/gpu/drm/tests/Makefile b/drivers/gpu/drm/tests/Makefile
index 95d1f67f609d..6e3a10806cd8 100644
--- a/drivers/gpu/drm/tests/Makefile
+++ b/drivers/gpu/drm/tests/Makefile
@@ -3,3 +3,4 @@ obj-$(CONFIG_DRM_DAMAGE_HELPER_KUNIT_TEST) += 
test-drm_damage_helper.o
 obj-$(CONFIG_DRM_CMDLINE_PARSER_KUNIT_TEST) += test-drm_cmdline_parser.o
 obj-$(CONFIG_DRM_RECT_KUNIT_TEST) += test-drm_rect.o
 obj-$(CONFIG_DRM_FORMAT_KUNIT_TEST) += test-drm_format.o
+obj-$(CONFIG_DRM_PLANE_HELPER_KUNIT_TEST) += test-drm_plane_helper.o
diff --git a/drivers/gpu/drm/selftests/test-drm_plane_helper.c 
b/drivers/gpu/drm/tests/test-drm_plane_helper.c
similarity index 62%
rename from drivers/gpu/drm/selftests/test-drm_plane_helper.c
rename to drivers/gpu/drm/tests/test-drm_plane_helper.c
index b61273e9c403..354c2c8d9f1c 100644
--- a/drivers/gpu/drm/selftests/test-drm_plane_helper.c
+++ b/drivers/gpu/drm/tests/test-drm_plane_helper.c
@@ -3,14 +3,11 @@
  * Test cases for the drm_plane_helper functions
  */
 
-#define pr_fmt(fmt) "drm_plane_helper: " fmt
-
+#include <kunit/test.h>
 #include <drm/drm_atomic_helper.h>
 #include <drm/drm_plane_helper.h>
 #include <drm/drm_modes.h>
 
-#include "test-drm_modeset_common.h"
-
 static void set_src(struct drm_plane_state *plane_state,
                    unsigned src_x, unsigned src_y,
                    unsigned src_w, unsigned src_h)
@@ -73,7 +70,7 @@ static bool check_crtc_eq(struct drm_plane_state *plane_state,
        return true;
 }
 
-int igt_check_plane_state(void *ignored)
+static void igt_check_plane_state(struct kunit *test)
 {
        int ret;
 
@@ -108,10 +105,10 @@ int igt_check_plane_state(void *ignored)
                                                  DRM_PLANE_HELPER_NO_SCALING,
                                                  DRM_PLANE_HELPER_NO_SCALING,
                                                  false, false);
-       FAIL(ret < 0, "Simple clipping check should pass\n");
-       FAIL_ON(!plane_state.visible);
-       FAIL_ON(!check_src_eq(&plane_state, 0, 0, 1024 << 16, 768 << 16));
-       FAIL_ON(!check_crtc_eq(&plane_state, 0, 0, 1024, 768));
+       KUNIT_EXPECT_FALSE_MSG(test, ret, 0, "Simple clipping check should 
pass\n");
+       KUNIT_EXPECT_TRUE(test, plane_state.visible);
+       KUNIT_EXPECT_TRUE(test, check_src_eq(&plane_state, 0, 0, 1024 << 16, 
768 << 16));
+       KUNIT_EXPECT_TRUE(test, check_crtc_eq(&plane_state, 0, 0, 1024, 768));
 
        /* Rotated clipping + reflection, no scaling. */
        plane_state.rotation = DRM_MODE_ROTATE_90 | DRM_MODE_REFLECT_X;
@@ -119,10 +116,10 @@ int igt_check_plane_state(void *ignored)
                                                  DRM_PLANE_HELPER_NO_SCALING,
                                                  DRM_PLANE_HELPER_NO_SCALING,
                                                  false, false);
-       FAIL(ret < 0, "Rotated clipping check should pass\n");
-       FAIL_ON(!plane_state.visible);
-       FAIL_ON(!check_src_eq(&plane_state, 0, 0, 768 << 16, 1024 << 16));
-       FAIL_ON(!check_crtc_eq(&plane_state, 0, 0, 1024, 768));
+       KUNIT_EXPECT_FALSE_MSG(test, ret, 0, "Rotated clipping check should 
pass\n");
+       KUNIT_EXPECT_TRUE(test, plane_state.visible);
+       KUNIT_EXPECT_TRUE(test, check_src_eq(&plane_state, 0, 0, 768 << 16, 
1024 << 16));
+       KUNIT_EXPECT_TRUE(test, check_crtc_eq(&plane_state, 0, 0, 1024, 768));
        plane_state.rotation = DRM_MODE_ROTATE_0;
 
        /* Check whether positioning works correctly. */
@@ -132,16 +129,17 @@ int igt_check_plane_state(void *ignored)
                                                  DRM_PLANE_HELPER_NO_SCALING,
                                                  DRM_PLANE_HELPER_NO_SCALING,
                                                  false, false);
-       FAIL(!ret, "Should not be able to position on the crtc with 
can_position=false\n");
+       KUNIT_EXPECT_TRUE_MSG(test, ret,
+                       "Should not be able to position on the crtc with 
can_position=false\n");
 
        ret = drm_atomic_helper_check_plane_state(&plane_state, &crtc_state,
                                                  DRM_PLANE_HELPER_NO_SCALING,
                                                  DRM_PLANE_HELPER_NO_SCALING,
                                                  true, false);
-       FAIL(ret < 0, "Simple positioning should work\n");
-       FAIL_ON(!plane_state.visible);
-       FAIL_ON(!check_src_eq(&plane_state, 0, 0, 1023 << 16, 767 << 16));
-       FAIL_ON(!check_crtc_eq(&plane_state, 0, 0, 1023, 767));
+       KUNIT_EXPECT_FALSE_MSG(test, ret, 0, "Simple positioning should 
work\n");
+       KUNIT_EXPECT_TRUE(test, plane_state.visible);
+       KUNIT_EXPECT_TRUE(test, check_src_eq(&plane_state, 0, 0, 1023 << 16, 
767 << 16));
+       KUNIT_EXPECT_TRUE(test, check_crtc_eq(&plane_state, 0, 0, 1023, 767));
 
        /* Simple scaling tests. */
        set_src(&plane_state, 0, 0, 512 << 16, 384 << 16);
@@ -150,28 +148,28 @@ int igt_check_plane_state(void *ignored)
                                                  0x8001,
                                                  DRM_PLANE_HELPER_NO_SCALING,
                                                  false, false);
-       FAIL(!ret, "Upscaling out of range should fail.\n");
+       KUNIT_EXPECT_TRUE_MSG(test, ret, "Upscaling out of range should 
fail.\n");
        ret = drm_atomic_helper_check_plane_state(&plane_state, &crtc_state,
                                                  0x8000,
                                                  DRM_PLANE_HELPER_NO_SCALING,
                                                  false, false);
-       FAIL(ret < 0, "Upscaling exactly 2x should work\n");
-       FAIL_ON(!plane_state.visible);
-       FAIL_ON(!check_src_eq(&plane_state, 0, 0, 512 << 16, 384 << 16));
-       FAIL_ON(!check_crtc_eq(&plane_state, 0, 0, 1024, 768));
+       KUNIT_EXPECT_FALSE_MSG(test, ret, 0, "Upscaling exactly 2x should 
work\n");
+       KUNIT_EXPECT_TRUE(test, plane_state.visible);
+       KUNIT_EXPECT_TRUE(test, check_src_eq(&plane_state, 0, 0, 512 << 16, 384 
<< 16));
+       KUNIT_EXPECT_TRUE(test, check_crtc_eq(&plane_state, 0, 0, 1024, 768));
 
        set_src(&plane_state, 0, 0, 2048 << 16, 1536 << 16);
        ret = drm_atomic_helper_check_plane_state(&plane_state, &crtc_state,
                                                  DRM_PLANE_HELPER_NO_SCALING,
                                                  0x1ffff, false, false);
-       FAIL(!ret, "Downscaling out of range should fail.\n");
+       KUNIT_EXPECT_TRUE_MSG(test, ret, "Downscaling out of range should 
fail.\n");
        ret = drm_atomic_helper_check_plane_state(&plane_state, &crtc_state,
                                                  DRM_PLANE_HELPER_NO_SCALING,
                                                  0x20000, false, false);
-       FAIL(ret < 0, "Should succeed with exact scaling limit\n");
-       FAIL_ON(!plane_state.visible);
-       FAIL_ON(!check_src_eq(&plane_state, 0, 0, 2048 << 16, 1536 << 16));
-       FAIL_ON(!check_crtc_eq(&plane_state, 0, 0, 1024, 768));
+       KUNIT_EXPECT_FALSE_MSG(test, ret, 0, "Should succeed with exact scaling 
limit\n");
+       KUNIT_EXPECT_TRUE(test, plane_state.visible);
+       KUNIT_EXPECT_TRUE(test, check_src_eq(&plane_state, 0, 0, 2048 << 16, 
1536 << 16));
+       KUNIT_EXPECT_TRUE(test, check_crtc_eq(&plane_state, 0, 0, 1024, 768));
 
        /* Testing rounding errors. */
        set_src(&plane_state, 0, 0, 0x40001, 0x40001);
@@ -180,10 +178,10 @@ int igt_check_plane_state(void *ignored)
                                                  DRM_PLANE_HELPER_NO_SCALING,
                                                  0x10001,
                                                  true, false);
-       FAIL(ret < 0, "Should succeed by clipping to exact multiple");
-       FAIL_ON(!plane_state.visible);
-       FAIL_ON(!check_src_eq(&plane_state, 0, 0, 2 << 16, 2 << 16));
-       FAIL_ON(!check_crtc_eq(&plane_state, 1022, 766, 2, 2));
+       KUNIT_EXPECT_FALSE_MSG(test, ret, 0, "Should succeed by clipping to 
exact multiple");
+       KUNIT_EXPECT_TRUE(test, plane_state.visible);
+       KUNIT_EXPECT_TRUE(test, check_src_eq(&plane_state, 0, 0, 2 << 16, 2 << 
16));
+       KUNIT_EXPECT_TRUE(test, check_crtc_eq(&plane_state, 1022, 766, 2, 2));
 
        set_src(&plane_state, 0x20001, 0x20001, 0x4040001, 0x3040001);
        set_crtc(&plane_state, -2, -2, 1028, 772);
@@ -191,10 +189,10 @@ int igt_check_plane_state(void *ignored)
                                                  DRM_PLANE_HELPER_NO_SCALING,
                                                  0x10001,
                                                  false, false);
-       FAIL(ret < 0, "Should succeed by clipping to exact multiple");
-       FAIL_ON(!plane_state.visible);
-       FAIL_ON(!check_src_eq(&plane_state, 0x40002, 0x40002, 1024 << 16, 768 
<< 16));
-       FAIL_ON(!check_crtc_eq(&plane_state, 0, 0, 1024, 768));
+       KUNIT_EXPECT_FALSE_MSG(test, ret, 0, "Should succeed by clipping to 
exact multiple");
+       KUNIT_EXPECT_TRUE(test, plane_state.visible);
+       KUNIT_EXPECT_TRUE(test, check_src_eq(&plane_state, 0x40002, 0x40002, 
1024 << 16, 768 << 16));
+       KUNIT_EXPECT_TRUE(test, check_crtc_eq(&plane_state, 0, 0, 1024, 768));
 
        set_src(&plane_state, 0, 0, 0x3ffff, 0x3ffff);
        set_crtc(&plane_state, 1022, 766, 4, 4);
@@ -202,11 +200,11 @@ int igt_check_plane_state(void *ignored)
                                                  0xffff,
                                                  DRM_PLANE_HELPER_NO_SCALING,
                                                  true, false);
-       FAIL(ret < 0, "Should succeed by clipping to exact multiple");
-       FAIL_ON(!plane_state.visible);
+       KUNIT_EXPECT_FALSE_MSG(test, ret, 0, "Should succeed by clipping to 
exact multiple");
+       KUNIT_EXPECT_TRUE(test, plane_state.visible);
        /* Should not be rounded to 0x20001, which would be upscaling. */
-       FAIL_ON(!check_src_eq(&plane_state, 0, 0, 2 << 16, 2 << 16));
-       FAIL_ON(!check_crtc_eq(&plane_state, 1022, 766, 2, 2));
+       KUNIT_EXPECT_TRUE(test, check_src_eq(&plane_state, 0, 0, 2 << 16, 2 << 
16));
+       KUNIT_EXPECT_TRUE(test, check_crtc_eq(&plane_state, 1022, 766, 2, 2));
 
        set_src(&plane_state, 0x1ffff, 0x1ffff, 0x403ffff, 0x303ffff);
        set_crtc(&plane_state, -2, -2, 1028, 772);
@@ -214,10 +212,21 @@ int igt_check_plane_state(void *ignored)
                                                  0xffff,
                                                  DRM_PLANE_HELPER_NO_SCALING,
                                                  false, false);
-       FAIL(ret < 0, "Should succeed by clipping to exact multiple");
-       FAIL_ON(!plane_state.visible);
-       FAIL_ON(!check_src_eq(&plane_state, 0x3fffe, 0x3fffe, 1024 << 16, 768 
<< 16));
-       FAIL_ON(!check_crtc_eq(&plane_state, 0, 0, 1024, 768));
-
-       return 0;
+       KUNIT_EXPECT_FALSE_MSG(test, ret, 0, "Should succeed by clipping to 
exact multiple");
+       KUNIT_EXPECT_TRUE(test, plane_state.visible);
+       KUNIT_EXPECT_TRUE(test, check_src_eq(&plane_state, 0x3fffe, 0x3fffe,
+                               1024 << 16, 768 << 16));
+       KUNIT_EXPECT_TRUE(test, check_crtc_eq(&plane_state, 0, 0, 1024, 768));
 }
+
+static struct kunit_case drm_plane_helper_test[] = {
+       KUNIT_CASE(igt_check_plane_state),
+       {}
+};
+
+static struct kunit_suite drm_plane_helper_test_suite = {
+       .name = "drm_plane_helper_test",
+       .test_cases = drm_plane_helper_test,
+};
+
+kunit_test_suite(drm_plane_helper_test_suite);
-- 
2.36.1

Reply via email to