brintos

brintos / linux-shallow public Read only

0
0
Text · 33.7 KiB · 59c8408 Raw
1072 lines · c
1// SPDX-License-Identifier: GPL-2.02/*3 * Copyright (c) 2019 Bootlin4 * Copyright (c) 2022 Maíra Canal <mairacanal@riseup.net>5 */6 7#include <kunit/test.h>8 9#include <drm/drm_connector.h>10#include <drm/drm_modes.h>11 12static const struct drm_connector no_connector = {};13 14static void drm_test_cmdline_force_e_only(struct kunit *test)15{16	struct drm_cmdline_mode mode = { };17	const char *cmdline = "e";18 19	KUNIT_ASSERT_TRUE(test, drm_mode_parse_command_line_for_connector(cmdline,20									  &no_connector, &mode));21	KUNIT_EXPECT_FALSE(test, mode.specified);22	KUNIT_EXPECT_FALSE(test, mode.refresh_specified);23	KUNIT_EXPECT_FALSE(test, mode.bpp_specified);24 25	KUNIT_EXPECT_FALSE(test, mode.rb);26	KUNIT_EXPECT_FALSE(test, mode.cvt);27	KUNIT_EXPECT_FALSE(test, mode.interlace);28	KUNIT_EXPECT_FALSE(test, mode.margins);29	KUNIT_EXPECT_EQ(test, mode.force, DRM_FORCE_ON);30}31 32static void drm_test_cmdline_force_D_only_not_digital(struct kunit *test)33{34	struct drm_cmdline_mode mode = { };35	const char *cmdline = "D";36 37	KUNIT_ASSERT_TRUE(test, drm_mode_parse_command_line_for_connector(cmdline,38									  &no_connector, &mode));39	KUNIT_EXPECT_FALSE(test, mode.specified);40	KUNIT_EXPECT_FALSE(test, mode.refresh_specified);41	KUNIT_EXPECT_FALSE(test, mode.bpp_specified);42 43	KUNIT_EXPECT_FALSE(test, mode.rb);44	KUNIT_EXPECT_FALSE(test, mode.cvt);45	KUNIT_EXPECT_FALSE(test, mode.interlace);46	KUNIT_EXPECT_FALSE(test, mode.margins);47	KUNIT_EXPECT_EQ(test, mode.force, DRM_FORCE_ON);48}49 50static const struct drm_connector connector_hdmi = {51	.connector_type	= DRM_MODE_CONNECTOR_HDMIB,52};53 54static void drm_test_cmdline_force_D_only_hdmi(struct kunit *test)55{56	struct drm_cmdline_mode mode = { };57	const char *cmdline = "D";58 59	KUNIT_ASSERT_TRUE(test, drm_mode_parse_command_line_for_connector(cmdline,60									  &connector_hdmi, &mode));61	KUNIT_EXPECT_FALSE(test, mode.specified);62	KUNIT_EXPECT_FALSE(test, mode.refresh_specified);63	KUNIT_EXPECT_FALSE(test, mode.bpp_specified);64 65	KUNIT_EXPECT_FALSE(test, mode.rb);66	KUNIT_EXPECT_FALSE(test, mode.cvt);67	KUNIT_EXPECT_FALSE(test, mode.interlace);68	KUNIT_EXPECT_FALSE(test, mode.margins);69	KUNIT_EXPECT_EQ(test, mode.force, DRM_FORCE_ON_DIGITAL);70}71 72static const struct drm_connector connector_dvi = {73	.connector_type	= DRM_MODE_CONNECTOR_DVII,74};75 76static void drm_test_cmdline_force_D_only_dvi(struct kunit *test)77{78	struct drm_cmdline_mode mode = { };79	const char *cmdline = "D";80 81	KUNIT_ASSERT_TRUE(test, drm_mode_parse_command_line_for_connector(cmdline,82									  &connector_dvi, &mode));83	KUNIT_EXPECT_FALSE(test, mode.specified);84	KUNIT_EXPECT_FALSE(test, mode.refresh_specified);85	KUNIT_EXPECT_FALSE(test, mode.bpp_specified);86 87	KUNIT_EXPECT_FALSE(test, mode.rb);88	KUNIT_EXPECT_FALSE(test, mode.cvt);89	KUNIT_EXPECT_FALSE(test, mode.interlace);90	KUNIT_EXPECT_FALSE(test, mode.margins);91	KUNIT_EXPECT_EQ(test, mode.force, DRM_FORCE_ON_DIGITAL);92}93 94static void drm_test_cmdline_force_d_only(struct kunit *test)95{96	struct drm_cmdline_mode mode = { };97	const char *cmdline = "d";98 99	KUNIT_ASSERT_TRUE(test, drm_mode_parse_command_line_for_connector(cmdline,100									  &no_connector, &mode));101	KUNIT_EXPECT_FALSE(test, mode.specified);102	KUNIT_EXPECT_FALSE(test, mode.refresh_specified);103	KUNIT_EXPECT_FALSE(test, mode.bpp_specified);104 105	KUNIT_EXPECT_FALSE(test, mode.rb);106	KUNIT_EXPECT_FALSE(test, mode.cvt);107	KUNIT_EXPECT_FALSE(test, mode.interlace);108	KUNIT_EXPECT_FALSE(test, mode.margins);109	KUNIT_EXPECT_EQ(test, mode.force, DRM_FORCE_OFF);110}111 112static void drm_test_cmdline_res(struct kunit *test)113{114	struct drm_cmdline_mode mode = { };115	const char *cmdline = "720x480";116 117	KUNIT_ASSERT_TRUE(test, drm_mode_parse_command_line_for_connector(cmdline,118									  &no_connector, &mode));119	KUNIT_EXPECT_TRUE(test, mode.specified);120	KUNIT_EXPECT_EQ(test, mode.xres, 720);121	KUNIT_EXPECT_EQ(test, mode.yres, 480);122 123	KUNIT_EXPECT_FALSE(test, mode.refresh_specified);124 125	KUNIT_EXPECT_FALSE(test, mode.bpp_specified);126 127	KUNIT_EXPECT_FALSE(test, mode.rb);128	KUNIT_EXPECT_FALSE(test, mode.cvt);129	KUNIT_EXPECT_FALSE(test, mode.interlace);130	KUNIT_EXPECT_FALSE(test, mode.margins);131	KUNIT_EXPECT_EQ(test, mode.force, DRM_FORCE_UNSPECIFIED);132}133 134static void drm_test_cmdline_res_vesa(struct kunit *test)135{136	struct drm_cmdline_mode mode = { };137	const char *cmdline = "720x480M";138 139	KUNIT_ASSERT_TRUE(test, drm_mode_parse_command_line_for_connector(cmdline,140									  &no_connector, &mode));141	KUNIT_EXPECT_TRUE(test, mode.specified);142	KUNIT_EXPECT_EQ(test, mode.xres, 720);143	KUNIT_EXPECT_EQ(test, mode.yres, 480);144 145	KUNIT_EXPECT_FALSE(test, mode.refresh_specified);146 147	KUNIT_EXPECT_FALSE(test, mode.bpp_specified);148 149	KUNIT_EXPECT_FALSE(test, mode.rb);150	KUNIT_EXPECT_TRUE(test, mode.cvt);151	KUNIT_EXPECT_FALSE(test, mode.interlace);152	KUNIT_EXPECT_FALSE(test, mode.margins);153	KUNIT_EXPECT_EQ(test, mode.force, DRM_FORCE_UNSPECIFIED);154}155 156static void drm_test_cmdline_res_vesa_rblank(struct kunit *test)157{158	struct drm_cmdline_mode mode = { };159	const char *cmdline = "720x480MR";160 161	KUNIT_ASSERT_TRUE(test, drm_mode_parse_command_line_for_connector(cmdline,162									  &no_connector, &mode));163	KUNIT_EXPECT_TRUE(test, mode.specified);164	KUNIT_EXPECT_EQ(test, mode.xres, 720);165	KUNIT_EXPECT_EQ(test, mode.yres, 480);166 167	KUNIT_EXPECT_FALSE(test, mode.refresh_specified);168 169	KUNIT_EXPECT_FALSE(test, mode.bpp_specified);170 171	KUNIT_EXPECT_TRUE(test, mode.rb);172	KUNIT_EXPECT_TRUE(test, mode.cvt);173	KUNIT_EXPECT_FALSE(test, mode.interlace);174	KUNIT_EXPECT_FALSE(test, mode.margins);175	KUNIT_EXPECT_EQ(test, mode.force, DRM_FORCE_UNSPECIFIED);176}177 178static void drm_test_cmdline_res_rblank(struct kunit *test)179{180	struct drm_cmdline_mode mode = { };181	const char *cmdline = "720x480R";182 183	KUNIT_ASSERT_TRUE(test, drm_mode_parse_command_line_for_connector(cmdline,184									  &no_connector, &mode));185	KUNIT_EXPECT_TRUE(test, mode.specified);186	KUNIT_EXPECT_EQ(test, mode.xres, 720);187	KUNIT_EXPECT_EQ(test, mode.yres, 480);188 189	KUNIT_EXPECT_FALSE(test, mode.refresh_specified);190 191	KUNIT_EXPECT_FALSE(test, mode.bpp_specified);192 193	KUNIT_EXPECT_TRUE(test, mode.rb);194	KUNIT_EXPECT_FALSE(test, mode.cvt);195	KUNIT_EXPECT_FALSE(test, mode.interlace);196	KUNIT_EXPECT_FALSE(test, mode.margins);197	KUNIT_EXPECT_EQ(test, mode.force, DRM_FORCE_UNSPECIFIED);198}199 200static void drm_test_cmdline_res_bpp(struct kunit *test)201{202	struct drm_cmdline_mode mode = { };203	const char *cmdline = "720x480-24";204 205	KUNIT_ASSERT_TRUE(test, drm_mode_parse_command_line_for_connector(cmdline,206									  &no_connector, &mode));207	KUNIT_EXPECT_TRUE(test, mode.specified);208	KUNIT_EXPECT_EQ(test, mode.xres, 720);209	KUNIT_EXPECT_EQ(test, mode.yres, 480);210 211	KUNIT_EXPECT_FALSE(test, mode.refresh_specified);212 213	KUNIT_EXPECT_TRUE(test, mode.bpp_specified);214	KUNIT_EXPECT_EQ(test, mode.bpp, 24);215 216	KUNIT_EXPECT_FALSE(test, mode.rb);217	KUNIT_EXPECT_FALSE(test, mode.cvt);218	KUNIT_EXPECT_FALSE(test, mode.interlace);219	KUNIT_EXPECT_FALSE(test, mode.margins);220	KUNIT_EXPECT_EQ(test, mode.force, DRM_FORCE_UNSPECIFIED);221}222 223static void drm_test_cmdline_res_refresh(struct kunit *test)224{225	struct drm_cmdline_mode mode = { };226	const char *cmdline = "720x480@60";227 228	KUNIT_ASSERT_TRUE(test, drm_mode_parse_command_line_for_connector(cmdline,229									  &no_connector, &mode));230	KUNIT_EXPECT_TRUE(test, mode.specified);231	KUNIT_EXPECT_EQ(test, mode.xres, 720);232	KUNIT_EXPECT_EQ(test, mode.yres, 480);233 234	KUNIT_EXPECT_TRUE(test, mode.refresh_specified);235	KUNIT_EXPECT_EQ(test, mode.refresh, 60);236 237	KUNIT_EXPECT_FALSE(test, mode.bpp_specified);238 239	KUNIT_EXPECT_FALSE(test, mode.rb);240	KUNIT_EXPECT_FALSE(test, mode.cvt);241	KUNIT_EXPECT_FALSE(test, mode.interlace);242	KUNIT_EXPECT_FALSE(test, mode.margins);243	KUNIT_EXPECT_EQ(test, mode.force, DRM_FORCE_UNSPECIFIED);244}245 246static void drm_test_cmdline_res_bpp_refresh(struct kunit *test)247{248	struct drm_cmdline_mode mode = { };249	const char *cmdline = "720x480-24@60";250 251	KUNIT_ASSERT_TRUE(test, drm_mode_parse_command_line_for_connector(cmdline,252									  &no_connector, &mode));253	KUNIT_EXPECT_TRUE(test, mode.specified);254	KUNIT_EXPECT_EQ(test, mode.xres, 720);255	KUNIT_EXPECT_EQ(test, mode.yres, 480);256 257	KUNIT_EXPECT_TRUE(test, mode.refresh_specified);258	KUNIT_EXPECT_EQ(test, mode.refresh, 60);259 260	KUNIT_EXPECT_TRUE(test, mode.bpp_specified);261	KUNIT_EXPECT_EQ(test, mode.bpp, 24);262 263	KUNIT_EXPECT_FALSE(test, mode.rb);264	KUNIT_EXPECT_FALSE(test, mode.cvt);265	KUNIT_EXPECT_FALSE(test, mode.interlace);266	KUNIT_EXPECT_FALSE(test, mode.margins);267	KUNIT_EXPECT_EQ(test, mode.force, DRM_FORCE_UNSPECIFIED);268}269 270static void drm_test_cmdline_res_bpp_refresh_interlaced(struct kunit *test)271{272	struct drm_cmdline_mode mode = { };273	const char *cmdline = "720x480-24@60i";274 275	KUNIT_ASSERT_TRUE(test, drm_mode_parse_command_line_for_connector(cmdline,276									  &no_connector, &mode));277	KUNIT_EXPECT_TRUE(test, mode.specified);278	KUNIT_EXPECT_EQ(test, mode.xres, 720);279	KUNIT_EXPECT_EQ(test, mode.yres, 480);280 281	KUNIT_EXPECT_TRUE(test, mode.refresh_specified);282	KUNIT_EXPECT_EQ(test, mode.refresh, 60);283 284	KUNIT_EXPECT_TRUE(test, mode.bpp_specified);285	KUNIT_EXPECT_EQ(test, mode.bpp, 24);286 287	KUNIT_EXPECT_FALSE(test, mode.rb);288	KUNIT_EXPECT_FALSE(test, mode.cvt);289	KUNIT_EXPECT_TRUE(test, mode.interlace);290	KUNIT_EXPECT_FALSE(test, mode.margins);291	KUNIT_EXPECT_EQ(test, mode.force, DRM_FORCE_UNSPECIFIED);292}293 294static void drm_test_cmdline_res_bpp_refresh_margins(struct kunit *test)295{296	struct drm_cmdline_mode mode = { };297	const char *cmdline = "720x480-24@60m";298 299	KUNIT_ASSERT_TRUE(test, drm_mode_parse_command_line_for_connector(cmdline,300									  &no_connector, &mode));301	KUNIT_EXPECT_TRUE(test, mode.specified);302	KUNIT_EXPECT_EQ(test, mode.xres, 720);303	KUNIT_EXPECT_EQ(test, mode.yres, 480);304 305	KUNIT_EXPECT_TRUE(test, mode.refresh_specified);306	KUNIT_EXPECT_EQ(test, mode.refresh, 60);307 308	KUNIT_EXPECT_TRUE(test, mode.bpp_specified);309	KUNIT_EXPECT_EQ(test, mode.bpp, 24);310 311	KUNIT_EXPECT_FALSE(test, mode.rb);312	KUNIT_EXPECT_FALSE(test, mode.cvt);313	KUNIT_EXPECT_FALSE(test, mode.interlace);314	KUNIT_EXPECT_TRUE(test, mode.margins);315	KUNIT_EXPECT_EQ(test, mode.force, DRM_FORCE_UNSPECIFIED);316}317 318static void drm_test_cmdline_res_bpp_refresh_force_off(struct kunit *test)319{320	struct drm_cmdline_mode mode = { };321	const char *cmdline = "720x480-24@60d";322 323	KUNIT_ASSERT_TRUE(test, drm_mode_parse_command_line_for_connector(cmdline,324									  &no_connector, &mode));325	KUNIT_EXPECT_TRUE(test, mode.specified);326	KUNIT_EXPECT_EQ(test, mode.xres, 720);327	KUNIT_EXPECT_EQ(test, mode.yres, 480);328 329	KUNIT_EXPECT_TRUE(test, mode.refresh_specified);330	KUNIT_EXPECT_EQ(test, mode.refresh, 60);331 332	KUNIT_EXPECT_TRUE(test, mode.bpp_specified);333	KUNIT_EXPECT_EQ(test, mode.bpp, 24);334 335	KUNIT_EXPECT_FALSE(test, mode.rb);336	KUNIT_EXPECT_FALSE(test, mode.cvt);337	KUNIT_EXPECT_FALSE(test, mode.interlace);338	KUNIT_EXPECT_FALSE(test, mode.margins);339	KUNIT_EXPECT_EQ(test, mode.force, DRM_FORCE_OFF);340}341 342static void drm_test_cmdline_res_bpp_refresh_force_on(struct kunit *test)343{344	struct drm_cmdline_mode mode = { };345	const char *cmdline = "720x480-24@60e";346 347	KUNIT_ASSERT_TRUE(test, drm_mode_parse_command_line_for_connector(cmdline,348									  &no_connector, &mode));349	KUNIT_EXPECT_TRUE(test, mode.specified);350	KUNIT_EXPECT_EQ(test, mode.xres, 720);351	KUNIT_EXPECT_EQ(test, mode.yres, 480);352 353	KUNIT_EXPECT_TRUE(test, mode.refresh_specified);354	KUNIT_EXPECT_EQ(test, mode.refresh, 60);355 356	KUNIT_EXPECT_TRUE(test, mode.bpp_specified);357	KUNIT_EXPECT_EQ(test, mode.bpp, 24);358 359	KUNIT_EXPECT_FALSE(test, mode.rb);360	KUNIT_EXPECT_FALSE(test, mode.cvt);361	KUNIT_EXPECT_FALSE(test, mode.interlace);362	KUNIT_EXPECT_FALSE(test, mode.margins);363	KUNIT_EXPECT_EQ(test, mode.force, DRM_FORCE_ON);364}365 366static void drm_test_cmdline_res_bpp_refresh_force_on_analog(struct kunit *test)367{368	struct drm_cmdline_mode mode = { };369	const char *cmdline = "720x480-24@60D";370 371	KUNIT_ASSERT_TRUE(test, drm_mode_parse_command_line_for_connector(cmdline,372									  &no_connector, &mode));373	KUNIT_EXPECT_TRUE(test, mode.specified);374	KUNIT_EXPECT_EQ(test, mode.xres, 720);375	KUNIT_EXPECT_EQ(test, mode.yres, 480);376 377	KUNIT_EXPECT_TRUE(test, mode.refresh_specified);378	KUNIT_EXPECT_EQ(test, mode.refresh, 60);379 380	KUNIT_EXPECT_TRUE(test, mode.bpp_specified);381	KUNIT_EXPECT_EQ(test, mode.bpp, 24);382 383	KUNIT_EXPECT_FALSE(test, mode.rb);384	KUNIT_EXPECT_FALSE(test, mode.cvt);385	KUNIT_EXPECT_FALSE(test, mode.interlace);386	KUNIT_EXPECT_FALSE(test, mode.margins);387	KUNIT_EXPECT_EQ(test, mode.force, DRM_FORCE_ON);388}389 390static void drm_test_cmdline_res_bpp_refresh_force_on_digital(struct kunit *test)391{392	struct drm_cmdline_mode mode = { };393	static const struct drm_connector connector = {394		.connector_type = DRM_MODE_CONNECTOR_DVII,395	};396	const char *cmdline = "720x480-24@60D";397 398	KUNIT_ASSERT_TRUE(test, drm_mode_parse_command_line_for_connector(cmdline,399									  &connector, &mode));400	KUNIT_EXPECT_TRUE(test, mode.specified);401	KUNIT_EXPECT_EQ(test, mode.xres, 720);402	KUNIT_EXPECT_EQ(test, mode.yres, 480);403 404	KUNIT_EXPECT_TRUE(test, mode.refresh_specified);405	KUNIT_EXPECT_EQ(test, mode.refresh, 60);406 407	KUNIT_EXPECT_TRUE(test, mode.bpp_specified);408	KUNIT_EXPECT_EQ(test, mode.bpp, 24);409 410	KUNIT_EXPECT_FALSE(test, mode.rb);411	KUNIT_EXPECT_FALSE(test, mode.cvt);412	KUNIT_EXPECT_FALSE(test, mode.interlace);413	KUNIT_EXPECT_FALSE(test, mode.margins);414	KUNIT_EXPECT_EQ(test, mode.force, DRM_FORCE_ON_DIGITAL);415}416 417static void drm_test_cmdline_res_bpp_refresh_interlaced_margins_force_on(struct kunit *test)418{419	struct drm_cmdline_mode mode = { };420	const char *cmdline = "720x480-24@60ime";421 422	KUNIT_EXPECT_TRUE(test, drm_mode_parse_command_line_for_connector(cmdline,423									  &no_connector, &mode));424	KUNIT_EXPECT_TRUE(test, mode.specified);425	KUNIT_EXPECT_EQ(test, mode.xres, 720);426	KUNIT_EXPECT_EQ(test, mode.yres, 480);427 428	KUNIT_EXPECT_TRUE(test, mode.refresh_specified);429	KUNIT_EXPECT_EQ(test, mode.refresh, 60);430 431	KUNIT_EXPECT_TRUE(test, mode.bpp_specified);432	KUNIT_EXPECT_EQ(test, mode.bpp, 24);433 434	KUNIT_EXPECT_FALSE(test, mode.rb);435	KUNIT_EXPECT_FALSE(test, mode.cvt);436	KUNIT_EXPECT_TRUE(test, mode.interlace);437	KUNIT_EXPECT_TRUE(test, mode.margins);438	KUNIT_EXPECT_EQ(test, mode.force, DRM_FORCE_ON);439}440 441static void drm_test_cmdline_res_margins_force_on(struct kunit *test)442{443	struct drm_cmdline_mode mode = { };444	const char *cmdline = "720x480me";445 446	KUNIT_ASSERT_TRUE(test, drm_mode_parse_command_line_for_connector(cmdline,447									  &no_connector, &mode));448	KUNIT_EXPECT_TRUE(test, mode.specified);449	KUNIT_EXPECT_EQ(test, mode.xres, 720);450	KUNIT_EXPECT_EQ(test, mode.yres, 480);451 452	KUNIT_EXPECT_FALSE(test, mode.refresh_specified);453 454	KUNIT_EXPECT_FALSE(test, mode.bpp_specified);455 456	KUNIT_EXPECT_FALSE(test, mode.rb);457	KUNIT_EXPECT_FALSE(test, mode.cvt);458	KUNIT_EXPECT_FALSE(test, mode.interlace);459	KUNIT_EXPECT_TRUE(test, mode.margins);460	KUNIT_EXPECT_EQ(test, mode.force, DRM_FORCE_ON);461}462 463static void drm_test_cmdline_res_vesa_margins(struct kunit *test)464{465	struct drm_cmdline_mode mode = { };466	const char *cmdline = "720x480Mm";467 468	KUNIT_ASSERT_TRUE(test, drm_mode_parse_command_line_for_connector(cmdline,469									  &no_connector, &mode));470	KUNIT_EXPECT_TRUE(test, mode.specified);471	KUNIT_EXPECT_EQ(test, mode.xres, 720);472	KUNIT_EXPECT_EQ(test, mode.yres, 480);473 474	KUNIT_EXPECT_FALSE(test, mode.refresh_specified);475 476	KUNIT_EXPECT_FALSE(test, mode.bpp_specified);477 478	KUNIT_EXPECT_FALSE(test, mode.rb);479	KUNIT_EXPECT_TRUE(test, mode.cvt);480	KUNIT_EXPECT_FALSE(test, mode.interlace);481	KUNIT_EXPECT_TRUE(test, mode.margins);482	KUNIT_EXPECT_EQ(test, mode.force, DRM_FORCE_UNSPECIFIED);483}484 485static void drm_test_cmdline_name(struct kunit *test)486{487	struct drm_cmdline_mode mode = { };488	const char *cmdline = "NTSC";489 490	KUNIT_ASSERT_TRUE(test, drm_mode_parse_command_line_for_connector(cmdline,491									  &no_connector, &mode));492	KUNIT_EXPECT_STREQ(test, mode.name, "NTSC");493	KUNIT_EXPECT_FALSE(test, mode.refresh_specified);494	KUNIT_EXPECT_FALSE(test, mode.bpp_specified);495}496 497static void drm_test_cmdline_name_bpp(struct kunit *test)498{499	struct drm_cmdline_mode mode = { };500	const char *cmdline = "NTSC-24";501 502	KUNIT_ASSERT_TRUE(test, drm_mode_parse_command_line_for_connector(cmdline,503									  &no_connector, &mode));504	KUNIT_EXPECT_STREQ(test, mode.name, "NTSC");505 506	KUNIT_EXPECT_FALSE(test, mode.refresh_specified);507 508	KUNIT_EXPECT_TRUE(test, mode.bpp_specified);509	KUNIT_EXPECT_EQ(test, mode.bpp, 24);510}511 512static void drm_test_cmdline_name_option(struct kunit *test)513{514	struct drm_cmdline_mode mode = { };515	const char *cmdline = "NTSC,rotate=180";516 517	KUNIT_ASSERT_TRUE(test, drm_mode_parse_command_line_for_connector(cmdline,518									  &no_connector, &mode));519	KUNIT_EXPECT_TRUE(test, mode.specified);520	KUNIT_EXPECT_STREQ(test, mode.name, "NTSC");521	KUNIT_EXPECT_EQ(test, mode.rotation_reflection, DRM_MODE_ROTATE_180);522}523 524static void drm_test_cmdline_name_bpp_option(struct kunit *test)525{526	struct drm_cmdline_mode mode = { };527	const char *cmdline = "NTSC-24,rotate=180";528 529	KUNIT_ASSERT_TRUE(test, drm_mode_parse_command_line_for_connector(cmdline,530									  &no_connector, &mode));531	KUNIT_EXPECT_TRUE(test, mode.specified);532	KUNIT_EXPECT_STREQ(test, mode.name, "NTSC");533	KUNIT_EXPECT_EQ(test, mode.rotation_reflection, DRM_MODE_ROTATE_180);534	KUNIT_EXPECT_TRUE(test, mode.bpp_specified);535	KUNIT_EXPECT_EQ(test, mode.bpp, 24);536}537 538static void drm_test_cmdline_rotate_0(struct kunit *test)539{540	struct drm_cmdline_mode mode = { };541	const char *cmdline = "720x480,rotate=0";542 543	KUNIT_ASSERT_TRUE(test, drm_mode_parse_command_line_for_connector(cmdline,544									  &no_connector, &mode));545	KUNIT_EXPECT_TRUE(test, mode.specified);546	KUNIT_EXPECT_EQ(test, mode.xres, 720);547	KUNIT_EXPECT_EQ(test, mode.yres, 480);548	KUNIT_EXPECT_EQ(test, mode.rotation_reflection, DRM_MODE_ROTATE_0);549 550	KUNIT_EXPECT_FALSE(test, mode.refresh_specified);551 552	KUNIT_EXPECT_FALSE(test, mode.bpp_specified);553 554	KUNIT_EXPECT_FALSE(test, mode.rb);555	KUNIT_EXPECT_FALSE(test, mode.cvt);556	KUNIT_EXPECT_FALSE(test, mode.interlace);557	KUNIT_EXPECT_FALSE(test, mode.margins);558	KUNIT_EXPECT_EQ(test, mode.force, DRM_FORCE_UNSPECIFIED);559}560 561static void drm_test_cmdline_rotate_90(struct kunit *test)562{563	struct drm_cmdline_mode mode = { };564	const char *cmdline = "720x480,rotate=90";565 566	KUNIT_ASSERT_TRUE(test, drm_mode_parse_command_line_for_connector(cmdline,567									  &no_connector, &mode));568	KUNIT_EXPECT_TRUE(test, mode.specified);569	KUNIT_EXPECT_EQ(test, mode.xres, 720);570	KUNIT_EXPECT_EQ(test, mode.yres, 480);571	KUNIT_EXPECT_EQ(test, mode.rotation_reflection, DRM_MODE_ROTATE_90);572 573	KUNIT_EXPECT_FALSE(test, mode.refresh_specified);574 575	KUNIT_EXPECT_FALSE(test, mode.bpp_specified);576 577	KUNIT_EXPECT_FALSE(test, mode.rb);578	KUNIT_EXPECT_FALSE(test, mode.cvt);579	KUNIT_EXPECT_FALSE(test, mode.interlace);580	KUNIT_EXPECT_FALSE(test, mode.margins);581	KUNIT_EXPECT_EQ(test, mode.force, DRM_FORCE_UNSPECIFIED);582}583 584static void drm_test_cmdline_rotate_180(struct kunit *test)585{586	struct drm_cmdline_mode mode = { };587	const char *cmdline = "720x480,rotate=180";588 589	KUNIT_ASSERT_TRUE(test, drm_mode_parse_command_line_for_connector(cmdline,590									  &no_connector, &mode));591	KUNIT_EXPECT_TRUE(test, mode.specified);592	KUNIT_EXPECT_EQ(test, mode.xres, 720);593	KUNIT_EXPECT_EQ(test, mode.yres, 480);594	KUNIT_EXPECT_EQ(test, mode.rotation_reflection, DRM_MODE_ROTATE_180);595 596	KUNIT_EXPECT_FALSE(test, mode.refresh_specified);597 598	KUNIT_EXPECT_FALSE(test, mode.bpp_specified);599 600	KUNIT_EXPECT_FALSE(test, mode.rb);601	KUNIT_EXPECT_FALSE(test, mode.cvt);602	KUNIT_EXPECT_FALSE(test, mode.interlace);603	KUNIT_EXPECT_FALSE(test, mode.margins);604	KUNIT_EXPECT_EQ(test, mode.force, DRM_FORCE_UNSPECIFIED);605}606 607static void drm_test_cmdline_rotate_270(struct kunit *test)608{609	struct drm_cmdline_mode mode = { };610	const char *cmdline = "720x480,rotate=270";611 612	KUNIT_ASSERT_TRUE(test, drm_mode_parse_command_line_for_connector(cmdline,613									  &no_connector, &mode));614	KUNIT_EXPECT_TRUE(test, mode.specified);615	KUNIT_EXPECT_EQ(test, mode.xres, 720);616	KUNIT_EXPECT_EQ(test, mode.yres, 480);617	KUNIT_EXPECT_EQ(test, mode.rotation_reflection, DRM_MODE_ROTATE_270);618 619	KUNIT_EXPECT_FALSE(test, mode.refresh_specified);620 621	KUNIT_EXPECT_FALSE(test, mode.bpp_specified);622 623	KUNIT_EXPECT_FALSE(test, mode.rb);624	KUNIT_EXPECT_FALSE(test, mode.cvt);625	KUNIT_EXPECT_FALSE(test, mode.interlace);626	KUNIT_EXPECT_FALSE(test, mode.margins);627	KUNIT_EXPECT_EQ(test, mode.force, DRM_FORCE_UNSPECIFIED);628}629 630static void drm_test_cmdline_hmirror(struct kunit *test)631{632	struct drm_cmdline_mode mode = { };633	const char *cmdline = "720x480,reflect_x";634 635	KUNIT_ASSERT_TRUE(test, drm_mode_parse_command_line_for_connector(cmdline,636									  &no_connector, &mode));637	KUNIT_EXPECT_TRUE(test, mode.specified);638	KUNIT_EXPECT_EQ(test, mode.xres, 720);639	KUNIT_EXPECT_EQ(test, mode.yres, 480);640	KUNIT_EXPECT_EQ(test, mode.rotation_reflection, (DRM_MODE_ROTATE_0 | DRM_MODE_REFLECT_X));641 642	KUNIT_EXPECT_FALSE(test, mode.refresh_specified);643 644	KUNIT_EXPECT_FALSE(test, mode.bpp_specified);645 646	KUNIT_EXPECT_FALSE(test, mode.rb);647	KUNIT_EXPECT_FALSE(test, mode.cvt);648	KUNIT_EXPECT_FALSE(test, mode.interlace);649	KUNIT_EXPECT_FALSE(test, mode.margins);650	KUNIT_EXPECT_EQ(test, mode.force, DRM_FORCE_UNSPECIFIED);651}652 653static void drm_test_cmdline_vmirror(struct kunit *test)654{655	struct drm_cmdline_mode mode = { };656	const char *cmdline = "720x480,reflect_y";657 658	KUNIT_ASSERT_TRUE(test, drm_mode_parse_command_line_for_connector(cmdline,659									  &no_connector, &mode));660	KUNIT_EXPECT_TRUE(test, mode.specified);661	KUNIT_EXPECT_EQ(test, mode.xres, 720);662	KUNIT_EXPECT_EQ(test, mode.yres, 480);663	KUNIT_EXPECT_EQ(test, mode.rotation_reflection, (DRM_MODE_ROTATE_0 | DRM_MODE_REFLECT_Y));664 665	KUNIT_EXPECT_FALSE(test, mode.refresh_specified);666 667	KUNIT_EXPECT_FALSE(test, mode.bpp_specified);668 669	KUNIT_EXPECT_FALSE(test, mode.rb);670	KUNIT_EXPECT_FALSE(test, mode.cvt);671	KUNIT_EXPECT_FALSE(test, mode.interlace);672	KUNIT_EXPECT_FALSE(test, mode.margins);673	KUNIT_EXPECT_EQ(test, mode.force, DRM_FORCE_UNSPECIFIED);674}675 676static void drm_test_cmdline_margin_options(struct kunit *test)677{678	struct drm_cmdline_mode mode = { };679	const char *cmdline =680		"720x480,margin_right=14,margin_left=24,margin_bottom=36,margin_top=42";681 682	KUNIT_ASSERT_TRUE(test, drm_mode_parse_command_line_for_connector(cmdline,683									  &no_connector, &mode));684	KUNIT_EXPECT_TRUE(test, mode.specified);685	KUNIT_EXPECT_EQ(test, mode.xres, 720);686	KUNIT_EXPECT_EQ(test, mode.yres, 480);687	KUNIT_EXPECT_EQ(test, mode.tv_margins.right, 14);688	KUNIT_EXPECT_EQ(test, mode.tv_margins.left, 24);689	KUNIT_EXPECT_EQ(test, mode.tv_margins.bottom, 36);690	KUNIT_EXPECT_EQ(test, mode.tv_margins.top, 42);691 692	KUNIT_EXPECT_FALSE(test, mode.refresh_specified);693 694	KUNIT_EXPECT_FALSE(test, mode.bpp_specified);695 696	KUNIT_EXPECT_FALSE(test, mode.rb);697	KUNIT_EXPECT_FALSE(test, mode.cvt);698	KUNIT_EXPECT_FALSE(test, mode.interlace);699	KUNIT_EXPECT_FALSE(test, mode.margins);700	KUNIT_EXPECT_EQ(test, mode.force, DRM_FORCE_UNSPECIFIED);701}702 703static void drm_test_cmdline_multiple_options(struct kunit *test)704{705	struct drm_cmdline_mode mode = { };706	const char *cmdline = "720x480,rotate=270,reflect_x";707 708	KUNIT_ASSERT_TRUE(test, drm_mode_parse_command_line_for_connector(cmdline,709									  &no_connector, &mode));710	KUNIT_EXPECT_TRUE(test, mode.specified);711	KUNIT_EXPECT_EQ(test, mode.xres, 720);712	KUNIT_EXPECT_EQ(test, mode.yres, 480);713	KUNIT_EXPECT_EQ(test, mode.rotation_reflection, (DRM_MODE_ROTATE_270 | DRM_MODE_REFLECT_X));714 715	KUNIT_EXPECT_FALSE(test, mode.refresh_specified);716 717	KUNIT_EXPECT_FALSE(test, mode.bpp_specified);718 719	KUNIT_EXPECT_FALSE(test, mode.rb);720	KUNIT_EXPECT_FALSE(test, mode.cvt);721	KUNIT_EXPECT_FALSE(test, mode.interlace);722	KUNIT_EXPECT_FALSE(test, mode.margins);723	KUNIT_EXPECT_EQ(test, mode.force, DRM_FORCE_UNSPECIFIED);724}725 726static void drm_test_cmdline_bpp_extra_and_option(struct kunit *test)727{728	struct drm_cmdline_mode mode = { };729	const char *cmdline = "720x480-24e,rotate=180";730 731	KUNIT_ASSERT_TRUE(test, drm_mode_parse_command_line_for_connector(cmdline,732									  &no_connector, &mode));733	KUNIT_EXPECT_TRUE(test, mode.specified);734	KUNIT_EXPECT_EQ(test, mode.xres, 720);735	KUNIT_EXPECT_EQ(test, mode.yres, 480);736	KUNIT_EXPECT_EQ(test, mode.rotation_reflection, DRM_MODE_ROTATE_180);737 738	KUNIT_EXPECT_FALSE(test, mode.refresh_specified);739 740	KUNIT_EXPECT_TRUE(test, mode.bpp_specified);741	KUNIT_EXPECT_EQ(test, mode.bpp, 24);742 743	KUNIT_EXPECT_FALSE(test, mode.rb);744	KUNIT_EXPECT_FALSE(test, mode.cvt);745	KUNIT_EXPECT_FALSE(test, mode.interlace);746	KUNIT_EXPECT_FALSE(test, mode.margins);747	KUNIT_EXPECT_EQ(test, mode.force, DRM_FORCE_ON);748}749 750static void drm_test_cmdline_extra_and_option(struct kunit *test)751{752	struct drm_cmdline_mode mode = { };753	const char *cmdline = "720x480e,rotate=180";754 755	KUNIT_ASSERT_TRUE(test, drm_mode_parse_command_line_for_connector(cmdline,756									  &no_connector, &mode));757	KUNIT_EXPECT_TRUE(test, mode.specified);758	KUNIT_EXPECT_EQ(test, mode.xres, 720);759	KUNIT_EXPECT_EQ(test, mode.yres, 480);760	KUNIT_EXPECT_EQ(test, mode.rotation_reflection, DRM_MODE_ROTATE_180);761 762	KUNIT_EXPECT_FALSE(test, mode.refresh_specified);763	KUNIT_EXPECT_FALSE(test, mode.bpp_specified);764 765	KUNIT_EXPECT_FALSE(test, mode.rb);766	KUNIT_EXPECT_FALSE(test, mode.cvt);767	KUNIT_EXPECT_FALSE(test, mode.interlace);768	KUNIT_EXPECT_FALSE(test, mode.margins);769	KUNIT_EXPECT_EQ(test, mode.force, DRM_FORCE_ON);770}771 772static void drm_test_cmdline_freestanding_options(struct kunit *test)773{774	struct drm_cmdline_mode mode = { };775	const char *cmdline = "margin_right=14,margin_left=24,margin_bottom=36,margin_top=42";776 777	KUNIT_ASSERT_TRUE(test, drm_mode_parse_command_line_for_connector(cmdline,778									  &no_connector, &mode));779	KUNIT_EXPECT_FALSE(test, mode.specified);780	KUNIT_EXPECT_FALSE(test, mode.refresh_specified);781	KUNIT_EXPECT_FALSE(test, mode.bpp_specified);782 783	KUNIT_EXPECT_EQ(test, mode.tv_margins.right, 14);784	KUNIT_EXPECT_EQ(test, mode.tv_margins.left, 24);785	KUNIT_EXPECT_EQ(test, mode.tv_margins.bottom, 36);786	KUNIT_EXPECT_EQ(test, mode.tv_margins.top, 42);787 788	KUNIT_EXPECT_FALSE(test, mode.rb);789	KUNIT_EXPECT_FALSE(test, mode.cvt);790	KUNIT_EXPECT_FALSE(test, mode.interlace);791	KUNIT_EXPECT_FALSE(test, mode.margins);792	KUNIT_EXPECT_EQ(test, mode.force, DRM_FORCE_UNSPECIFIED);793}794 795static void drm_test_cmdline_freestanding_force_e_and_options(struct kunit *test)796{797	struct drm_cmdline_mode mode = { };798	const char *cmdline = "e,margin_right=14,margin_left=24,margin_bottom=36,margin_top=42";799 800	KUNIT_ASSERT_TRUE(test, drm_mode_parse_command_line_for_connector(cmdline,801									  &no_connector, &mode));802	KUNIT_EXPECT_FALSE(test, mode.specified);803	KUNIT_EXPECT_FALSE(test, mode.refresh_specified);804	KUNIT_EXPECT_FALSE(test, mode.bpp_specified);805 806	KUNIT_EXPECT_EQ(test, mode.tv_margins.right, 14);807	KUNIT_EXPECT_EQ(test, mode.tv_margins.left, 24);808	KUNIT_EXPECT_EQ(test, mode.tv_margins.bottom, 36);809	KUNIT_EXPECT_EQ(test, mode.tv_margins.top, 42);810 811	KUNIT_EXPECT_FALSE(test, mode.rb);812	KUNIT_EXPECT_FALSE(test, mode.cvt);813	KUNIT_EXPECT_FALSE(test, mode.interlace);814	KUNIT_EXPECT_FALSE(test, mode.margins);815	KUNIT_EXPECT_EQ(test, mode.force, DRM_FORCE_ON);816}817 818static void drm_test_cmdline_panel_orientation(struct kunit *test)819{820	struct drm_cmdline_mode mode = { };821	const char *cmdline = "panel_orientation=upside_down";822 823	KUNIT_ASSERT_TRUE(test, drm_mode_parse_command_line_for_connector(cmdline,824									  &no_connector, &mode));825	KUNIT_EXPECT_FALSE(test, mode.specified);826	KUNIT_EXPECT_FALSE(test, mode.refresh_specified);827	KUNIT_EXPECT_FALSE(test, mode.bpp_specified);828 829	KUNIT_EXPECT_EQ(test, mode.panel_orientation, DRM_MODE_PANEL_ORIENTATION_BOTTOM_UP);830 831	KUNIT_EXPECT_FALSE(test, mode.rb);832	KUNIT_EXPECT_FALSE(test, mode.cvt);833	KUNIT_EXPECT_FALSE(test, mode.interlace);834	KUNIT_EXPECT_FALSE(test, mode.margins);835	KUNIT_EXPECT_EQ(test, mode.force, DRM_FORCE_UNSPECIFIED);836}837 838struct drm_cmdline_invalid_test {839	const char *name;840	const char *cmdline;841};842 843static void drm_test_cmdline_invalid(struct kunit *test)844{845	const struct drm_cmdline_invalid_test *params = test->param_value;846	struct drm_cmdline_mode mode = { };847 848	KUNIT_EXPECT_FALSE(test, drm_mode_parse_command_line_for_connector(params->cmdline,849									   &no_connector,850									   &mode));851}852 853static const struct drm_cmdline_invalid_test drm_cmdline_invalid_tests[] = {854	{855		.name = "margin_only",856		.cmdline = "m",857	},858	{859		.name = "interlace_only",860		.cmdline = "i",861	},862	{863		.name = "res_missing_x",864		.cmdline = "x480",865	},866	{867		.name = "res_missing_y",868		.cmdline = "1024x",869	},870	{871		.name = "res_bad_y",872		.cmdline = "1024xtest",873	},874	{875		.name = "res_missing_y_bpp",876		.cmdline = "1024x-24",877	},878	{879		.name = "res_bad_bpp",880		.cmdline = "720x480-test",881	},882	{883		.name = "res_bad_refresh",884		.cmdline = "720x480@refresh",885	},886	{887		.name = "res_bpp_refresh_force_on_off",888		.cmdline = "720x480-24@60de",889	},890	{891		.name = "res_invalid_mode",892		.cmdline = "720x480f",893	},894	{895		.name = "res_bpp_wrong_place_mode",896		.cmdline = "720x480e-24",897	},898	{899		.name = "name_bpp_refresh",900		.cmdline = "NTSC-24@60",901	},902	{903		.name = "name_refresh",904		.cmdline = "NTSC@60",905	},906	{907		.name = "name_refresh_wrong_mode",908		.cmdline = "NTSC@60m",909	},910	{911		.name = "name_refresh_invalid_mode",912		.cmdline = "NTSC@60f",913	},914	{915		.name = "rotate_multiple",916		.cmdline = "720x480,rotate=0,rotate=90",917	},918	{919		.name = "rotate_invalid_val",920		.cmdline = "720x480,rotate=42",921	},922	{923		.name = "rotate_truncated",924		.cmdline = "720x480,rotate=",925	},926	{927		.name = "invalid_option",928		.cmdline = "720x480,test=42",929	},930	{931		.name = "invalid_tv_option",932		.cmdline = "720x480i,tv_mode=invalid",933	},934	{935		.name = "truncated_tv_option",936		.cmdline = "720x480i,tv_mode=NTS",937	},938};939 940static void drm_cmdline_invalid_desc(const struct drm_cmdline_invalid_test *t,941				     char *desc)942{943	sprintf(desc, "%s", t->name);944}945 946KUNIT_ARRAY_PARAM(drm_cmdline_invalid, drm_cmdline_invalid_tests, drm_cmdline_invalid_desc);947 948struct drm_cmdline_tv_option_test {949	const char *name;950	const char *cmdline;951	struct drm_display_mode *(*mode_fn)(struct drm_device *dev);952	enum drm_connector_tv_mode tv_mode;953};954 955static void drm_test_cmdline_tv_options(struct kunit *test)956{957	const struct drm_cmdline_tv_option_test *params = test->param_value;958	const struct drm_display_mode *expected_mode = params->mode_fn(NULL);959	struct drm_cmdline_mode mode = { };960 961	KUNIT_EXPECT_TRUE(test, drm_mode_parse_command_line_for_connector(params->cmdline,962									  &no_connector, &mode));963	KUNIT_EXPECT_TRUE(test, mode.specified);964	KUNIT_EXPECT_EQ(test, mode.xres, expected_mode->hdisplay);965	KUNIT_EXPECT_EQ(test, mode.yres, expected_mode->vdisplay);966	KUNIT_EXPECT_EQ(test, mode.tv_mode, params->tv_mode);967 968	KUNIT_EXPECT_FALSE(test, mode.refresh_specified);969 970	KUNIT_EXPECT_FALSE(test, mode.bpp_specified);971 972	KUNIT_EXPECT_FALSE(test, mode.rb);973	KUNIT_EXPECT_FALSE(test, mode.cvt);974	KUNIT_EXPECT_EQ(test, mode.interlace, !!(expected_mode->flags & DRM_MODE_FLAG_INTERLACE));975	KUNIT_EXPECT_FALSE(test, mode.margins);976	KUNIT_EXPECT_EQ(test, mode.force, DRM_FORCE_UNSPECIFIED);977}978 979#define TV_OPT_TEST(_opt, _cmdline, _mode_fn)		\980	{						\981		.name = #_opt,				\982		.cmdline = _cmdline,			\983		.mode_fn = _mode_fn,			\984		.tv_mode = DRM_MODE_TV_MODE_ ## _opt,	\985	}986 987static const struct drm_cmdline_tv_option_test drm_cmdline_tv_option_tests[] = {988	TV_OPT_TEST(NTSC, "720x480i,tv_mode=NTSC", drm_mode_analog_ntsc_480i),989	TV_OPT_TEST(NTSC_443, "720x480i,tv_mode=NTSC-443", drm_mode_analog_ntsc_480i),990	TV_OPT_TEST(NTSC_J, "720x480i,tv_mode=NTSC-J", drm_mode_analog_ntsc_480i),991	TV_OPT_TEST(PAL, "720x576i,tv_mode=PAL", drm_mode_analog_pal_576i),992	TV_OPT_TEST(PAL_M, "720x480i,tv_mode=PAL-M", drm_mode_analog_ntsc_480i),993	TV_OPT_TEST(PAL_N, "720x576i,tv_mode=PAL-N", drm_mode_analog_pal_576i),994	TV_OPT_TEST(SECAM, "720x576i,tv_mode=SECAM", drm_mode_analog_pal_576i),995	{996		.name = "MONO_525",997		.cmdline = "720x480i,tv_mode=Mono",998		.mode_fn = drm_mode_analog_ntsc_480i,999		.tv_mode = DRM_MODE_TV_MODE_MONOCHROME,1000	}, {1001		.name = "MONO_625",1002		.cmdline = "720x576i,tv_mode=Mono",1003		.mode_fn = drm_mode_analog_pal_576i,1004		.tv_mode = DRM_MODE_TV_MODE_MONOCHROME,1005	},1006};1007 1008static void drm_cmdline_tv_option_desc(const struct drm_cmdline_tv_option_test *t,1009				       char *desc)1010{1011	sprintf(desc, "%s", t->name);1012}1013 1014KUNIT_ARRAY_PARAM(drm_cmdline_tv_option,1015		  drm_cmdline_tv_option_tests,1016		  drm_cmdline_tv_option_desc);1017 1018static struct kunit_case drm_cmdline_parser_tests[] = {1019	KUNIT_CASE(drm_test_cmdline_force_d_only),1020	KUNIT_CASE(drm_test_cmdline_force_D_only_dvi),1021	KUNIT_CASE(drm_test_cmdline_force_D_only_hdmi),1022	KUNIT_CASE(drm_test_cmdline_force_D_only_not_digital),1023	KUNIT_CASE(drm_test_cmdline_force_e_only),1024	KUNIT_CASE(drm_test_cmdline_res),1025	KUNIT_CASE(drm_test_cmdline_res_vesa),1026	KUNIT_CASE(drm_test_cmdline_res_vesa_rblank),1027	KUNIT_CASE(drm_test_cmdline_res_rblank),1028	KUNIT_CASE(drm_test_cmdline_res_bpp),1029	KUNIT_CASE(drm_test_cmdline_res_refresh),1030	KUNIT_CASE(drm_test_cmdline_res_bpp_refresh),1031	KUNIT_CASE(drm_test_cmdline_res_bpp_refresh_interlaced),1032	KUNIT_CASE(drm_test_cmdline_res_bpp_refresh_margins),1033	KUNIT_CASE(drm_test_cmdline_res_bpp_refresh_force_off),1034	KUNIT_CASE(drm_test_cmdline_res_bpp_refresh_force_on),1035	KUNIT_CASE(drm_test_cmdline_res_bpp_refresh_force_on_analog),1036	KUNIT_CASE(drm_test_cmdline_res_bpp_refresh_force_on_digital),1037	KUNIT_CASE(drm_test_cmdline_res_bpp_refresh_interlaced_margins_force_on),1038	KUNIT_CASE(drm_test_cmdline_res_margins_force_on),1039	KUNIT_CASE(drm_test_cmdline_res_vesa_margins),1040	KUNIT_CASE(drm_test_cmdline_name),1041	KUNIT_CASE(drm_test_cmdline_name_bpp),1042	KUNIT_CASE(drm_test_cmdline_name_option),1043	KUNIT_CASE(drm_test_cmdline_name_bpp_option),1044	KUNIT_CASE(drm_test_cmdline_rotate_0),1045	KUNIT_CASE(drm_test_cmdline_rotate_90),1046	KUNIT_CASE(drm_test_cmdline_rotate_180),1047	KUNIT_CASE(drm_test_cmdline_rotate_270),1048	KUNIT_CASE(drm_test_cmdline_hmirror),1049	KUNIT_CASE(drm_test_cmdline_vmirror),1050	KUNIT_CASE(drm_test_cmdline_margin_options),1051	KUNIT_CASE(drm_test_cmdline_multiple_options),1052	KUNIT_CASE(drm_test_cmdline_bpp_extra_and_option),1053	KUNIT_CASE(drm_test_cmdline_extra_and_option),1054	KUNIT_CASE(drm_test_cmdline_freestanding_options),1055	KUNIT_CASE(drm_test_cmdline_freestanding_force_e_and_options),1056	KUNIT_CASE(drm_test_cmdline_panel_orientation),1057	KUNIT_CASE_PARAM(drm_test_cmdline_invalid, drm_cmdline_invalid_gen_params),1058	KUNIT_CASE_PARAM(drm_test_cmdline_tv_options, drm_cmdline_tv_option_gen_params),1059	{}1060};1061 1062static struct kunit_suite drm_cmdline_parser_test_suite = {1063	.name = "drm_cmdline_parser",1064	.test_cases = drm_cmdline_parser_tests1065};1066 1067kunit_test_suite(drm_cmdline_parser_test_suite);1068 1069MODULE_AUTHOR("Maxime Ripard <maxime.ripard@bootlin.com>");1070MODULE_DESCRIPTION("Kunit test for drm_cmdline_parser functions");1071MODULE_LICENSE("GPL");1072