// SPDX-License-Identifier: GPL-2.0/* * Copyright (c) 2019 Bootlin * Copyright (c) 2022 Maíra Canal <mairacanal@riseup.net> */ #include <kunit/test.h> #include <drm/drm_connector.h>#include <drm/drm_kunit_helpers.h>#include <drm/drm_modes.h> static const struct drm_connector no_connector = {}; static void drm_test_cmdline_force_e_only(struct kunit *test){ struct drm_cmdline_mode mode = { }; const char *cmdline = "e"; KUNIT_ASSERT_TRUE(test, drm_mode_parse_command_line_for_connector(cmdline, &no_connector, &mode)); KUNIT_EXPECT_FALSE(test, mode.specified); KUNIT_EXPECT_FALSE(test, mode.refresh_specified); KUNIT_EXPECT_FALSE(test, mode.bpp_specified); KUNIT_EXPECT_FALSE(test, mode.rb); KUNIT_EXPECT_FALSE(test, mode.cvt); KUNIT_EXPECT_FALSE(test, mode.interlace); KUNIT_EXPECT_FALSE(test, mode.margins); KUNIT_EXPECT_EQ(test, mode.force, DRM_FORCE_ON);} static void drm_test_cmdline_force_D_only_not_digital(struct kunit *test){ struct drm_cmdline_mode mode = { }; const char *cmdline = "D"; KUNIT_ASSERT_TRUE(test, drm_mode_parse_command_line_for_connector(cmdline, &no_connector, &mode)); KUNIT_EXPECT_FALSE(test, mode.specified); KUNIT_EXPECT_FALSE(test, mode.refresh_specified); KUNIT_EXPECT_FALSE(test, mode.bpp_specified); KUNIT_EXPECT_FALSE(test, mode.rb); KUNIT_EXPECT_FALSE(test, mode.cvt); KUNIT_EXPECT_FALSE(test, mode.interlace); KUNIT_EXPECT_FALSE(test, mode.margins); KUNIT_EXPECT_EQ(test, mode.force, DRM_FORCE_ON);} static const struct drm_connector connector_hdmi = { .connector_type = DRM_MODE_CONNECTOR_HDMIB,}; static void drm_test_cmdline_force_D_only_hdmi(struct kunit *test){ struct drm_cmdline_mode mode = { }; const char *cmdline = "D"; KUNIT_ASSERT_TRUE(test, drm_mode_parse_command_line_for_connector(cmdline, &connector_hdmi, &mode)); KUNIT_EXPECT_FALSE(test, mode.specified); KUNIT_EXPECT_FALSE(test, mode.refresh_specified); KUNIT_EXPECT_FALSE(test, mode.bpp_specified); KUNIT_EXPECT_FALSE(test, mode.rb); KUNIT_EXPECT_FALSE(test, mode.cvt); KUNIT_EXPECT_FALSE(test, mode.interlace); KUNIT_EXPECT_FALSE(test, mode.margins); KUNIT_EXPECT_EQ(test, mode.force, DRM_FORCE_ON_DIGITAL);} static const struct drm_connector connector_dvi = { .connector_type = DRM_MODE_CONNECTOR_DVII,}; static void drm_test_cmdline_force_D_only_dvi(struct kunit *test){ struct drm_cmdline_mode mode = { }; const char *cmdline = "D"; KUNIT_ASSERT_TRUE(test, drm_mode_parse_command_line_for_connector(cmdline, &connector_dvi, &mode)); KUNIT_EXPECT_FALSE(test, mode.specified); KUNIT_EXPECT_FALSE(test, mode.refresh_specified); KUNIT_EXPECT_FALSE(test, mode.bpp_specified); KUNIT_EXPECT_FALSE(test, mode.rb); KUNIT_EXPECT_FALSE(test, mode.cvt); KUNIT_EXPECT_FALSE(test, mode.interlace); KUNIT_EXPECT_FALSE(test, mode.margins); KUNIT_EXPECT_EQ(test, mode.force, DRM_FORCE_ON_DIGITAL);} static void drm_test_cmdline_force_d_only(struct kunit *test){ struct drm_cmdline_mode mode = { }; const char *cmdline = "d"; KUNIT_ASSERT_TRUE(test, drm_mode_parse_command_line_for_connector(cmdline, &no_connector, &mode)); KUNIT_EXPECT_FALSE(test, mode.specified); KUNIT_EXPECT_FALSE(test, mode.refresh_specified); KUNIT_EXPECT_FALSE(test, mode.bpp_specified); KUNIT_EXPECT_FALSE(test, mode.rb); KUNIT_EXPECT_FALSE(test, mode.cvt); KUNIT_EXPECT_FALSE(test, mode.interlace); KUNIT_EXPECT_FALSE(test, mode.margins); KUNIT_EXPECT_EQ(test, mode.force, DRM_FORCE_OFF);} static void drm_test_cmdline_res(struct kunit *test){ struct drm_cmdline_mode mode = { }; const char *cmdline = "720x480"; KUNIT_ASSERT_TRUE(test, drm_mode_parse_command_line_for_connector(cmdline, &no_connector, &mode)); KUNIT_EXPECT_TRUE(test, mode.specified); KUNIT_EXPECT_EQ(test, mode.xres, 720); KUNIT_EXPECT_EQ(test, mode.yres, 480); KUNIT_EXPECT_FALSE(test, mode.refresh_specified); KUNIT_EXPECT_FALSE(test, mode.bpp_specified); KUNIT_EXPECT_FALSE(test, mode.rb); KUNIT_EXPECT_FALSE(test, mode.cvt); KUNIT_EXPECT_FALSE(test, mode.interlace); KUNIT_EXPECT_FALSE(test, mode.margins); KUNIT_EXPECT_EQ(test, mode.force, DRM_FORCE_UNSPECIFIED);} static void drm_test_cmdline_res_vesa(struct kunit *test){ struct drm_cmdline_mode mode = { }; const char *cmdline = "720x480M"; KUNIT_ASSERT_TRUE(test, drm_mode_parse_command_line_for_connector(cmdline, &no_connector, &mode)); KUNIT_EXPECT_TRUE(test, mode.specified); KUNIT_EXPECT_EQ(test, mode.xres, 720); KUNIT_EXPECT_EQ(test, mode.yres, 480); KUNIT_EXPECT_FALSE(test, mode.refresh_specified); KUNIT_EXPECT_FALSE(test, mode.bpp_specified); KUNIT_EXPECT_FALSE(test, mode.rb); KUNIT_EXPECT_TRUE(test, mode.cvt); KUNIT_EXPECT_FALSE(test, mode.interlace); KUNIT_EXPECT_FALSE(test, mode.margins); KUNIT_EXPECT_EQ(test, mode.force, DRM_FORCE_UNSPECIFIED);} static void drm_test_cmdline_res_vesa_rblank(struct kunit *test){ struct drm_cmdline_mode mode = { }; const char *cmdline = "720x480MR"; KUNIT_ASSERT_TRUE(test, drm_mode_parse_command_line_for_connector(cmdline, &no_connector, &mode)); KUNIT_EXPECT_TRUE(test, mode.specified); KUNIT_EXPECT_EQ(test, mode.xres, 720); KUNIT_EXPECT_EQ(test, mode.yres, 480); KUNIT_EXPECT_FALSE(test, mode.refresh_specified); KUNIT_EXPECT_FALSE(test, mode.bpp_specified); KUNIT_EXPECT_TRUE(test, mode.rb); KUNIT_EXPECT_TRUE(test, mode.cvt); KUNIT_EXPECT_FALSE(test, mode.interlace); KUNIT_EXPECT_FALSE(test, mode.margins); KUNIT_EXPECT_EQ(test, mode.force, DRM_FORCE_UNSPECIFIED);} static void drm_test_cmdline_res_rblank(struct kunit *test){ struct drm_cmdline_mode mode = { }; const char *cmdline = "720x480R"; KUNIT_ASSERT_TRUE(test, drm_mode_parse_command_line_for_connector(cmdline, &no_connector, &mode)); KUNIT_EXPECT_TRUE(test, mode.specified); KUNIT_EXPECT_EQ(test, mode.xres, 720); KUNIT_EXPECT_EQ(test, mode.yres, 480); KUNIT_EXPECT_FALSE(test, mode.refresh_specified); KUNIT_EXPECT_FALSE(test, mode.bpp_specified); KUNIT_EXPECT_TRUE(test, mode.rb); KUNIT_EXPECT_FALSE(test, mode.cvt); KUNIT_EXPECT_FALSE(test, mode.interlace); KUNIT_EXPECT_FALSE(test, mode.margins); KUNIT_EXPECT_EQ(test, mode.force, DRM_FORCE_UNSPECIFIED);} static void drm_test_cmdline_res_bpp(struct kunit *test){ struct drm_cmdline_mode mode = { }; const char *cmdline = "720x480-24"; KUNIT_ASSERT_TRUE(test, drm_mode_parse_command_line_for_connector(cmdline, &no_connector, &mode)); KUNIT_EXPECT_TRUE(test, mode.specified); KUNIT_EXPECT_EQ(test, mode.xres, 720); KUNIT_EXPECT_EQ(test, mode.yres, 480); KUNIT_EXPECT_FALSE(test, mode.refresh_specified); KUNIT_EXPECT_TRUE(test, mode.bpp_specified); KUNIT_EXPECT_EQ(test, mode.bpp, 24); KUNIT_EXPECT_FALSE(test, mode.rb); KUNIT_EXPECT_FALSE(test, mode.cvt); KUNIT_EXPECT_FALSE(test, mode.interlace); KUNIT_EXPECT_FALSE(test, mode.margins); KUNIT_EXPECT_EQ(test, mode.force, DRM_FORCE_UNSPECIFIED);} static void drm_test_cmdline_res_refresh(struct kunit *test){ struct drm_cmdline_mode mode = { }; const char *cmdline = "720x480@60"; KUNIT_ASSERT_TRUE(test, drm_mode_parse_command_line_for_connector(cmdline, &no_connector, &mode)); KUNIT_EXPECT_TRUE(test, mode.specified); KUNIT_EXPECT_EQ(test, mode.xres, 720); KUNIT_EXPECT_EQ(test, mode.yres, 480); KUNIT_EXPECT_TRUE(test, mode.refresh_specified); KUNIT_EXPECT_EQ(test, mode.refresh, 60); KUNIT_EXPECT_FALSE(test, mode.bpp_specified); KUNIT_EXPECT_FALSE(test, mode.rb); KUNIT_EXPECT_FALSE(test, mode.cvt); KUNIT_EXPECT_FALSE(test, mode.interlace); KUNIT_EXPECT_FALSE(test, mode.margins); KUNIT_EXPECT_EQ(test, mode.force, DRM_FORCE_UNSPECIFIED);} static void drm_test_cmdline_res_bpp_refresh(struct kunit *test){ struct drm_cmdline_mode mode = { }; const char *cmdline = "720x480-24@60"; KUNIT_ASSERT_TRUE(test, drm_mode_parse_command_line_for_connector(cmdline, &no_connector, &mode)); KUNIT_EXPECT_TRUE(test, mode.specified); KUNIT_EXPECT_EQ(test, mode.xres, 720); KUNIT_EXPECT_EQ(test, mode.yres, 480); KUNIT_EXPECT_TRUE(test, mode.refresh_specified); KUNIT_EXPECT_EQ(test, mode.refresh, 60); KUNIT_EXPECT_TRUE(test, mode.bpp_specified); KUNIT_EXPECT_EQ(test, mode.bpp, 24); KUNIT_EXPECT_FALSE(test, mode.rb); KUNIT_EXPECT_FALSE(test, mode.cvt); KUNIT_EXPECT_FALSE(test, mode.interlace); KUNIT_EXPECT_FALSE(test, mode.margins); KUNIT_EXPECT_EQ(test, mode.force, DRM_FORCE_UNSPECIFIED);} static void drm_test_cmdline_res_bpp_refresh_interlaced(struct kunit *test){ struct drm_cmdline_mode mode = { }; const char *cmdline = "720x480-24@60i"; KUNIT_ASSERT_TRUE(test, drm_mode_parse_command_line_for_connector(cmdline, &no_connector, &mode)); KUNIT_EXPECT_TRUE(test, mode.specified); KUNIT_EXPECT_EQ(test, mode.xres, 720); KUNIT_EXPECT_EQ(test, mode.yres, 480); KUNIT_EXPECT_TRUE(test, mode.refresh_specified); KUNIT_EXPECT_EQ(test, mode.refresh, 60); KUNIT_EXPECT_TRUE(test, mode.bpp_specified); KUNIT_EXPECT_EQ(test, mode.bpp, 24); KUNIT_EXPECT_FALSE(test, mode.rb); KUNIT_EXPECT_FALSE(test, mode.cvt); KUNIT_EXPECT_TRUE(test, mode.interlace); KUNIT_EXPECT_FALSE(test, mode.margins); KUNIT_EXPECT_EQ(test, mode.force, DRM_FORCE_UNSPECIFIED);} static void drm_test_cmdline_res_bpp_refresh_margins(struct kunit *test){ struct drm_cmdline_mode mode = { }; const char *cmdline = "720x480-24@60m"; KUNIT_ASSERT_TRUE(test, drm_mode_parse_command_line_for_connector(cmdline, &no_connector, &mode)); KUNIT_EXPECT_TRUE(test, mode.specified); KUNIT_EXPECT_EQ(test, mode.xres, 720); KUNIT_EXPECT_EQ(test, mode.yres, 480); KUNIT_EXPECT_TRUE(test, mode.refresh_specified); KUNIT_EXPECT_EQ(test, mode.refresh, 60); KUNIT_EXPECT_TRUE(test, mode.bpp_specified); KUNIT_EXPECT_EQ(test, mode.bpp, 24); KUNIT_EXPECT_FALSE(test, mode.rb); KUNIT_EXPECT_FALSE(test, mode.cvt); KUNIT_EXPECT_FALSE(test, mode.interlace); KUNIT_EXPECT_TRUE(test, mode.margins); KUNIT_EXPECT_EQ(test, mode.force, DRM_FORCE_UNSPECIFIED);} static void drm_test_cmdline_res_bpp_refresh_force_off(struct kunit *test){ struct drm_cmdline_mode mode = { }; const char *cmdline = "720x480-24@60d"; KUNIT_ASSERT_TRUE(test, drm_mode_parse_command_line_for_connector(cmdline, &no_connector, &mode)); KUNIT_EXPECT_TRUE(test, mode.specified); KUNIT_EXPECT_EQ(test, mode.xres, 720); KUNIT_EXPECT_EQ(test, mode.yres, 480); KUNIT_EXPECT_TRUE(test, mode.refresh_specified); KUNIT_EXPECT_EQ(test, mode.refresh, 60); KUNIT_EXPECT_TRUE(test, mode.bpp_specified); KUNIT_EXPECT_EQ(test, mode.bpp, 24); KUNIT_EXPECT_FALSE(test, mode.rb); KUNIT_EXPECT_FALSE(test, mode.cvt); KUNIT_EXPECT_FALSE(test, mode.interlace); KUNIT_EXPECT_FALSE(test, mode.margins); KUNIT_EXPECT_EQ(test, mode.force, DRM_FORCE_OFF);} static void drm_test_cmdline_res_bpp_refresh_force_on(struct kunit *test){ struct drm_cmdline_mode mode = { }; const char *cmdline = "720x480-24@60e"; KUNIT_ASSERT_TRUE(test, drm_mode_parse_command_line_for_connector(cmdline, &no_connector, &mode)); KUNIT_EXPECT_TRUE(test, mode.specified); KUNIT_EXPECT_EQ(test, mode.xres, 720); KUNIT_EXPECT_EQ(test, mode.yres, 480); KUNIT_EXPECT_TRUE(test, mode.refresh_specified); KUNIT_EXPECT_EQ(test, mode.refresh, 60); KUNIT_EXPECT_TRUE(test, mode.bpp_specified); KUNIT_EXPECT_EQ(test, mode.bpp, 24); KUNIT_EXPECT_FALSE(test, mode.rb); KUNIT_EXPECT_FALSE(test, mode.cvt); KUNIT_EXPECT_FALSE(test, mode.interlace); KUNIT_EXPECT_FALSE(test, mode.margins); KUNIT_EXPECT_EQ(test, mode.force, DRM_FORCE_ON);} static void drm_test_cmdline_res_bpp_refresh_force_on_analog(struct kunit *test){ struct drm_cmdline_mode mode = { }; const char *cmdline = "720x480-24@60D"; KUNIT_ASSERT_TRUE(test, drm_mode_parse_command_line_for_connector(cmdline, &no_connector, &mode)); KUNIT_EXPECT_TRUE(test, mode.specified); KUNIT_EXPECT_EQ(test, mode.xres, 720); KUNIT_EXPECT_EQ(test, mode.yres, 480); KUNIT_EXPECT_TRUE(test, mode.refresh_specified); KUNIT_EXPECT_EQ(test, mode.refresh, 60); KUNIT_EXPECT_TRUE(test, mode.bpp_specified); KUNIT_EXPECT_EQ(test, mode.bpp, 24); KUNIT_EXPECT_FALSE(test, mode.rb); KUNIT_EXPECT_FALSE(test, mode.cvt); KUNIT_EXPECT_FALSE(test, mode.interlace); KUNIT_EXPECT_FALSE(test, mode.margins); KUNIT_EXPECT_EQ(test, mode.force, DRM_FORCE_ON);} static void drm_test_cmdline_res_bpp_refresh_force_on_digital(struct kunit *test){ struct drm_cmdline_mode mode = { }; static const struct drm_connector connector = { .connector_type = DRM_MODE_CONNECTOR_DVII, }; const char *cmdline = "720x480-24@60D"; KUNIT_ASSERT_TRUE(test, drm_mode_parse_command_line_for_connector(cmdline, &connector, &mode)); KUNIT_EXPECT_TRUE(test, mode.specified); KUNIT_EXPECT_EQ(test, mode.xres, 720); KUNIT_EXPECT_EQ(test, mode.yres, 480); KUNIT_EXPECT_TRUE(test, mode.refresh_specified); KUNIT_EXPECT_EQ(test, mode.refresh, 60); KUNIT_EXPECT_TRUE(test, mode.bpp_specified); KUNIT_EXPECT_EQ(test, mode.bpp, 24); KUNIT_EXPECT_FALSE(test, mode.rb); KUNIT_EXPECT_FALSE(test, mode.cvt); KUNIT_EXPECT_FALSE(test, mode.interlace); KUNIT_EXPECT_FALSE(test, mode.margins); KUNIT_EXPECT_EQ(test, mode.force, DRM_FORCE_ON_DIGITAL);} static void drm_test_cmdline_res_bpp_refresh_interlaced_margins_force_on(struct kunit *test){ struct drm_cmdline_mode mode = { }; const char *cmdline = "720x480-24@60ime"; KUNIT_EXPECT_TRUE(test, drm_mode_parse_command_line_for_connector(cmdline, &no_connector, &mode)); KUNIT_EXPECT_TRUE(test, mode.specified); KUNIT_EXPECT_EQ(test, mode.xres, 720); KUNIT_EXPECT_EQ(test, mode.yres, 480); KUNIT_EXPECT_TRUE(test, mode.refresh_specified); KUNIT_EXPECT_EQ(test, mode.refresh, 60); KUNIT_EXPECT_TRUE(test, mode.bpp_specified); KUNIT_EXPECT_EQ(test, mode.bpp, 24); KUNIT_EXPECT_FALSE(test, mode.rb); KUNIT_EXPECT_FALSE(test, mode.cvt); KUNIT_EXPECT_TRUE(test, mode.interlace); KUNIT_EXPECT_TRUE(test, mode.margins); KUNIT_EXPECT_EQ(test, mode.force, DRM_FORCE_ON);} static void drm_test_cmdline_res_margins_force_on(struct kunit *test){ struct drm_cmdline_mode mode = { }; const char *cmdline = "720x480me"; KUNIT_ASSERT_TRUE(test, drm_mode_parse_command_line_for_connector(cmdline, &no_connector, &mode)); KUNIT_EXPECT_TRUE(test, mode.specified); KUNIT_EXPECT_EQ(test, mode.xres, 720); KUNIT_EXPECT_EQ(test, mode.yres, 480); KUNIT_EXPECT_FALSE(test, mode.refresh_specified); KUNIT_EXPECT_FALSE(test, mode.bpp_specified); KUNIT_EXPECT_FALSE(test, mode.rb); KUNIT_EXPECT_FALSE(test, mode.cvt); KUNIT_EXPECT_FALSE(test, mode.interlace); KUNIT_EXPECT_TRUE(test, mode.margins); KUNIT_EXPECT_EQ(test, mode.force, DRM_FORCE_ON);} static void drm_test_cmdline_res_vesa_margins(struct kunit *test){ struct drm_cmdline_mode mode = { }; const char *cmdline = "720x480Mm"; KUNIT_ASSERT_TRUE(test, drm_mode_parse_command_line_for_connector(cmdline, &no_connector, &mode)); KUNIT_EXPECT_TRUE(test, mode.specified); KUNIT_EXPECT_EQ(test, mode.xres, 720); KUNIT_EXPECT_EQ(test, mode.yres, 480); KUNIT_EXPECT_FALSE(test, mode.refresh_specified); KUNIT_EXPECT_FALSE(test, mode.bpp_specified); KUNIT_EXPECT_FALSE(test, mode.rb); KUNIT_EXPECT_TRUE(test, mode.cvt); KUNIT_EXPECT_FALSE(test, mode.interlace); KUNIT_EXPECT_TRUE(test, mode.margins); KUNIT_EXPECT_EQ(test, mode.force, DRM_FORCE_UNSPECIFIED);} static void drm_test_cmdline_name(struct kunit *test){ struct drm_cmdline_mode mode = { }; const char *cmdline = "NTSC"; KUNIT_ASSERT_TRUE(test, drm_mode_parse_command_line_for_connector(cmdline, &no_connector, &mode)); KUNIT_EXPECT_STREQ(test, mode.name, "NTSC"); KUNIT_EXPECT_FALSE(test, mode.refresh_specified); KUNIT_EXPECT_FALSE(test, mode.bpp_specified);} static void drm_test_cmdline_name_bpp(struct kunit *test){ struct drm_cmdline_mode mode = { };Lines 1–500 of 1079. Load more
// SPDX-License-Identifier: GPL-2.0 /* * Copyright (c) 2019 Bootlin * Copyright (c) 2022 Maíra Canal <mairacanal@riseup.net> */ #include <kunit/test.h> #include <drm/drm_connector.h> #include <drm/drm_kunit_helpers.h> #include <drm/drm_modes.h> static const struct drm_connector no_connector = {}; static void drm_test_cmdline_force_e_only(struct kunit *test) { struct drm_cmdline_mode mode = { }; const char *cmdline = "e"; KUNIT_ASSERT_TRUE(test, drm_mode_parse_command_line_for_connector(cmdline, &no_connector, &mode)); KUNIT_EXPECT_FALSE(test, mode.specified); KUNIT_EXPECT_FALSE(test, mode.refresh_specified); KUNIT_EXPECT_FALSE(test, mode.bpp_specified); KUNIT_EXPECT_FALSE(test, mode.rb); KUNIT_EXPECT_FALSE(test, mode.cvt); KUNIT_EXPECT_FALSE(test, mode.interlace); KUNIT_EXPECT_FALSE(test, mode.margins); KUNIT_EXPECT_EQ(test, mode.force, DRM_FORCE_ON); } static void drm_test_cmdline_force_D_only_not_digital(struct kunit *test) { struct drm_cmdline_mode mode = { }; const char *cmdline = "D"; KUNIT_ASSERT_TRUE(test, drm_mode_parse_command_line_for_connector(cmdline, &no_connector, &mode)); KUNIT_EXPECT_FALSE(test, mode.specified); KUNIT_EXPECT_FALSE(test, mode.refresh_specified); KUNIT_EXPECT_FALSE(test, mode.bpp_specified); KUNIT_EXPECT_FALSE(test, mode.rb); KUNIT_EXPECT_FALSE(test, mode.cvt); KUNIT_EXPECT_FALSE(test, mode.interlace); KUNIT_EXPECT_FALSE(test, mode.margins); KUNIT_EXPECT_EQ(test, mode.force, DRM_FORCE_ON); } static const struct drm_connector connector_hdmi = { .connector_type = DRM_MODE_CONNECTOR_HDMIB, }; static void drm_test_cmdline_force_D_only_hdmi(struct kunit *test) { struct drm_cmdline_mode mode = { }; const char *cmdline = "D"; KUNIT_ASSERT_TRUE(test, drm_mode_parse_command_line_for_connector(cmdline, &connector_hdmi, &mode)); KUNIT_EXPECT_FALSE(test, mode.specified); KUNIT_EXPECT_FALSE(test, mode.refresh_specified); KUNIT_EXPECT_FALSE(test, mode.bpp_specified); KUNIT_EXPECT_FALSE(test, mode.rb); KUNIT_EXPECT_FALSE(test, mode.cvt); KUNIT_EXPECT_FALSE(test, mode.interlace); KUNIT_EXPECT_FALSE(test, mode.margins); KUNIT_EXPECT_EQ(test, mode.force, DRM_FORCE_ON_DIGITAL); } static const struct drm_connector connector_dvi = { .connector_type = DRM_MODE_CONNECTOR_DVII, }; static void drm_test_cmdline_force_D_only_dvi(struct kunit *test) { struct drm_cmdline_mode mode = { }; const char *cmdline = "D"; KUNIT_ASSERT_TRUE(test, drm_mode_parse_command_line_for_connector(cmdline, &connector_dvi, &mode)); KUNIT_EXPECT_FALSE(test, mode.specified); KUNIT_EXPECT_FALSE(test, mode.refresh_specified); KUNIT_EXPECT_FALSE(test, mode.bpp_specified); KUNIT_EXPECT_FALSE(test, mode.rb); KUNIT_EXPECT_FALSE(test, mode.cvt); KUNIT_EXPECT_FALSE(test, mode.interlace); KUNIT_EXPECT_FALSE(test, mode.margins); KUNIT_EXPECT_EQ(test, mode.force, DRM_FORCE_ON_DIGITAL); } static void drm_test_cmdline_force_d_only(struct kunit *test) { struct drm_cmdline_mode mode = { }; const char *cmdline = "d"; KUNIT_ASSERT_TRUE(test, drm_mode_parse_command_line_for_connector(cmdline, &no_connector, &mode)); KUNIT_EXPECT_FALSE(test, mode.specified); KUNIT_EXPECT_FALSE(test, mode.refresh_specified); KUNIT_EXPECT_FALSE(test, mode.bpp_specified); KUNIT_EXPECT_FALSE(test, mode.rb); KUNIT_EXPECT_FALSE(test, mode.cvt); KUNIT_EXPECT_FALSE(test, mode.interlace); KUNIT_EXPECT_FALSE(test, mode.margins); KUNIT_EXPECT_EQ(test, mode.force, DRM_FORCE_OFF); } static void drm_test_cmdline_res(struct kunit *test) { struct drm_cmdline_mode mode = { }; const char *cmdline = "720x480"; KUNIT_ASSERT_TRUE(test, drm_mode_parse_command_line_for_connector(cmdline, &no_connector, &mode)); KUNIT_EXPECT_TRUE(test, mode.specified); KUNIT_EXPECT_EQ(test, mode.xres, 720); KUNIT_EXPECT_EQ(test, mode.yres, 480); KUNIT_EXPECT_FALSE(test, mode.refresh_specified); KUNIT_EXPECT_FALSE(test, mode.bpp_specified); KUNIT_EXPECT_FALSE(test, mode.rb); KUNIT_EXPECT_FALSE(test, mode.cvt); KUNIT_EXPECT_FALSE(test, mode.interlace); KUNIT_EXPECT_FALSE(test, mode.margins); KUNIT_EXPECT_EQ(test, mode.force, DRM_FORCE_UNSPECIFIED); } static void drm_test_cmdline_res_vesa(struct kunit *test) { struct drm_cmdline_mode mode = { }; const char *cmdline = "720x480M"; KUNIT_ASSERT_TRUE(test, drm_mode_parse_command_line_for_connector(cmdline, &no_connector, &mode)); KUNIT_EXPECT_TRUE(test, mode.specified); KUNIT_EXPECT_EQ(test, mode.xres, 720); KUNIT_EXPECT_EQ(test, mode.yres, 480); KUNIT_EXPECT_FALSE(test, mode.refresh_specified); KUNIT_EXPECT_FALSE(test, mode.bpp_specified); KUNIT_EXPECT_FALSE(test, mode.rb); KUNIT_EXPECT_TRUE(test, mode.cvt); KUNIT_EXPECT_FALSE(test, mode.interlace); KUNIT_EXPECT_FALSE(test, mode.margins); KUNIT_EXPECT_EQ(test, mode.force, DRM_FORCE_UNSPECIFIED); } static void drm_test_cmdline_res_vesa_rblank(struct kunit *test) { struct drm_cmdline_mode mode = { }; const char *cmdline = "720x480MR"; KUNIT_ASSERT_TRUE(test, drm_mode_parse_command_line_for_connector(cmdline, &no_connector, &mode)); KUNIT_EXPECT_TRUE(test, mode.specified); KUNIT_EXPECT_EQ(test, mode.xres, 720); KUNIT_EXPECT_EQ(test, mode.yres, 480); KUNIT_EXPECT_FALSE(test, mode.refresh_specified); KUNIT_EXPECT_FALSE(test, mode.bpp_specified); KUNIT_EXPECT_TRUE(test, mode.rb); KUNIT_EXPECT_TRUE(test, mode.cvt); KUNIT_EXPECT_FALSE(test, mode.interlace); KUNIT_EXPECT_FALSE(test, mode.margins); KUNIT_EXPECT_EQ(test, mode.force, DRM_FORCE_UNSPECIFIED); } static void drm_test_cmdline_res_rblank(struct kunit *test) { struct drm_cmdline_mode mode = { }; const char *cmdline = "720x480R"; KUNIT_ASSERT_TRUE(test, drm_mode_parse_command_line_for_connector(cmdline, &no_connector, &mode)); KUNIT_EXPECT_TRUE(test, mode.specified); KUNIT_EXPECT_EQ(test, mode.xres, 720); KUNIT_EXPECT_EQ(test, mode.yres, 480); KUNIT_EXPECT_FALSE(test, mode.refresh_specified); KUNIT_EXPECT_FALSE(test, mode.bpp_specified); KUNIT_EXPECT_TRUE(test, mode.rb); KUNIT_EXPECT_FALSE(test, mode.cvt); KUNIT_EXPECT_FALSE(test, mode.interlace); KUNIT_EXPECT_FALSE(test, mode.margins); KUNIT_EXPECT_EQ(test, mode.force, DRM_FORCE_UNSPECIFIED); } static void drm_test_cmdline_res_bpp(struct kunit *test) { struct drm_cmdline_mode mode = { }; const char *cmdline = "720x480-24"; KUNIT_ASSERT_TRUE(test, drm_mode_parse_command_line_for_connector(cmdline, &no_connector, &mode)); KUNIT_EXPECT_TRUE(test, mode.specified); KUNIT_EXPECT_EQ(test, mode.xres, 720); KUNIT_EXPECT_EQ(test, mode.yres, 480); KUNIT_EXPECT_FALSE(test, mode.refresh_specified); KUNIT_EXPECT_TRUE(test, mode.bpp_specified); KUNIT_EXPECT_EQ(test, mode.bpp, 24); KUNIT_EXPECT_FALSE(test, mode.rb); KUNIT_EXPECT_FALSE(test, mode.cvt); KUNIT_EXPECT_FALSE(test, mode.interlace); KUNIT_EXPECT_FALSE(test, mode.margins); KUNIT_EXPECT_EQ(test, mode.force, DRM_FORCE_UNSPECIFIED); } static void drm_test_cmdline_res_refresh(struct kunit *test) { struct drm_cmdline_mode mode = { }; const char *cmdline = "720x480@60"; KUNIT_ASSERT_TRUE(test, drm_mode_parse_command_line_for_connector(cmdline, &no_connector, &mode)); KUNIT_EXPECT_TRUE(test, mode.specified); KUNIT_EXPECT_EQ(test, mode.xres, 720); KUNIT_EXPECT_EQ(test, mode.yres, 480); KUNIT_EXPECT_TRUE(test, mode.refresh_specified); KUNIT_EXPECT_EQ(test, mode.refresh, 60); KUNIT_EXPECT_FALSE(test, mode.bpp_specified); KUNIT_EXPECT_FALSE(test, mode.rb); KUNIT_EXPECT_FALSE(test, mode.cvt); KUNIT_EXPECT_FALSE(test, mode.interlace); KUNIT_EXPECT_FALSE(test, mode.margins); KUNIT_EXPECT_EQ(test, mode.force, DRM_FORCE_UNSPECIFIED); } static void drm_test_cmdline_res_bpp_refresh(struct kunit *test) { struct drm_cmdline_mode mode = { }; const char *cmdline = "720x480-24@60"; KUNIT_ASSERT_TRUE(test, drm_mode_parse_command_line_for_connector(cmdline, &no_connector, &mode)); KUNIT_EXPECT_TRUE(test, mode.specified); KUNIT_EXPECT_EQ(test, mode.xres, 720); KUNIT_EXPECT_EQ(test, mode.yres, 480); KUNIT_EXPECT_TRUE(test, mode.refresh_specified); KUNIT_EXPECT_EQ(test, mode.refresh, 60); KUNIT_EXPECT_TRUE(test, mode.bpp_specified); KUNIT_EXPECT_EQ(test, mode.bpp, 24); KUNIT_EXPECT_FALSE(test, mode.rb); KUNIT_EXPECT_FALSE(test, mode.cvt); KUNIT_EXPECT_FALSE(test, mode.interlace); KUNIT_EXPECT_FALSE(test, mode.margins); KUNIT_EXPECT_EQ(test, mode.force, DRM_FORCE_UNSPECIFIED); } static void drm_test_cmdline_res_bpp_refresh_interlaced(struct kunit *test) { struct drm_cmdline_mode mode = { }; const char *cmdline = "720x480-24@60i"; KUNIT_ASSERT_TRUE(test, drm_mode_parse_command_line_for_connector(cmdline, &no_connector, &mode)); KUNIT_EXPECT_TRUE(test, mode.specified); KUNIT_EXPECT_EQ(test, mode.xres, 720); KUNIT_EXPECT_EQ(test, mode.yres, 480); KUNIT_EXPECT_TRUE(test, mode.refresh_specified); KUNIT_EXPECT_EQ(test, mode.refresh, 60); KUNIT_EXPECT_TRUE(test, mode.bpp_specified); KUNIT_EXPECT_EQ(test, mode.bpp, 24); KUNIT_EXPECT_FALSE(test, mode.rb); KUNIT_EXPECT_FALSE(test, mode.cvt); KUNIT_EXPECT_TRUE(test, mode.interlace); KUNIT_EXPECT_FALSE(test, mode.margins); KUNIT_EXPECT_EQ(test, mode.force, DRM_FORCE_UNSPECIFIED); } static void drm_test_cmdline_res_bpp_refresh_margins(struct kunit *test) { struct drm_cmdline_mode mode = { }; const char *cmdline = "720x480-24@60m"; KUNIT_ASSERT_TRUE(test, drm_mode_parse_command_line_for_connector(cmdline, &no_connector, &mode)); KUNIT_EXPECT_TRUE(test, mode.specified); KUNIT_EXPECT_EQ(test, mode.xres, 720); KUNIT_EXPECT_EQ(test, mode.yres, 480); KUNIT_EXPECT_TRUE(test, mode.refresh_specified); KUNIT_EXPECT_EQ(test, mode.refresh, 60); KUNIT_EXPECT_TRUE(test, mode.bpp_specified); KUNIT_EXPECT_EQ(test, mode.bpp, 24); KUNIT_EXPECT_FALSE(test, mode.rb); KUNIT_EXPECT_FALSE(test, mode.cvt); KUNIT_EXPECT_FALSE(test, mode.interlace); KUNIT_EXPECT_TRUE(test, mode.margins); KUNIT_EXPECT_EQ(test, mode.force, DRM_FORCE_UNSPECIFIED); } static void drm_test_cmdline_res_bpp_refresh_force_off(struct kunit *test) { struct drm_cmdline_mode mode = { }; const char *cmdline = "720x480-24@60d"; KUNIT_ASSERT_TRUE(test, drm_mode_parse_command_line_for_connector(cmdline, &no_connector, &mode)); KUNIT_EXPECT_TRUE(test, mode.specified); KUNIT_EXPECT_EQ(test, mode.xres, 720); KUNIT_EXPECT_EQ(test, mode.yres, 480); KUNIT_EXPECT_TRUE(test, mode.refresh_specified); KUNIT_EXPECT_EQ(test, mode.refresh, 60); KUNIT_EXPECT_TRUE(test, mode.bpp_specified); KUNIT_EXPECT_EQ(test, mode.bpp, 24); KUNIT_EXPECT_FALSE(test, mode.rb); KUNIT_EXPECT_FALSE(test, mode.cvt); KUNIT_EXPECT_FALSE(test, mode.interlace); KUNIT_EXPECT_FALSE(test, mode.margins); KUNIT_EXPECT_EQ(test, mode.force, DRM_FORCE_OFF); } static void drm_test_cmdline_res_bpp_refresh_force_on(struct kunit *test) { struct drm_cmdline_mode mode = { }; const char *cmdline = "720x480-24@60e"; KUNIT_ASSERT_TRUE(test, drm_mode_parse_command_line_for_connector(cmdline, &no_connector, &mode)); KUNIT_EXPECT_TRUE(test, mode.specified); KUNIT_EXPECT_EQ(test, mode.xres, 720); KUNIT_EXPECT_EQ(test, mode.yres, 480); KUNIT_EXPECT_TRUE(test, mode.refresh_specified); KUNIT_EXPECT_EQ(test, mode.refresh, 60); KUNIT_EXPECT_TRUE(test, mode.bpp_specified); KUNIT_EXPECT_EQ(test, mode.bpp, 24); KUNIT_EXPECT_FALSE(test, mode.rb); KUNIT_EXPECT_FALSE(test, mode.cvt); KUNIT_EXPECT_FALSE(test, mode.interlace); KUNIT_EXPECT_FALSE(test, mode.margins); KUNIT_EXPECT_EQ(test, mode.force, DRM_FORCE_ON); } static void drm_test_cmdline_res_bpp_refresh_force_on_analog(struct kunit *test) { struct drm_cmdline_mode mode = { }; const char *cmdline = "720x480-24@60D"; KUNIT_ASSERT_TRUE(test, drm_mode_parse_command_line_for_connector(cmdline, &no_connector, &mode)); KUNIT_EXPECT_TRUE(test, mode.specified); KUNIT_EXPECT_EQ(test, mode.xres, 720); KUNIT_EXPECT_EQ(test, mode.yres, 480); KUNIT_EXPECT_TRUE(test, mode.refresh_specified); KUNIT_EXPECT_EQ(test, mode.refresh, 60); KUNIT_EXPECT_TRUE(test, mode.bpp_specified); KUNIT_EXPECT_EQ(test, mode.bpp, 24); KUNIT_EXPECT_FALSE(test, mode.rb); KUNIT_EXPECT_FALSE(test, mode.cvt); KUNIT_EXPECT_FALSE(test, mode.interlace); KUNIT_EXPECT_FALSE(test, mode.margins); KUNIT_EXPECT_EQ(test, mode.force, DRM_FORCE_ON); } static void drm_test_cmdline_res_bpp_refresh_force_on_digital(struct kunit *test) { struct drm_cmdline_mode mode = { }; static const struct drm_connector connector = { .connector_type = DRM_MODE_CONNECTOR_DVII, }; const char *cmdline = "720x480-24@60D"; KUNIT_ASSERT_TRUE(test, drm_mode_parse_command_line_for_connector(cmdline, &connector, &mode)); KUNIT_EXPECT_TRUE(test, mode.specified); KUNIT_EXPECT_EQ(test, mode.xres, 720); KUNIT_EXPECT_EQ(test, mode.yres, 480); KUNIT_EXPECT_TRUE(test, mode.refresh_specified); KUNIT_EXPECT_EQ(test, mode.refresh, 60); KUNIT_EXPECT_TRUE(test, mode.bpp_specified); KUNIT_EXPECT_EQ(test, mode.bpp, 24); KUNIT_EXPECT_FALSE(test, mode.rb); KUNIT_EXPECT_FALSE(test, mode.cvt); KUNIT_EXPECT_FALSE(test, mode.interlace); KUNIT_EXPECT_FALSE(test, mode.margins); KUNIT_EXPECT_EQ(test, mode.force, DRM_FORCE_ON_DIGITAL); } static void drm_test_cmdline_res_bpp_refresh_interlaced_margins_force_on(struct kunit *test) { struct drm_cmdline_mode mode = { }; const char *cmdline = "720x480-24@60ime"; KUNIT_EXPECT_TRUE(test, drm_mode_parse_command_line_for_connector(cmdline, &no_connector, &mode)); KUNIT_EXPECT_TRUE(test, mode.specified); KUNIT_EXPECT_EQ(test, mode.xres, 720); KUNIT_EXPECT_EQ(test, mode.yres, 480); KUNIT_EXPECT_TRUE(test, mode.refresh_specified); KUNIT_EXPECT_EQ(test, mode.refresh, 60); KUNIT_EXPECT_TRUE(test, mode.bpp_specified); KUNIT_EXPECT_EQ(test, mode.bpp, 24); KUNIT_EXPECT_FALSE(test, mode.rb); KUNIT_EXPECT_FALSE(test, mode.cvt); KUNIT_EXPECT_TRUE(test, mode.interlace); KUNIT_EXPECT_TRUE(test, mode.margins); KUNIT_EXPECT_EQ(test, mode.force, DRM_FORCE_ON); } static void drm_test_cmdline_res_margins_force_on(struct kunit *test) { struct drm_cmdline_mode mode = { }; const char *cmdline = "720x480me"; KUNIT_ASSERT_TRUE(test, drm_mode_parse_command_line_for_connector(cmdline, &no_connector, &mode)); KUNIT_EXPECT_TRUE(test, mode.specified); KUNIT_EXPECT_EQ(test, mode.xres, 720); KUNIT_EXPECT_EQ(test, mode.yres, 480); KUNIT_EXPECT_FALSE(test, mode.refresh_specified); KUNIT_EXPECT_FALSE(test, mode.bpp_specified); KUNIT_EXPECT_FALSE(test, mode.rb); KUNIT_EXPECT_FALSE(test, mode.cvt); KUNIT_EXPECT_FALSE(test, mode.interlace); KUNIT_EXPECT_TRUE(test, mode.margins); KUNIT_EXPECT_EQ(test, mode.force, DRM_FORCE_ON); } static void drm_test_cmdline_res_vesa_margins(struct kunit *test) { struct drm_cmdline_mode mode = { }; const char *cmdline = "720x480Mm"; KUNIT_ASSERT_TRUE(test, drm_mode_parse_command_line_for_connector(cmdline, &no_connector, &mode)); KUNIT_EXPECT_TRUE(test, mode.specified); KUNIT_EXPECT_EQ(test, mode.xres, 720); KUNIT_EXPECT_EQ(test, mode.yres, 480); KUNIT_EXPECT_FALSE(test, mode.refresh_specified); KUNIT_EXPECT_FALSE(test, mode.bpp_specified); KUNIT_EXPECT_FALSE(test, mode.rb); KUNIT_EXPECT_TRUE(test, mode.cvt); KUNIT_EXPECT_FALSE(test, mode.interlace); KUNIT_EXPECT_TRUE(test, mode.margins); KUNIT_EXPECT_EQ(test, mode.force, DRM_FORCE_UNSPECIFIED); } static void drm_test_cmdline_name(struct kunit *test) { struct drm_cmdline_mode mode = { }; const char *cmdline = "NTSC"; KUNIT_ASSERT_TRUE(test, drm_mode_parse_command_line_for_connector(cmdline, &no_connector, &mode)); KUNIT_EXPECT_STREQ(test, mode.name, "NTSC"); KUNIT_EXPECT_FALSE(test, mode.refresh_specified); KUNIT_EXPECT_FALSE(test, mode.bpp_specified); } static void drm_test_cmdline_name_bpp(struct kunit *test) { struct drm_cmdline_mode mode = { };