1*4882a593Smuzhiyun // SPDX-License-Identifier: GPL-2.0
2*4882a593Smuzhiyun /*
3*4882a593Smuzhiyun * Copyright (c) 2019 Bootlin
4*4882a593Smuzhiyun */
5*4882a593Smuzhiyun
6*4882a593Smuzhiyun #define pr_fmt(fmt) "drm_cmdline: " fmt
7*4882a593Smuzhiyun
8*4882a593Smuzhiyun #include <linux/kernel.h>
9*4882a593Smuzhiyun #include <linux/module.h>
10*4882a593Smuzhiyun
11*4882a593Smuzhiyun #include <drm/drm_connector.h>
12*4882a593Smuzhiyun #include <drm/drm_modes.h>
13*4882a593Smuzhiyun
14*4882a593Smuzhiyun #define TESTS "drm_cmdline_selftests.h"
15*4882a593Smuzhiyun #include "drm_selftest.h"
16*4882a593Smuzhiyun #include "test-drm_modeset_common.h"
17*4882a593Smuzhiyun
18*4882a593Smuzhiyun static const struct drm_connector no_connector = {};
19*4882a593Smuzhiyun
drm_cmdline_test_force_e_only(void * ignored)20*4882a593Smuzhiyun static int drm_cmdline_test_force_e_only(void *ignored)
21*4882a593Smuzhiyun {
22*4882a593Smuzhiyun struct drm_cmdline_mode mode = { };
23*4882a593Smuzhiyun
24*4882a593Smuzhiyun FAIL_ON(!drm_mode_parse_command_line_for_connector("e",
25*4882a593Smuzhiyun &no_connector,
26*4882a593Smuzhiyun &mode));
27*4882a593Smuzhiyun FAIL_ON(mode.specified);
28*4882a593Smuzhiyun FAIL_ON(mode.refresh_specified);
29*4882a593Smuzhiyun FAIL_ON(mode.bpp_specified);
30*4882a593Smuzhiyun
31*4882a593Smuzhiyun FAIL_ON(mode.rb);
32*4882a593Smuzhiyun FAIL_ON(mode.cvt);
33*4882a593Smuzhiyun FAIL_ON(mode.interlace);
34*4882a593Smuzhiyun FAIL_ON(mode.margins);
35*4882a593Smuzhiyun FAIL_ON(mode.force != DRM_FORCE_ON);
36*4882a593Smuzhiyun
37*4882a593Smuzhiyun return 0;
38*4882a593Smuzhiyun }
39*4882a593Smuzhiyun
drm_cmdline_test_force_D_only_not_digital(void * ignored)40*4882a593Smuzhiyun static int drm_cmdline_test_force_D_only_not_digital(void *ignored)
41*4882a593Smuzhiyun {
42*4882a593Smuzhiyun struct drm_cmdline_mode mode = { };
43*4882a593Smuzhiyun
44*4882a593Smuzhiyun FAIL_ON(!drm_mode_parse_command_line_for_connector("D",
45*4882a593Smuzhiyun &no_connector,
46*4882a593Smuzhiyun &mode));
47*4882a593Smuzhiyun FAIL_ON(mode.specified);
48*4882a593Smuzhiyun FAIL_ON(mode.refresh_specified);
49*4882a593Smuzhiyun FAIL_ON(mode.bpp_specified);
50*4882a593Smuzhiyun
51*4882a593Smuzhiyun FAIL_ON(mode.rb);
52*4882a593Smuzhiyun FAIL_ON(mode.cvt);
53*4882a593Smuzhiyun FAIL_ON(mode.interlace);
54*4882a593Smuzhiyun FAIL_ON(mode.margins);
55*4882a593Smuzhiyun FAIL_ON(mode.force != DRM_FORCE_ON);
56*4882a593Smuzhiyun
57*4882a593Smuzhiyun return 0;
58*4882a593Smuzhiyun }
59*4882a593Smuzhiyun
60*4882a593Smuzhiyun static const struct drm_connector connector_hdmi = {
61*4882a593Smuzhiyun .connector_type = DRM_MODE_CONNECTOR_HDMIB,
62*4882a593Smuzhiyun };
63*4882a593Smuzhiyun
drm_cmdline_test_force_D_only_hdmi(void * ignored)64*4882a593Smuzhiyun static int drm_cmdline_test_force_D_only_hdmi(void *ignored)
65*4882a593Smuzhiyun {
66*4882a593Smuzhiyun struct drm_cmdline_mode mode = { };
67*4882a593Smuzhiyun
68*4882a593Smuzhiyun FAIL_ON(!drm_mode_parse_command_line_for_connector("D",
69*4882a593Smuzhiyun &connector_hdmi,
70*4882a593Smuzhiyun &mode));
71*4882a593Smuzhiyun FAIL_ON(mode.specified);
72*4882a593Smuzhiyun FAIL_ON(mode.refresh_specified);
73*4882a593Smuzhiyun FAIL_ON(mode.bpp_specified);
74*4882a593Smuzhiyun
75*4882a593Smuzhiyun FAIL_ON(mode.rb);
76*4882a593Smuzhiyun FAIL_ON(mode.cvt);
77*4882a593Smuzhiyun FAIL_ON(mode.interlace);
78*4882a593Smuzhiyun FAIL_ON(mode.margins);
79*4882a593Smuzhiyun FAIL_ON(mode.force != DRM_FORCE_ON_DIGITAL);
80*4882a593Smuzhiyun
81*4882a593Smuzhiyun return 0;
82*4882a593Smuzhiyun }
83*4882a593Smuzhiyun
84*4882a593Smuzhiyun static const struct drm_connector connector_dvi = {
85*4882a593Smuzhiyun .connector_type = DRM_MODE_CONNECTOR_DVII,
86*4882a593Smuzhiyun };
87*4882a593Smuzhiyun
drm_cmdline_test_force_D_only_dvi(void * ignored)88*4882a593Smuzhiyun static int drm_cmdline_test_force_D_only_dvi(void *ignored)
89*4882a593Smuzhiyun {
90*4882a593Smuzhiyun struct drm_cmdline_mode mode = { };
91*4882a593Smuzhiyun
92*4882a593Smuzhiyun FAIL_ON(!drm_mode_parse_command_line_for_connector("D",
93*4882a593Smuzhiyun &connector_dvi,
94*4882a593Smuzhiyun &mode));
95*4882a593Smuzhiyun FAIL_ON(mode.specified);
96*4882a593Smuzhiyun FAIL_ON(mode.refresh_specified);
97*4882a593Smuzhiyun FAIL_ON(mode.bpp_specified);
98*4882a593Smuzhiyun
99*4882a593Smuzhiyun FAIL_ON(mode.rb);
100*4882a593Smuzhiyun FAIL_ON(mode.cvt);
101*4882a593Smuzhiyun FAIL_ON(mode.interlace);
102*4882a593Smuzhiyun FAIL_ON(mode.margins);
103*4882a593Smuzhiyun FAIL_ON(mode.force != DRM_FORCE_ON_DIGITAL);
104*4882a593Smuzhiyun
105*4882a593Smuzhiyun return 0;
106*4882a593Smuzhiyun }
107*4882a593Smuzhiyun
drm_cmdline_test_force_d_only(void * ignored)108*4882a593Smuzhiyun static int drm_cmdline_test_force_d_only(void *ignored)
109*4882a593Smuzhiyun {
110*4882a593Smuzhiyun struct drm_cmdline_mode mode = { };
111*4882a593Smuzhiyun
112*4882a593Smuzhiyun FAIL_ON(!drm_mode_parse_command_line_for_connector("d",
113*4882a593Smuzhiyun &no_connector,
114*4882a593Smuzhiyun &mode));
115*4882a593Smuzhiyun FAIL_ON(mode.specified);
116*4882a593Smuzhiyun FAIL_ON(mode.refresh_specified);
117*4882a593Smuzhiyun FAIL_ON(mode.bpp_specified);
118*4882a593Smuzhiyun
119*4882a593Smuzhiyun FAIL_ON(mode.rb);
120*4882a593Smuzhiyun FAIL_ON(mode.cvt);
121*4882a593Smuzhiyun FAIL_ON(mode.interlace);
122*4882a593Smuzhiyun FAIL_ON(mode.margins);
123*4882a593Smuzhiyun FAIL_ON(mode.force != DRM_FORCE_OFF);
124*4882a593Smuzhiyun
125*4882a593Smuzhiyun return 0;
126*4882a593Smuzhiyun }
127*4882a593Smuzhiyun
drm_cmdline_test_margin_only(void * ignored)128*4882a593Smuzhiyun static int drm_cmdline_test_margin_only(void *ignored)
129*4882a593Smuzhiyun {
130*4882a593Smuzhiyun struct drm_cmdline_mode mode = { };
131*4882a593Smuzhiyun
132*4882a593Smuzhiyun FAIL_ON(drm_mode_parse_command_line_for_connector("m",
133*4882a593Smuzhiyun &no_connector,
134*4882a593Smuzhiyun &mode));
135*4882a593Smuzhiyun
136*4882a593Smuzhiyun return 0;
137*4882a593Smuzhiyun }
138*4882a593Smuzhiyun
drm_cmdline_test_interlace_only(void * ignored)139*4882a593Smuzhiyun static int drm_cmdline_test_interlace_only(void *ignored)
140*4882a593Smuzhiyun {
141*4882a593Smuzhiyun struct drm_cmdline_mode mode = { };
142*4882a593Smuzhiyun
143*4882a593Smuzhiyun FAIL_ON(drm_mode_parse_command_line_for_connector("i",
144*4882a593Smuzhiyun &no_connector,
145*4882a593Smuzhiyun &mode));
146*4882a593Smuzhiyun
147*4882a593Smuzhiyun return 0;
148*4882a593Smuzhiyun }
149*4882a593Smuzhiyun
drm_cmdline_test_res(void * ignored)150*4882a593Smuzhiyun static int drm_cmdline_test_res(void *ignored)
151*4882a593Smuzhiyun {
152*4882a593Smuzhiyun struct drm_cmdline_mode mode = { };
153*4882a593Smuzhiyun
154*4882a593Smuzhiyun FAIL_ON(!drm_mode_parse_command_line_for_connector("720x480",
155*4882a593Smuzhiyun &no_connector,
156*4882a593Smuzhiyun &mode));
157*4882a593Smuzhiyun FAIL_ON(!mode.specified);
158*4882a593Smuzhiyun FAIL_ON(mode.xres != 720);
159*4882a593Smuzhiyun FAIL_ON(mode.yres != 480);
160*4882a593Smuzhiyun
161*4882a593Smuzhiyun FAIL_ON(mode.refresh_specified);
162*4882a593Smuzhiyun
163*4882a593Smuzhiyun FAIL_ON(mode.bpp_specified);
164*4882a593Smuzhiyun
165*4882a593Smuzhiyun FAIL_ON(mode.rb);
166*4882a593Smuzhiyun FAIL_ON(mode.cvt);
167*4882a593Smuzhiyun FAIL_ON(mode.interlace);
168*4882a593Smuzhiyun FAIL_ON(mode.margins);
169*4882a593Smuzhiyun FAIL_ON(mode.force != DRM_FORCE_UNSPECIFIED);
170*4882a593Smuzhiyun
171*4882a593Smuzhiyun return 0;
172*4882a593Smuzhiyun }
173*4882a593Smuzhiyun
drm_cmdline_test_res_missing_x(void * ignored)174*4882a593Smuzhiyun static int drm_cmdline_test_res_missing_x(void *ignored)
175*4882a593Smuzhiyun {
176*4882a593Smuzhiyun struct drm_cmdline_mode mode = { };
177*4882a593Smuzhiyun
178*4882a593Smuzhiyun FAIL_ON(drm_mode_parse_command_line_for_connector("x480",
179*4882a593Smuzhiyun &no_connector,
180*4882a593Smuzhiyun &mode));
181*4882a593Smuzhiyun
182*4882a593Smuzhiyun return 0;
183*4882a593Smuzhiyun }
184*4882a593Smuzhiyun
drm_cmdline_test_res_missing_y(void * ignored)185*4882a593Smuzhiyun static int drm_cmdline_test_res_missing_y(void *ignored)
186*4882a593Smuzhiyun {
187*4882a593Smuzhiyun struct drm_cmdline_mode mode = { };
188*4882a593Smuzhiyun
189*4882a593Smuzhiyun FAIL_ON(drm_mode_parse_command_line_for_connector("1024x",
190*4882a593Smuzhiyun &no_connector,
191*4882a593Smuzhiyun &mode));
192*4882a593Smuzhiyun
193*4882a593Smuzhiyun return 0;
194*4882a593Smuzhiyun }
195*4882a593Smuzhiyun
drm_cmdline_test_res_bad_y(void * ignored)196*4882a593Smuzhiyun static int drm_cmdline_test_res_bad_y(void *ignored)
197*4882a593Smuzhiyun {
198*4882a593Smuzhiyun struct drm_cmdline_mode mode = { };
199*4882a593Smuzhiyun
200*4882a593Smuzhiyun FAIL_ON(drm_mode_parse_command_line_for_connector("1024xtest",
201*4882a593Smuzhiyun &no_connector,
202*4882a593Smuzhiyun &mode));
203*4882a593Smuzhiyun
204*4882a593Smuzhiyun return 0;
205*4882a593Smuzhiyun }
206*4882a593Smuzhiyun
drm_cmdline_test_res_missing_y_bpp(void * ignored)207*4882a593Smuzhiyun static int drm_cmdline_test_res_missing_y_bpp(void *ignored)
208*4882a593Smuzhiyun {
209*4882a593Smuzhiyun struct drm_cmdline_mode mode = { };
210*4882a593Smuzhiyun
211*4882a593Smuzhiyun FAIL_ON(drm_mode_parse_command_line_for_connector("1024x-24",
212*4882a593Smuzhiyun &no_connector,
213*4882a593Smuzhiyun &mode));
214*4882a593Smuzhiyun
215*4882a593Smuzhiyun return 0;
216*4882a593Smuzhiyun }
217*4882a593Smuzhiyun
drm_cmdline_test_res_vesa(void * ignored)218*4882a593Smuzhiyun static int drm_cmdline_test_res_vesa(void *ignored)
219*4882a593Smuzhiyun {
220*4882a593Smuzhiyun struct drm_cmdline_mode mode = { };
221*4882a593Smuzhiyun
222*4882a593Smuzhiyun FAIL_ON(!drm_mode_parse_command_line_for_connector("720x480M",
223*4882a593Smuzhiyun &no_connector,
224*4882a593Smuzhiyun &mode));
225*4882a593Smuzhiyun FAIL_ON(!mode.specified);
226*4882a593Smuzhiyun FAIL_ON(mode.xres != 720);
227*4882a593Smuzhiyun FAIL_ON(mode.yres != 480);
228*4882a593Smuzhiyun
229*4882a593Smuzhiyun FAIL_ON(mode.refresh_specified);
230*4882a593Smuzhiyun
231*4882a593Smuzhiyun FAIL_ON(mode.bpp_specified);
232*4882a593Smuzhiyun
233*4882a593Smuzhiyun FAIL_ON(mode.rb);
234*4882a593Smuzhiyun FAIL_ON(!mode.cvt);
235*4882a593Smuzhiyun FAIL_ON(mode.interlace);
236*4882a593Smuzhiyun FAIL_ON(mode.margins);
237*4882a593Smuzhiyun FAIL_ON(mode.force != DRM_FORCE_UNSPECIFIED);
238*4882a593Smuzhiyun
239*4882a593Smuzhiyun return 0;
240*4882a593Smuzhiyun }
241*4882a593Smuzhiyun
drm_cmdline_test_res_vesa_rblank(void * ignored)242*4882a593Smuzhiyun static int drm_cmdline_test_res_vesa_rblank(void *ignored)
243*4882a593Smuzhiyun {
244*4882a593Smuzhiyun struct drm_cmdline_mode mode = { };
245*4882a593Smuzhiyun
246*4882a593Smuzhiyun FAIL_ON(!drm_mode_parse_command_line_for_connector("720x480MR",
247*4882a593Smuzhiyun &no_connector,
248*4882a593Smuzhiyun &mode));
249*4882a593Smuzhiyun FAIL_ON(!mode.specified);
250*4882a593Smuzhiyun FAIL_ON(mode.xres != 720);
251*4882a593Smuzhiyun FAIL_ON(mode.yres != 480);
252*4882a593Smuzhiyun
253*4882a593Smuzhiyun FAIL_ON(mode.refresh_specified);
254*4882a593Smuzhiyun
255*4882a593Smuzhiyun FAIL_ON(mode.bpp_specified);
256*4882a593Smuzhiyun
257*4882a593Smuzhiyun FAIL_ON(!mode.rb);
258*4882a593Smuzhiyun FAIL_ON(!mode.cvt);
259*4882a593Smuzhiyun FAIL_ON(mode.interlace);
260*4882a593Smuzhiyun FAIL_ON(mode.margins);
261*4882a593Smuzhiyun FAIL_ON(mode.force != DRM_FORCE_UNSPECIFIED);
262*4882a593Smuzhiyun
263*4882a593Smuzhiyun return 0;
264*4882a593Smuzhiyun }
265*4882a593Smuzhiyun
drm_cmdline_test_res_rblank(void * ignored)266*4882a593Smuzhiyun static int drm_cmdline_test_res_rblank(void *ignored)
267*4882a593Smuzhiyun {
268*4882a593Smuzhiyun struct drm_cmdline_mode mode = { };
269*4882a593Smuzhiyun
270*4882a593Smuzhiyun FAIL_ON(!drm_mode_parse_command_line_for_connector("720x480R",
271*4882a593Smuzhiyun &no_connector,
272*4882a593Smuzhiyun &mode));
273*4882a593Smuzhiyun FAIL_ON(!mode.specified);
274*4882a593Smuzhiyun FAIL_ON(mode.xres != 720);
275*4882a593Smuzhiyun FAIL_ON(mode.yres != 480);
276*4882a593Smuzhiyun
277*4882a593Smuzhiyun FAIL_ON(mode.refresh_specified);
278*4882a593Smuzhiyun
279*4882a593Smuzhiyun FAIL_ON(mode.bpp_specified);
280*4882a593Smuzhiyun
281*4882a593Smuzhiyun FAIL_ON(!mode.rb);
282*4882a593Smuzhiyun FAIL_ON(mode.cvt);
283*4882a593Smuzhiyun FAIL_ON(mode.interlace);
284*4882a593Smuzhiyun FAIL_ON(mode.margins);
285*4882a593Smuzhiyun FAIL_ON(mode.force != DRM_FORCE_UNSPECIFIED);
286*4882a593Smuzhiyun
287*4882a593Smuzhiyun return 0;
288*4882a593Smuzhiyun }
289*4882a593Smuzhiyun
drm_cmdline_test_res_bpp(void * ignored)290*4882a593Smuzhiyun static int drm_cmdline_test_res_bpp(void *ignored)
291*4882a593Smuzhiyun {
292*4882a593Smuzhiyun struct drm_cmdline_mode mode = { };
293*4882a593Smuzhiyun
294*4882a593Smuzhiyun FAIL_ON(!drm_mode_parse_command_line_for_connector("720x480-24",
295*4882a593Smuzhiyun &no_connector,
296*4882a593Smuzhiyun &mode));
297*4882a593Smuzhiyun FAIL_ON(!mode.specified);
298*4882a593Smuzhiyun FAIL_ON(mode.xres != 720);
299*4882a593Smuzhiyun FAIL_ON(mode.yres != 480);
300*4882a593Smuzhiyun
301*4882a593Smuzhiyun FAIL_ON(mode.refresh_specified);
302*4882a593Smuzhiyun
303*4882a593Smuzhiyun FAIL_ON(!mode.bpp_specified);
304*4882a593Smuzhiyun FAIL_ON(mode.bpp != 24);
305*4882a593Smuzhiyun
306*4882a593Smuzhiyun FAIL_ON(mode.rb);
307*4882a593Smuzhiyun FAIL_ON(mode.cvt);
308*4882a593Smuzhiyun FAIL_ON(mode.interlace);
309*4882a593Smuzhiyun FAIL_ON(mode.margins);
310*4882a593Smuzhiyun FAIL_ON(mode.force != DRM_FORCE_UNSPECIFIED);
311*4882a593Smuzhiyun
312*4882a593Smuzhiyun return 0;
313*4882a593Smuzhiyun }
314*4882a593Smuzhiyun
drm_cmdline_test_res_bad_bpp(void * ignored)315*4882a593Smuzhiyun static int drm_cmdline_test_res_bad_bpp(void *ignored)
316*4882a593Smuzhiyun {
317*4882a593Smuzhiyun struct drm_cmdline_mode mode = { };
318*4882a593Smuzhiyun
319*4882a593Smuzhiyun FAIL_ON(drm_mode_parse_command_line_for_connector("720x480-test",
320*4882a593Smuzhiyun &no_connector,
321*4882a593Smuzhiyun &mode));
322*4882a593Smuzhiyun
323*4882a593Smuzhiyun return 0;
324*4882a593Smuzhiyun }
325*4882a593Smuzhiyun
drm_cmdline_test_res_refresh(void * ignored)326*4882a593Smuzhiyun static int drm_cmdline_test_res_refresh(void *ignored)
327*4882a593Smuzhiyun {
328*4882a593Smuzhiyun struct drm_cmdline_mode mode = { };
329*4882a593Smuzhiyun
330*4882a593Smuzhiyun FAIL_ON(!drm_mode_parse_command_line_for_connector("720x480@60",
331*4882a593Smuzhiyun &no_connector,
332*4882a593Smuzhiyun &mode));
333*4882a593Smuzhiyun FAIL_ON(!mode.specified);
334*4882a593Smuzhiyun FAIL_ON(mode.xres != 720);
335*4882a593Smuzhiyun FAIL_ON(mode.yres != 480);
336*4882a593Smuzhiyun
337*4882a593Smuzhiyun FAIL_ON(!mode.refresh_specified);
338*4882a593Smuzhiyun FAIL_ON(mode.refresh != 60);
339*4882a593Smuzhiyun
340*4882a593Smuzhiyun FAIL_ON(mode.bpp_specified);
341*4882a593Smuzhiyun
342*4882a593Smuzhiyun FAIL_ON(mode.rb);
343*4882a593Smuzhiyun FAIL_ON(mode.cvt);
344*4882a593Smuzhiyun FAIL_ON(mode.interlace);
345*4882a593Smuzhiyun FAIL_ON(mode.margins);
346*4882a593Smuzhiyun FAIL_ON(mode.force != DRM_FORCE_UNSPECIFIED);
347*4882a593Smuzhiyun
348*4882a593Smuzhiyun return 0;
349*4882a593Smuzhiyun }
350*4882a593Smuzhiyun
drm_cmdline_test_res_bad_refresh(void * ignored)351*4882a593Smuzhiyun static int drm_cmdline_test_res_bad_refresh(void *ignored)
352*4882a593Smuzhiyun {
353*4882a593Smuzhiyun struct drm_cmdline_mode mode = { };
354*4882a593Smuzhiyun
355*4882a593Smuzhiyun FAIL_ON(drm_mode_parse_command_line_for_connector("720x480@refresh",
356*4882a593Smuzhiyun &no_connector,
357*4882a593Smuzhiyun &mode));
358*4882a593Smuzhiyun
359*4882a593Smuzhiyun return 0;
360*4882a593Smuzhiyun }
361*4882a593Smuzhiyun
drm_cmdline_test_res_bpp_refresh(void * ignored)362*4882a593Smuzhiyun static int drm_cmdline_test_res_bpp_refresh(void *ignored)
363*4882a593Smuzhiyun {
364*4882a593Smuzhiyun struct drm_cmdline_mode mode = { };
365*4882a593Smuzhiyun
366*4882a593Smuzhiyun FAIL_ON(!drm_mode_parse_command_line_for_connector("720x480-24@60",
367*4882a593Smuzhiyun &no_connector,
368*4882a593Smuzhiyun &mode));
369*4882a593Smuzhiyun FAIL_ON(!mode.specified);
370*4882a593Smuzhiyun FAIL_ON(mode.xres != 720);
371*4882a593Smuzhiyun FAIL_ON(mode.yres != 480);
372*4882a593Smuzhiyun
373*4882a593Smuzhiyun FAIL_ON(!mode.refresh_specified);
374*4882a593Smuzhiyun FAIL_ON(mode.refresh != 60);
375*4882a593Smuzhiyun
376*4882a593Smuzhiyun FAIL_ON(!mode.bpp_specified);
377*4882a593Smuzhiyun FAIL_ON(mode.bpp != 24);
378*4882a593Smuzhiyun
379*4882a593Smuzhiyun FAIL_ON(mode.rb);
380*4882a593Smuzhiyun FAIL_ON(mode.cvt);
381*4882a593Smuzhiyun FAIL_ON(mode.interlace);
382*4882a593Smuzhiyun FAIL_ON(mode.margins);
383*4882a593Smuzhiyun FAIL_ON(mode.force != DRM_FORCE_UNSPECIFIED);
384*4882a593Smuzhiyun
385*4882a593Smuzhiyun return 0;
386*4882a593Smuzhiyun }
387*4882a593Smuzhiyun
drm_cmdline_test_res_bpp_refresh_interlaced(void * ignored)388*4882a593Smuzhiyun static int drm_cmdline_test_res_bpp_refresh_interlaced(void *ignored)
389*4882a593Smuzhiyun {
390*4882a593Smuzhiyun struct drm_cmdline_mode mode = { };
391*4882a593Smuzhiyun
392*4882a593Smuzhiyun FAIL_ON(!drm_mode_parse_command_line_for_connector("720x480-24@60i",
393*4882a593Smuzhiyun &no_connector,
394*4882a593Smuzhiyun &mode));
395*4882a593Smuzhiyun FAIL_ON(!mode.specified);
396*4882a593Smuzhiyun FAIL_ON(mode.xres != 720);
397*4882a593Smuzhiyun FAIL_ON(mode.yres != 480);
398*4882a593Smuzhiyun
399*4882a593Smuzhiyun FAIL_ON(!mode.refresh_specified);
400*4882a593Smuzhiyun FAIL_ON(mode.refresh != 60);
401*4882a593Smuzhiyun
402*4882a593Smuzhiyun FAIL_ON(!mode.bpp_specified);
403*4882a593Smuzhiyun FAIL_ON(mode.bpp != 24);
404*4882a593Smuzhiyun
405*4882a593Smuzhiyun FAIL_ON(mode.rb);
406*4882a593Smuzhiyun FAIL_ON(mode.cvt);
407*4882a593Smuzhiyun FAIL_ON(!mode.interlace);
408*4882a593Smuzhiyun FAIL_ON(mode.margins);
409*4882a593Smuzhiyun FAIL_ON(mode.force != DRM_FORCE_UNSPECIFIED);
410*4882a593Smuzhiyun
411*4882a593Smuzhiyun return 0;
412*4882a593Smuzhiyun }
413*4882a593Smuzhiyun
drm_cmdline_test_res_bpp_refresh_margins(void * ignored)414*4882a593Smuzhiyun static int drm_cmdline_test_res_bpp_refresh_margins(void *ignored)
415*4882a593Smuzhiyun {
416*4882a593Smuzhiyun struct drm_cmdline_mode mode = { };
417*4882a593Smuzhiyun
418*4882a593Smuzhiyun FAIL_ON(!drm_mode_parse_command_line_for_connector("720x480-24@60m",
419*4882a593Smuzhiyun &no_connector,
420*4882a593Smuzhiyun &mode));
421*4882a593Smuzhiyun FAIL_ON(!mode.specified);
422*4882a593Smuzhiyun FAIL_ON(mode.xres != 720);
423*4882a593Smuzhiyun FAIL_ON(mode.yres != 480);
424*4882a593Smuzhiyun
425*4882a593Smuzhiyun FAIL_ON(!mode.refresh_specified);
426*4882a593Smuzhiyun FAIL_ON(mode.refresh != 60);
427*4882a593Smuzhiyun
428*4882a593Smuzhiyun FAIL_ON(!mode.bpp_specified);
429*4882a593Smuzhiyun FAIL_ON(mode.bpp != 24);
430*4882a593Smuzhiyun
431*4882a593Smuzhiyun FAIL_ON(mode.rb);
432*4882a593Smuzhiyun FAIL_ON(mode.cvt);
433*4882a593Smuzhiyun FAIL_ON(mode.interlace);
434*4882a593Smuzhiyun FAIL_ON(!mode.margins);
435*4882a593Smuzhiyun FAIL_ON(mode.force != DRM_FORCE_UNSPECIFIED);
436*4882a593Smuzhiyun
437*4882a593Smuzhiyun return 0;
438*4882a593Smuzhiyun }
439*4882a593Smuzhiyun
drm_cmdline_test_res_bpp_refresh_force_off(void * ignored)440*4882a593Smuzhiyun static int drm_cmdline_test_res_bpp_refresh_force_off(void *ignored)
441*4882a593Smuzhiyun {
442*4882a593Smuzhiyun struct drm_cmdline_mode mode = { };
443*4882a593Smuzhiyun
444*4882a593Smuzhiyun FAIL_ON(!drm_mode_parse_command_line_for_connector("720x480-24@60d",
445*4882a593Smuzhiyun &no_connector,
446*4882a593Smuzhiyun &mode));
447*4882a593Smuzhiyun FAIL_ON(!mode.specified);
448*4882a593Smuzhiyun FAIL_ON(mode.xres != 720);
449*4882a593Smuzhiyun FAIL_ON(mode.yres != 480);
450*4882a593Smuzhiyun
451*4882a593Smuzhiyun FAIL_ON(!mode.refresh_specified);
452*4882a593Smuzhiyun FAIL_ON(mode.refresh != 60);
453*4882a593Smuzhiyun
454*4882a593Smuzhiyun FAIL_ON(!mode.bpp_specified);
455*4882a593Smuzhiyun FAIL_ON(mode.bpp != 24);
456*4882a593Smuzhiyun
457*4882a593Smuzhiyun FAIL_ON(mode.rb);
458*4882a593Smuzhiyun FAIL_ON(mode.cvt);
459*4882a593Smuzhiyun FAIL_ON(mode.interlace);
460*4882a593Smuzhiyun FAIL_ON(mode.margins);
461*4882a593Smuzhiyun FAIL_ON(mode.force != DRM_FORCE_OFF);
462*4882a593Smuzhiyun
463*4882a593Smuzhiyun return 0;
464*4882a593Smuzhiyun }
465*4882a593Smuzhiyun
drm_cmdline_test_res_bpp_refresh_force_on_off(void * ignored)466*4882a593Smuzhiyun static int drm_cmdline_test_res_bpp_refresh_force_on_off(void *ignored)
467*4882a593Smuzhiyun {
468*4882a593Smuzhiyun struct drm_cmdline_mode mode = { };
469*4882a593Smuzhiyun
470*4882a593Smuzhiyun FAIL_ON(drm_mode_parse_command_line_for_connector("720x480-24@60de",
471*4882a593Smuzhiyun &no_connector,
472*4882a593Smuzhiyun &mode));
473*4882a593Smuzhiyun
474*4882a593Smuzhiyun return 0;
475*4882a593Smuzhiyun }
476*4882a593Smuzhiyun
drm_cmdline_test_res_bpp_refresh_force_on(void * ignored)477*4882a593Smuzhiyun static int drm_cmdline_test_res_bpp_refresh_force_on(void *ignored)
478*4882a593Smuzhiyun {
479*4882a593Smuzhiyun struct drm_cmdline_mode mode = { };
480*4882a593Smuzhiyun
481*4882a593Smuzhiyun FAIL_ON(!drm_mode_parse_command_line_for_connector("720x480-24@60e",
482*4882a593Smuzhiyun &no_connector,
483*4882a593Smuzhiyun &mode));
484*4882a593Smuzhiyun FAIL_ON(!mode.specified);
485*4882a593Smuzhiyun FAIL_ON(mode.xres != 720);
486*4882a593Smuzhiyun FAIL_ON(mode.yres != 480);
487*4882a593Smuzhiyun
488*4882a593Smuzhiyun FAIL_ON(!mode.refresh_specified);
489*4882a593Smuzhiyun FAIL_ON(mode.refresh != 60);
490*4882a593Smuzhiyun
491*4882a593Smuzhiyun FAIL_ON(!mode.bpp_specified);
492*4882a593Smuzhiyun FAIL_ON(mode.bpp != 24);
493*4882a593Smuzhiyun
494*4882a593Smuzhiyun FAIL_ON(mode.rb);
495*4882a593Smuzhiyun FAIL_ON(mode.cvt);
496*4882a593Smuzhiyun FAIL_ON(mode.interlace);
497*4882a593Smuzhiyun FAIL_ON(mode.margins);
498*4882a593Smuzhiyun FAIL_ON(mode.force != DRM_FORCE_ON);
499*4882a593Smuzhiyun
500*4882a593Smuzhiyun return 0;
501*4882a593Smuzhiyun }
502*4882a593Smuzhiyun
drm_cmdline_test_res_bpp_refresh_force_on_analog(void * ignored)503*4882a593Smuzhiyun static int drm_cmdline_test_res_bpp_refresh_force_on_analog(void *ignored)
504*4882a593Smuzhiyun {
505*4882a593Smuzhiyun struct drm_cmdline_mode mode = { };
506*4882a593Smuzhiyun
507*4882a593Smuzhiyun FAIL_ON(!drm_mode_parse_command_line_for_connector("720x480-24@60D",
508*4882a593Smuzhiyun &no_connector,
509*4882a593Smuzhiyun &mode));
510*4882a593Smuzhiyun FAIL_ON(!mode.specified);
511*4882a593Smuzhiyun FAIL_ON(mode.xres != 720);
512*4882a593Smuzhiyun FAIL_ON(mode.yres != 480);
513*4882a593Smuzhiyun
514*4882a593Smuzhiyun FAIL_ON(!mode.refresh_specified);
515*4882a593Smuzhiyun FAIL_ON(mode.refresh != 60);
516*4882a593Smuzhiyun
517*4882a593Smuzhiyun FAIL_ON(!mode.bpp_specified);
518*4882a593Smuzhiyun FAIL_ON(mode.bpp != 24);
519*4882a593Smuzhiyun
520*4882a593Smuzhiyun FAIL_ON(mode.rb);
521*4882a593Smuzhiyun FAIL_ON(mode.cvt);
522*4882a593Smuzhiyun FAIL_ON(mode.interlace);
523*4882a593Smuzhiyun FAIL_ON(mode.margins);
524*4882a593Smuzhiyun FAIL_ON(mode.force != DRM_FORCE_ON);
525*4882a593Smuzhiyun
526*4882a593Smuzhiyun return 0;
527*4882a593Smuzhiyun }
528*4882a593Smuzhiyun
drm_cmdline_test_res_bpp_refresh_force_on_digital(void * ignored)529*4882a593Smuzhiyun static int drm_cmdline_test_res_bpp_refresh_force_on_digital(void *ignored)
530*4882a593Smuzhiyun {
531*4882a593Smuzhiyun struct drm_cmdline_mode mode = { };
532*4882a593Smuzhiyun static const struct drm_connector connector = {
533*4882a593Smuzhiyun .connector_type = DRM_MODE_CONNECTOR_DVII,
534*4882a593Smuzhiyun };
535*4882a593Smuzhiyun
536*4882a593Smuzhiyun FAIL_ON(!drm_mode_parse_command_line_for_connector("720x480-24@60D",
537*4882a593Smuzhiyun &connector,
538*4882a593Smuzhiyun &mode));
539*4882a593Smuzhiyun FAIL_ON(!mode.specified);
540*4882a593Smuzhiyun FAIL_ON(mode.xres != 720);
541*4882a593Smuzhiyun FAIL_ON(mode.yres != 480);
542*4882a593Smuzhiyun
543*4882a593Smuzhiyun FAIL_ON(!mode.refresh_specified);
544*4882a593Smuzhiyun FAIL_ON(mode.refresh != 60);
545*4882a593Smuzhiyun
546*4882a593Smuzhiyun FAIL_ON(!mode.bpp_specified);
547*4882a593Smuzhiyun FAIL_ON(mode.bpp != 24);
548*4882a593Smuzhiyun
549*4882a593Smuzhiyun FAIL_ON(mode.rb);
550*4882a593Smuzhiyun FAIL_ON(mode.cvt);
551*4882a593Smuzhiyun FAIL_ON(mode.interlace);
552*4882a593Smuzhiyun FAIL_ON(mode.margins);
553*4882a593Smuzhiyun FAIL_ON(mode.force != DRM_FORCE_ON_DIGITAL);
554*4882a593Smuzhiyun
555*4882a593Smuzhiyun return 0;
556*4882a593Smuzhiyun }
557*4882a593Smuzhiyun
drm_cmdline_test_res_bpp_refresh_interlaced_margins_force_on(void * ignored)558*4882a593Smuzhiyun static int drm_cmdline_test_res_bpp_refresh_interlaced_margins_force_on(void *ignored)
559*4882a593Smuzhiyun {
560*4882a593Smuzhiyun struct drm_cmdline_mode mode = { };
561*4882a593Smuzhiyun
562*4882a593Smuzhiyun FAIL_ON(!drm_mode_parse_command_line_for_connector("720x480-24@60ime",
563*4882a593Smuzhiyun &no_connector,
564*4882a593Smuzhiyun &mode));
565*4882a593Smuzhiyun FAIL_ON(!mode.specified);
566*4882a593Smuzhiyun FAIL_ON(mode.xres != 720);
567*4882a593Smuzhiyun FAIL_ON(mode.yres != 480);
568*4882a593Smuzhiyun
569*4882a593Smuzhiyun FAIL_ON(!mode.refresh_specified);
570*4882a593Smuzhiyun FAIL_ON(mode.refresh != 60);
571*4882a593Smuzhiyun
572*4882a593Smuzhiyun FAIL_ON(!mode.bpp_specified);
573*4882a593Smuzhiyun FAIL_ON(mode.bpp != 24);
574*4882a593Smuzhiyun
575*4882a593Smuzhiyun FAIL_ON(mode.rb);
576*4882a593Smuzhiyun FAIL_ON(mode.cvt);
577*4882a593Smuzhiyun FAIL_ON(!mode.interlace);
578*4882a593Smuzhiyun FAIL_ON(!mode.margins);
579*4882a593Smuzhiyun FAIL_ON(mode.force != DRM_FORCE_ON);
580*4882a593Smuzhiyun
581*4882a593Smuzhiyun return 0;
582*4882a593Smuzhiyun }
583*4882a593Smuzhiyun
drm_cmdline_test_res_margins_force_on(void * ignored)584*4882a593Smuzhiyun static int drm_cmdline_test_res_margins_force_on(void *ignored)
585*4882a593Smuzhiyun {
586*4882a593Smuzhiyun struct drm_cmdline_mode mode = { };
587*4882a593Smuzhiyun
588*4882a593Smuzhiyun FAIL_ON(!drm_mode_parse_command_line_for_connector("720x480me",
589*4882a593Smuzhiyun &no_connector,
590*4882a593Smuzhiyun &mode));
591*4882a593Smuzhiyun FAIL_ON(!mode.specified);
592*4882a593Smuzhiyun FAIL_ON(mode.xres != 720);
593*4882a593Smuzhiyun FAIL_ON(mode.yres != 480);
594*4882a593Smuzhiyun
595*4882a593Smuzhiyun FAIL_ON(mode.refresh_specified);
596*4882a593Smuzhiyun
597*4882a593Smuzhiyun FAIL_ON(mode.bpp_specified);
598*4882a593Smuzhiyun
599*4882a593Smuzhiyun FAIL_ON(mode.rb);
600*4882a593Smuzhiyun FAIL_ON(mode.cvt);
601*4882a593Smuzhiyun FAIL_ON(mode.interlace);
602*4882a593Smuzhiyun FAIL_ON(!mode.margins);
603*4882a593Smuzhiyun FAIL_ON(mode.force != DRM_FORCE_ON);
604*4882a593Smuzhiyun
605*4882a593Smuzhiyun return 0;
606*4882a593Smuzhiyun }
607*4882a593Smuzhiyun
drm_cmdline_test_res_vesa_margins(void * ignored)608*4882a593Smuzhiyun static int drm_cmdline_test_res_vesa_margins(void *ignored)
609*4882a593Smuzhiyun {
610*4882a593Smuzhiyun struct drm_cmdline_mode mode = { };
611*4882a593Smuzhiyun
612*4882a593Smuzhiyun FAIL_ON(!drm_mode_parse_command_line_for_connector("720x480Mm",
613*4882a593Smuzhiyun &no_connector,
614*4882a593Smuzhiyun &mode));
615*4882a593Smuzhiyun FAIL_ON(!mode.specified);
616*4882a593Smuzhiyun FAIL_ON(mode.xres != 720);
617*4882a593Smuzhiyun FAIL_ON(mode.yres != 480);
618*4882a593Smuzhiyun
619*4882a593Smuzhiyun FAIL_ON(mode.refresh_specified);
620*4882a593Smuzhiyun
621*4882a593Smuzhiyun FAIL_ON(mode.bpp_specified);
622*4882a593Smuzhiyun
623*4882a593Smuzhiyun FAIL_ON(mode.rb);
624*4882a593Smuzhiyun FAIL_ON(!mode.cvt);
625*4882a593Smuzhiyun FAIL_ON(mode.interlace);
626*4882a593Smuzhiyun FAIL_ON(!mode.margins);
627*4882a593Smuzhiyun FAIL_ON(mode.force != DRM_FORCE_UNSPECIFIED);
628*4882a593Smuzhiyun
629*4882a593Smuzhiyun return 0;
630*4882a593Smuzhiyun }
631*4882a593Smuzhiyun
drm_cmdline_test_res_invalid_mode(void * ignored)632*4882a593Smuzhiyun static int drm_cmdline_test_res_invalid_mode(void *ignored)
633*4882a593Smuzhiyun {
634*4882a593Smuzhiyun struct drm_cmdline_mode mode = { };
635*4882a593Smuzhiyun
636*4882a593Smuzhiyun FAIL_ON(drm_mode_parse_command_line_for_connector("720x480f",
637*4882a593Smuzhiyun &no_connector,
638*4882a593Smuzhiyun &mode));
639*4882a593Smuzhiyun
640*4882a593Smuzhiyun return 0;
641*4882a593Smuzhiyun }
642*4882a593Smuzhiyun
drm_cmdline_test_res_bpp_wrong_place_mode(void * ignored)643*4882a593Smuzhiyun static int drm_cmdline_test_res_bpp_wrong_place_mode(void *ignored)
644*4882a593Smuzhiyun {
645*4882a593Smuzhiyun struct drm_cmdline_mode mode = { };
646*4882a593Smuzhiyun
647*4882a593Smuzhiyun FAIL_ON(drm_mode_parse_command_line_for_connector("720x480e-24",
648*4882a593Smuzhiyun &no_connector,
649*4882a593Smuzhiyun &mode));
650*4882a593Smuzhiyun
651*4882a593Smuzhiyun return 0;
652*4882a593Smuzhiyun }
653*4882a593Smuzhiyun
drm_cmdline_test_name(void * ignored)654*4882a593Smuzhiyun static int drm_cmdline_test_name(void *ignored)
655*4882a593Smuzhiyun {
656*4882a593Smuzhiyun struct drm_cmdline_mode mode = { };
657*4882a593Smuzhiyun
658*4882a593Smuzhiyun FAIL_ON(!drm_mode_parse_command_line_for_connector("NTSC",
659*4882a593Smuzhiyun &no_connector,
660*4882a593Smuzhiyun &mode));
661*4882a593Smuzhiyun FAIL_ON(strcmp(mode.name, "NTSC"));
662*4882a593Smuzhiyun FAIL_ON(mode.refresh_specified);
663*4882a593Smuzhiyun FAIL_ON(mode.bpp_specified);
664*4882a593Smuzhiyun
665*4882a593Smuzhiyun return 0;
666*4882a593Smuzhiyun }
667*4882a593Smuzhiyun
drm_cmdline_test_name_bpp(void * ignored)668*4882a593Smuzhiyun static int drm_cmdline_test_name_bpp(void *ignored)
669*4882a593Smuzhiyun {
670*4882a593Smuzhiyun struct drm_cmdline_mode mode = { };
671*4882a593Smuzhiyun
672*4882a593Smuzhiyun FAIL_ON(!drm_mode_parse_command_line_for_connector("NTSC-24",
673*4882a593Smuzhiyun &no_connector,
674*4882a593Smuzhiyun &mode));
675*4882a593Smuzhiyun FAIL_ON(strcmp(mode.name, "NTSC"));
676*4882a593Smuzhiyun
677*4882a593Smuzhiyun FAIL_ON(mode.refresh_specified);
678*4882a593Smuzhiyun
679*4882a593Smuzhiyun FAIL_ON(!mode.bpp_specified);
680*4882a593Smuzhiyun FAIL_ON(mode.bpp != 24);
681*4882a593Smuzhiyun
682*4882a593Smuzhiyun return 0;
683*4882a593Smuzhiyun }
684*4882a593Smuzhiyun
drm_cmdline_test_name_bpp_refresh(void * ignored)685*4882a593Smuzhiyun static int drm_cmdline_test_name_bpp_refresh(void *ignored)
686*4882a593Smuzhiyun {
687*4882a593Smuzhiyun struct drm_cmdline_mode mode = { };
688*4882a593Smuzhiyun
689*4882a593Smuzhiyun FAIL_ON(drm_mode_parse_command_line_for_connector("NTSC-24@60",
690*4882a593Smuzhiyun &no_connector,
691*4882a593Smuzhiyun &mode));
692*4882a593Smuzhiyun
693*4882a593Smuzhiyun return 0;
694*4882a593Smuzhiyun }
695*4882a593Smuzhiyun
drm_cmdline_test_name_refresh(void * ignored)696*4882a593Smuzhiyun static int drm_cmdline_test_name_refresh(void *ignored)
697*4882a593Smuzhiyun {
698*4882a593Smuzhiyun struct drm_cmdline_mode mode = { };
699*4882a593Smuzhiyun
700*4882a593Smuzhiyun FAIL_ON(drm_mode_parse_command_line_for_connector("NTSC@60",
701*4882a593Smuzhiyun &no_connector,
702*4882a593Smuzhiyun &mode));
703*4882a593Smuzhiyun
704*4882a593Smuzhiyun return 0;
705*4882a593Smuzhiyun }
706*4882a593Smuzhiyun
drm_cmdline_test_name_refresh_wrong_mode(void * ignored)707*4882a593Smuzhiyun static int drm_cmdline_test_name_refresh_wrong_mode(void *ignored)
708*4882a593Smuzhiyun {
709*4882a593Smuzhiyun struct drm_cmdline_mode mode = { };
710*4882a593Smuzhiyun
711*4882a593Smuzhiyun FAIL_ON(drm_mode_parse_command_line_for_connector("NTSC@60m",
712*4882a593Smuzhiyun &no_connector,
713*4882a593Smuzhiyun &mode));
714*4882a593Smuzhiyun
715*4882a593Smuzhiyun return 0;
716*4882a593Smuzhiyun }
717*4882a593Smuzhiyun
drm_cmdline_test_name_refresh_invalid_mode(void * ignored)718*4882a593Smuzhiyun static int drm_cmdline_test_name_refresh_invalid_mode(void *ignored)
719*4882a593Smuzhiyun {
720*4882a593Smuzhiyun struct drm_cmdline_mode mode = { };
721*4882a593Smuzhiyun
722*4882a593Smuzhiyun FAIL_ON(drm_mode_parse_command_line_for_connector("NTSC@60f",
723*4882a593Smuzhiyun &no_connector,
724*4882a593Smuzhiyun &mode));
725*4882a593Smuzhiyun
726*4882a593Smuzhiyun return 0;
727*4882a593Smuzhiyun }
728*4882a593Smuzhiyun
drm_cmdline_test_name_option(void * ignored)729*4882a593Smuzhiyun static int drm_cmdline_test_name_option(void *ignored)
730*4882a593Smuzhiyun {
731*4882a593Smuzhiyun struct drm_cmdline_mode mode = { };
732*4882a593Smuzhiyun
733*4882a593Smuzhiyun FAIL_ON(!drm_mode_parse_command_line_for_connector("NTSC,rotate=180",
734*4882a593Smuzhiyun &no_connector,
735*4882a593Smuzhiyun &mode));
736*4882a593Smuzhiyun FAIL_ON(!mode.specified);
737*4882a593Smuzhiyun FAIL_ON(strcmp(mode.name, "NTSC"));
738*4882a593Smuzhiyun FAIL_ON(mode.rotation_reflection != DRM_MODE_ROTATE_180);
739*4882a593Smuzhiyun
740*4882a593Smuzhiyun return 0;
741*4882a593Smuzhiyun }
742*4882a593Smuzhiyun
drm_cmdline_test_name_bpp_option(void * ignored)743*4882a593Smuzhiyun static int drm_cmdline_test_name_bpp_option(void *ignored)
744*4882a593Smuzhiyun {
745*4882a593Smuzhiyun struct drm_cmdline_mode mode = { };
746*4882a593Smuzhiyun
747*4882a593Smuzhiyun FAIL_ON(!drm_mode_parse_command_line_for_connector("NTSC-24,rotate=180",
748*4882a593Smuzhiyun &no_connector,
749*4882a593Smuzhiyun &mode));
750*4882a593Smuzhiyun FAIL_ON(!mode.specified);
751*4882a593Smuzhiyun FAIL_ON(strcmp(mode.name, "NTSC"));
752*4882a593Smuzhiyun FAIL_ON(mode.rotation_reflection != DRM_MODE_ROTATE_180);
753*4882a593Smuzhiyun FAIL_ON(!mode.bpp_specified);
754*4882a593Smuzhiyun FAIL_ON(mode.bpp != 24);
755*4882a593Smuzhiyun
756*4882a593Smuzhiyun return 0;
757*4882a593Smuzhiyun }
758*4882a593Smuzhiyun
drm_cmdline_test_rotate_0(void * ignored)759*4882a593Smuzhiyun static int drm_cmdline_test_rotate_0(void *ignored)
760*4882a593Smuzhiyun {
761*4882a593Smuzhiyun struct drm_cmdline_mode mode = { };
762*4882a593Smuzhiyun
763*4882a593Smuzhiyun FAIL_ON(!drm_mode_parse_command_line_for_connector("720x480,rotate=0",
764*4882a593Smuzhiyun &no_connector,
765*4882a593Smuzhiyun &mode));
766*4882a593Smuzhiyun FAIL_ON(!mode.specified);
767*4882a593Smuzhiyun FAIL_ON(mode.xres != 720);
768*4882a593Smuzhiyun FAIL_ON(mode.yres != 480);
769*4882a593Smuzhiyun FAIL_ON(mode.rotation_reflection != DRM_MODE_ROTATE_0);
770*4882a593Smuzhiyun
771*4882a593Smuzhiyun FAIL_ON(mode.refresh_specified);
772*4882a593Smuzhiyun
773*4882a593Smuzhiyun FAIL_ON(mode.bpp_specified);
774*4882a593Smuzhiyun
775*4882a593Smuzhiyun FAIL_ON(mode.rb);
776*4882a593Smuzhiyun FAIL_ON(mode.cvt);
777*4882a593Smuzhiyun FAIL_ON(mode.interlace);
778*4882a593Smuzhiyun FAIL_ON(mode.margins);
779*4882a593Smuzhiyun FAIL_ON(mode.force != DRM_FORCE_UNSPECIFIED);
780*4882a593Smuzhiyun
781*4882a593Smuzhiyun return 0;
782*4882a593Smuzhiyun }
783*4882a593Smuzhiyun
drm_cmdline_test_rotate_90(void * ignored)784*4882a593Smuzhiyun static int drm_cmdline_test_rotate_90(void *ignored)
785*4882a593Smuzhiyun {
786*4882a593Smuzhiyun struct drm_cmdline_mode mode = { };
787*4882a593Smuzhiyun
788*4882a593Smuzhiyun FAIL_ON(!drm_mode_parse_command_line_for_connector("720x480,rotate=90",
789*4882a593Smuzhiyun &no_connector,
790*4882a593Smuzhiyun &mode));
791*4882a593Smuzhiyun FAIL_ON(!mode.specified);
792*4882a593Smuzhiyun FAIL_ON(mode.xres != 720);
793*4882a593Smuzhiyun FAIL_ON(mode.yres != 480);
794*4882a593Smuzhiyun FAIL_ON(mode.rotation_reflection != DRM_MODE_ROTATE_90);
795*4882a593Smuzhiyun
796*4882a593Smuzhiyun FAIL_ON(mode.refresh_specified);
797*4882a593Smuzhiyun
798*4882a593Smuzhiyun FAIL_ON(mode.bpp_specified);
799*4882a593Smuzhiyun
800*4882a593Smuzhiyun FAIL_ON(mode.rb);
801*4882a593Smuzhiyun FAIL_ON(mode.cvt);
802*4882a593Smuzhiyun FAIL_ON(mode.interlace);
803*4882a593Smuzhiyun FAIL_ON(mode.margins);
804*4882a593Smuzhiyun FAIL_ON(mode.force != DRM_FORCE_UNSPECIFIED);
805*4882a593Smuzhiyun
806*4882a593Smuzhiyun return 0;
807*4882a593Smuzhiyun }
808*4882a593Smuzhiyun
drm_cmdline_test_rotate_180(void * ignored)809*4882a593Smuzhiyun static int drm_cmdline_test_rotate_180(void *ignored)
810*4882a593Smuzhiyun {
811*4882a593Smuzhiyun struct drm_cmdline_mode mode = { };
812*4882a593Smuzhiyun
813*4882a593Smuzhiyun FAIL_ON(!drm_mode_parse_command_line_for_connector("720x480,rotate=180",
814*4882a593Smuzhiyun &no_connector,
815*4882a593Smuzhiyun &mode));
816*4882a593Smuzhiyun FAIL_ON(!mode.specified);
817*4882a593Smuzhiyun FAIL_ON(mode.xres != 720);
818*4882a593Smuzhiyun FAIL_ON(mode.yres != 480);
819*4882a593Smuzhiyun FAIL_ON(mode.rotation_reflection != DRM_MODE_ROTATE_180);
820*4882a593Smuzhiyun
821*4882a593Smuzhiyun FAIL_ON(mode.refresh_specified);
822*4882a593Smuzhiyun
823*4882a593Smuzhiyun FAIL_ON(mode.bpp_specified);
824*4882a593Smuzhiyun
825*4882a593Smuzhiyun FAIL_ON(mode.rb);
826*4882a593Smuzhiyun FAIL_ON(mode.cvt);
827*4882a593Smuzhiyun FAIL_ON(mode.interlace);
828*4882a593Smuzhiyun FAIL_ON(mode.margins);
829*4882a593Smuzhiyun FAIL_ON(mode.force != DRM_FORCE_UNSPECIFIED);
830*4882a593Smuzhiyun
831*4882a593Smuzhiyun return 0;
832*4882a593Smuzhiyun }
833*4882a593Smuzhiyun
drm_cmdline_test_rotate_270(void * ignored)834*4882a593Smuzhiyun static int drm_cmdline_test_rotate_270(void *ignored)
835*4882a593Smuzhiyun {
836*4882a593Smuzhiyun struct drm_cmdline_mode mode = { };
837*4882a593Smuzhiyun
838*4882a593Smuzhiyun FAIL_ON(!drm_mode_parse_command_line_for_connector("720x480,rotate=270",
839*4882a593Smuzhiyun &no_connector,
840*4882a593Smuzhiyun &mode));
841*4882a593Smuzhiyun FAIL_ON(!mode.specified);
842*4882a593Smuzhiyun FAIL_ON(mode.xres != 720);
843*4882a593Smuzhiyun FAIL_ON(mode.yres != 480);
844*4882a593Smuzhiyun FAIL_ON(mode.rotation_reflection != DRM_MODE_ROTATE_270);
845*4882a593Smuzhiyun
846*4882a593Smuzhiyun FAIL_ON(mode.refresh_specified);
847*4882a593Smuzhiyun
848*4882a593Smuzhiyun FAIL_ON(mode.bpp_specified);
849*4882a593Smuzhiyun
850*4882a593Smuzhiyun FAIL_ON(mode.rb);
851*4882a593Smuzhiyun FAIL_ON(mode.cvt);
852*4882a593Smuzhiyun FAIL_ON(mode.interlace);
853*4882a593Smuzhiyun FAIL_ON(mode.margins);
854*4882a593Smuzhiyun FAIL_ON(mode.force != DRM_FORCE_UNSPECIFIED);
855*4882a593Smuzhiyun
856*4882a593Smuzhiyun return 0;
857*4882a593Smuzhiyun }
858*4882a593Smuzhiyun
drm_cmdline_test_rotate_multiple(void * ignored)859*4882a593Smuzhiyun static int drm_cmdline_test_rotate_multiple(void *ignored)
860*4882a593Smuzhiyun {
861*4882a593Smuzhiyun struct drm_cmdline_mode mode = { };
862*4882a593Smuzhiyun
863*4882a593Smuzhiyun FAIL_ON(drm_mode_parse_command_line_for_connector("720x480,rotate=0,rotate=90",
864*4882a593Smuzhiyun &no_connector,
865*4882a593Smuzhiyun &mode));
866*4882a593Smuzhiyun
867*4882a593Smuzhiyun return 0;
868*4882a593Smuzhiyun }
869*4882a593Smuzhiyun
drm_cmdline_test_rotate_invalid_val(void * ignored)870*4882a593Smuzhiyun static int drm_cmdline_test_rotate_invalid_val(void *ignored)
871*4882a593Smuzhiyun {
872*4882a593Smuzhiyun struct drm_cmdline_mode mode = { };
873*4882a593Smuzhiyun
874*4882a593Smuzhiyun FAIL_ON(drm_mode_parse_command_line_for_connector("720x480,rotate=42",
875*4882a593Smuzhiyun &no_connector,
876*4882a593Smuzhiyun &mode));
877*4882a593Smuzhiyun
878*4882a593Smuzhiyun return 0;
879*4882a593Smuzhiyun }
880*4882a593Smuzhiyun
drm_cmdline_test_rotate_truncated(void * ignored)881*4882a593Smuzhiyun static int drm_cmdline_test_rotate_truncated(void *ignored)
882*4882a593Smuzhiyun {
883*4882a593Smuzhiyun struct drm_cmdline_mode mode = { };
884*4882a593Smuzhiyun
885*4882a593Smuzhiyun FAIL_ON(drm_mode_parse_command_line_for_connector("720x480,rotate=",
886*4882a593Smuzhiyun &no_connector,
887*4882a593Smuzhiyun &mode));
888*4882a593Smuzhiyun
889*4882a593Smuzhiyun return 0;
890*4882a593Smuzhiyun }
891*4882a593Smuzhiyun
drm_cmdline_test_hmirror(void * ignored)892*4882a593Smuzhiyun static int drm_cmdline_test_hmirror(void *ignored)
893*4882a593Smuzhiyun {
894*4882a593Smuzhiyun struct drm_cmdline_mode mode = { };
895*4882a593Smuzhiyun
896*4882a593Smuzhiyun FAIL_ON(!drm_mode_parse_command_line_for_connector("720x480,reflect_x",
897*4882a593Smuzhiyun &no_connector,
898*4882a593Smuzhiyun &mode));
899*4882a593Smuzhiyun FAIL_ON(!mode.specified);
900*4882a593Smuzhiyun FAIL_ON(mode.xres != 720);
901*4882a593Smuzhiyun FAIL_ON(mode.yres != 480);
902*4882a593Smuzhiyun FAIL_ON(mode.rotation_reflection != (DRM_MODE_ROTATE_0 | DRM_MODE_REFLECT_X));
903*4882a593Smuzhiyun
904*4882a593Smuzhiyun FAIL_ON(mode.refresh_specified);
905*4882a593Smuzhiyun
906*4882a593Smuzhiyun FAIL_ON(mode.bpp_specified);
907*4882a593Smuzhiyun
908*4882a593Smuzhiyun FAIL_ON(mode.rb);
909*4882a593Smuzhiyun FAIL_ON(mode.cvt);
910*4882a593Smuzhiyun FAIL_ON(mode.interlace);
911*4882a593Smuzhiyun FAIL_ON(mode.margins);
912*4882a593Smuzhiyun FAIL_ON(mode.force != DRM_FORCE_UNSPECIFIED);
913*4882a593Smuzhiyun
914*4882a593Smuzhiyun return 0;
915*4882a593Smuzhiyun }
916*4882a593Smuzhiyun
drm_cmdline_test_vmirror(void * ignored)917*4882a593Smuzhiyun static int drm_cmdline_test_vmirror(void *ignored)
918*4882a593Smuzhiyun {
919*4882a593Smuzhiyun struct drm_cmdline_mode mode = { };
920*4882a593Smuzhiyun
921*4882a593Smuzhiyun FAIL_ON(!drm_mode_parse_command_line_for_connector("720x480,reflect_y",
922*4882a593Smuzhiyun &no_connector,
923*4882a593Smuzhiyun &mode));
924*4882a593Smuzhiyun FAIL_ON(!mode.specified);
925*4882a593Smuzhiyun FAIL_ON(mode.xres != 720);
926*4882a593Smuzhiyun FAIL_ON(mode.yres != 480);
927*4882a593Smuzhiyun FAIL_ON(mode.rotation_reflection != (DRM_MODE_ROTATE_0 | DRM_MODE_REFLECT_Y));
928*4882a593Smuzhiyun
929*4882a593Smuzhiyun FAIL_ON(mode.refresh_specified);
930*4882a593Smuzhiyun
931*4882a593Smuzhiyun FAIL_ON(mode.bpp_specified);
932*4882a593Smuzhiyun
933*4882a593Smuzhiyun FAIL_ON(mode.rb);
934*4882a593Smuzhiyun FAIL_ON(mode.cvt);
935*4882a593Smuzhiyun FAIL_ON(mode.interlace);
936*4882a593Smuzhiyun FAIL_ON(mode.margins);
937*4882a593Smuzhiyun FAIL_ON(mode.force != DRM_FORCE_UNSPECIFIED);
938*4882a593Smuzhiyun
939*4882a593Smuzhiyun return 0;
940*4882a593Smuzhiyun }
941*4882a593Smuzhiyun
drm_cmdline_test_margin_options(void * ignored)942*4882a593Smuzhiyun static int drm_cmdline_test_margin_options(void *ignored)
943*4882a593Smuzhiyun {
944*4882a593Smuzhiyun struct drm_cmdline_mode mode = { };
945*4882a593Smuzhiyun
946*4882a593Smuzhiyun FAIL_ON(!drm_mode_parse_command_line_for_connector("720x480,margin_right=14,margin_left=24,margin_bottom=36,margin_top=42",
947*4882a593Smuzhiyun &no_connector,
948*4882a593Smuzhiyun &mode));
949*4882a593Smuzhiyun FAIL_ON(!mode.specified);
950*4882a593Smuzhiyun FAIL_ON(mode.xres != 720);
951*4882a593Smuzhiyun FAIL_ON(mode.yres != 480);
952*4882a593Smuzhiyun FAIL_ON(mode.tv_margins.right != 14);
953*4882a593Smuzhiyun FAIL_ON(mode.tv_margins.left != 24);
954*4882a593Smuzhiyun FAIL_ON(mode.tv_margins.bottom != 36);
955*4882a593Smuzhiyun FAIL_ON(mode.tv_margins.top != 42);
956*4882a593Smuzhiyun
957*4882a593Smuzhiyun FAIL_ON(mode.refresh_specified);
958*4882a593Smuzhiyun
959*4882a593Smuzhiyun FAIL_ON(mode.bpp_specified);
960*4882a593Smuzhiyun
961*4882a593Smuzhiyun FAIL_ON(mode.rb);
962*4882a593Smuzhiyun FAIL_ON(mode.cvt);
963*4882a593Smuzhiyun FAIL_ON(mode.interlace);
964*4882a593Smuzhiyun FAIL_ON(mode.margins);
965*4882a593Smuzhiyun FAIL_ON(mode.force != DRM_FORCE_UNSPECIFIED);
966*4882a593Smuzhiyun
967*4882a593Smuzhiyun return 0;
968*4882a593Smuzhiyun }
969*4882a593Smuzhiyun
drm_cmdline_test_multiple_options(void * ignored)970*4882a593Smuzhiyun static int drm_cmdline_test_multiple_options(void *ignored)
971*4882a593Smuzhiyun {
972*4882a593Smuzhiyun struct drm_cmdline_mode mode = { };
973*4882a593Smuzhiyun
974*4882a593Smuzhiyun FAIL_ON(!drm_mode_parse_command_line_for_connector("720x480,rotate=270,reflect_x",
975*4882a593Smuzhiyun &no_connector,
976*4882a593Smuzhiyun &mode));
977*4882a593Smuzhiyun FAIL_ON(!mode.specified);
978*4882a593Smuzhiyun FAIL_ON(mode.xres != 720);
979*4882a593Smuzhiyun FAIL_ON(mode.yres != 480);
980*4882a593Smuzhiyun FAIL_ON(mode.rotation_reflection != (DRM_MODE_ROTATE_270 | DRM_MODE_REFLECT_X));
981*4882a593Smuzhiyun
982*4882a593Smuzhiyun FAIL_ON(mode.refresh_specified);
983*4882a593Smuzhiyun
984*4882a593Smuzhiyun FAIL_ON(mode.bpp_specified);
985*4882a593Smuzhiyun
986*4882a593Smuzhiyun FAIL_ON(mode.rb);
987*4882a593Smuzhiyun FAIL_ON(mode.cvt);
988*4882a593Smuzhiyun FAIL_ON(mode.interlace);
989*4882a593Smuzhiyun FAIL_ON(mode.margins);
990*4882a593Smuzhiyun FAIL_ON(mode.force != DRM_FORCE_UNSPECIFIED);
991*4882a593Smuzhiyun
992*4882a593Smuzhiyun return 0;
993*4882a593Smuzhiyun }
994*4882a593Smuzhiyun
drm_cmdline_test_invalid_option(void * ignored)995*4882a593Smuzhiyun static int drm_cmdline_test_invalid_option(void *ignored)
996*4882a593Smuzhiyun {
997*4882a593Smuzhiyun struct drm_cmdline_mode mode = { };
998*4882a593Smuzhiyun
999*4882a593Smuzhiyun FAIL_ON(drm_mode_parse_command_line_for_connector("720x480,test=42",
1000*4882a593Smuzhiyun &no_connector,
1001*4882a593Smuzhiyun &mode));
1002*4882a593Smuzhiyun
1003*4882a593Smuzhiyun return 0;
1004*4882a593Smuzhiyun }
1005*4882a593Smuzhiyun
drm_cmdline_test_bpp_extra_and_option(void * ignored)1006*4882a593Smuzhiyun static int drm_cmdline_test_bpp_extra_and_option(void *ignored)
1007*4882a593Smuzhiyun {
1008*4882a593Smuzhiyun struct drm_cmdline_mode mode = { };
1009*4882a593Smuzhiyun
1010*4882a593Smuzhiyun FAIL_ON(!drm_mode_parse_command_line_for_connector("720x480-24e,rotate=180",
1011*4882a593Smuzhiyun &no_connector,
1012*4882a593Smuzhiyun &mode));
1013*4882a593Smuzhiyun FAIL_ON(!mode.specified);
1014*4882a593Smuzhiyun FAIL_ON(mode.xres != 720);
1015*4882a593Smuzhiyun FAIL_ON(mode.yres != 480);
1016*4882a593Smuzhiyun FAIL_ON(mode.rotation_reflection != DRM_MODE_ROTATE_180);
1017*4882a593Smuzhiyun
1018*4882a593Smuzhiyun FAIL_ON(mode.refresh_specified);
1019*4882a593Smuzhiyun
1020*4882a593Smuzhiyun FAIL_ON(!mode.bpp_specified);
1021*4882a593Smuzhiyun FAIL_ON(mode.bpp != 24);
1022*4882a593Smuzhiyun
1023*4882a593Smuzhiyun FAIL_ON(mode.rb);
1024*4882a593Smuzhiyun FAIL_ON(mode.cvt);
1025*4882a593Smuzhiyun FAIL_ON(mode.interlace);
1026*4882a593Smuzhiyun FAIL_ON(mode.margins);
1027*4882a593Smuzhiyun FAIL_ON(mode.force != DRM_FORCE_ON);
1028*4882a593Smuzhiyun
1029*4882a593Smuzhiyun return 0;
1030*4882a593Smuzhiyun }
1031*4882a593Smuzhiyun
drm_cmdline_test_extra_and_option(void * ignored)1032*4882a593Smuzhiyun static int drm_cmdline_test_extra_and_option(void *ignored)
1033*4882a593Smuzhiyun {
1034*4882a593Smuzhiyun struct drm_cmdline_mode mode = { };
1035*4882a593Smuzhiyun
1036*4882a593Smuzhiyun FAIL_ON(!drm_mode_parse_command_line_for_connector("720x480e,rotate=180",
1037*4882a593Smuzhiyun &no_connector,
1038*4882a593Smuzhiyun &mode));
1039*4882a593Smuzhiyun FAIL_ON(!mode.specified);
1040*4882a593Smuzhiyun FAIL_ON(mode.xres != 720);
1041*4882a593Smuzhiyun FAIL_ON(mode.yres != 480);
1042*4882a593Smuzhiyun FAIL_ON(mode.rotation_reflection != DRM_MODE_ROTATE_180);
1043*4882a593Smuzhiyun
1044*4882a593Smuzhiyun FAIL_ON(mode.refresh_specified);
1045*4882a593Smuzhiyun FAIL_ON(mode.bpp_specified);
1046*4882a593Smuzhiyun
1047*4882a593Smuzhiyun FAIL_ON(mode.rb);
1048*4882a593Smuzhiyun FAIL_ON(mode.cvt);
1049*4882a593Smuzhiyun FAIL_ON(mode.interlace);
1050*4882a593Smuzhiyun FAIL_ON(mode.margins);
1051*4882a593Smuzhiyun FAIL_ON(mode.force != DRM_FORCE_ON);
1052*4882a593Smuzhiyun
1053*4882a593Smuzhiyun return 0;
1054*4882a593Smuzhiyun }
1055*4882a593Smuzhiyun
drm_cmdline_test_freestanding_options(void * ignored)1056*4882a593Smuzhiyun static int drm_cmdline_test_freestanding_options(void *ignored)
1057*4882a593Smuzhiyun {
1058*4882a593Smuzhiyun struct drm_cmdline_mode mode = { };
1059*4882a593Smuzhiyun
1060*4882a593Smuzhiyun FAIL_ON(!drm_mode_parse_command_line_for_connector("margin_right=14,margin_left=24,margin_bottom=36,margin_top=42",
1061*4882a593Smuzhiyun &no_connector,
1062*4882a593Smuzhiyun &mode));
1063*4882a593Smuzhiyun FAIL_ON(mode.specified);
1064*4882a593Smuzhiyun FAIL_ON(mode.refresh_specified);
1065*4882a593Smuzhiyun FAIL_ON(mode.bpp_specified);
1066*4882a593Smuzhiyun
1067*4882a593Smuzhiyun FAIL_ON(mode.tv_margins.right != 14);
1068*4882a593Smuzhiyun FAIL_ON(mode.tv_margins.left != 24);
1069*4882a593Smuzhiyun FAIL_ON(mode.tv_margins.bottom != 36);
1070*4882a593Smuzhiyun FAIL_ON(mode.tv_margins.top != 42);
1071*4882a593Smuzhiyun
1072*4882a593Smuzhiyun FAIL_ON(mode.rb);
1073*4882a593Smuzhiyun FAIL_ON(mode.cvt);
1074*4882a593Smuzhiyun FAIL_ON(mode.interlace);
1075*4882a593Smuzhiyun FAIL_ON(mode.margins);
1076*4882a593Smuzhiyun FAIL_ON(mode.force != DRM_FORCE_UNSPECIFIED);
1077*4882a593Smuzhiyun
1078*4882a593Smuzhiyun return 0;
1079*4882a593Smuzhiyun }
1080*4882a593Smuzhiyun
drm_cmdline_test_freestanding_force_e_and_options(void * ignored)1081*4882a593Smuzhiyun static int drm_cmdline_test_freestanding_force_e_and_options(void *ignored)
1082*4882a593Smuzhiyun {
1083*4882a593Smuzhiyun struct drm_cmdline_mode mode = { };
1084*4882a593Smuzhiyun
1085*4882a593Smuzhiyun FAIL_ON(!drm_mode_parse_command_line_for_connector("e,margin_right=14,margin_left=24,margin_bottom=36,margin_top=42",
1086*4882a593Smuzhiyun &no_connector,
1087*4882a593Smuzhiyun &mode));
1088*4882a593Smuzhiyun FAIL_ON(mode.specified);
1089*4882a593Smuzhiyun FAIL_ON(mode.refresh_specified);
1090*4882a593Smuzhiyun FAIL_ON(mode.bpp_specified);
1091*4882a593Smuzhiyun
1092*4882a593Smuzhiyun FAIL_ON(mode.tv_margins.right != 14);
1093*4882a593Smuzhiyun FAIL_ON(mode.tv_margins.left != 24);
1094*4882a593Smuzhiyun FAIL_ON(mode.tv_margins.bottom != 36);
1095*4882a593Smuzhiyun FAIL_ON(mode.tv_margins.top != 42);
1096*4882a593Smuzhiyun
1097*4882a593Smuzhiyun FAIL_ON(mode.rb);
1098*4882a593Smuzhiyun FAIL_ON(mode.cvt);
1099*4882a593Smuzhiyun FAIL_ON(mode.interlace);
1100*4882a593Smuzhiyun FAIL_ON(mode.margins);
1101*4882a593Smuzhiyun FAIL_ON(mode.force != DRM_FORCE_ON);
1102*4882a593Smuzhiyun
1103*4882a593Smuzhiyun return 0;
1104*4882a593Smuzhiyun }
1105*4882a593Smuzhiyun
drm_cmdline_test_panel_orientation(void * ignored)1106*4882a593Smuzhiyun static int drm_cmdline_test_panel_orientation(void *ignored)
1107*4882a593Smuzhiyun {
1108*4882a593Smuzhiyun struct drm_cmdline_mode mode = { };
1109*4882a593Smuzhiyun
1110*4882a593Smuzhiyun FAIL_ON(!drm_mode_parse_command_line_for_connector("panel_orientation=upside_down",
1111*4882a593Smuzhiyun &no_connector,
1112*4882a593Smuzhiyun &mode));
1113*4882a593Smuzhiyun FAIL_ON(mode.specified);
1114*4882a593Smuzhiyun FAIL_ON(mode.refresh_specified);
1115*4882a593Smuzhiyun FAIL_ON(mode.bpp_specified);
1116*4882a593Smuzhiyun
1117*4882a593Smuzhiyun FAIL_ON(mode.panel_orientation != DRM_MODE_PANEL_ORIENTATION_BOTTOM_UP);
1118*4882a593Smuzhiyun
1119*4882a593Smuzhiyun FAIL_ON(mode.rb);
1120*4882a593Smuzhiyun FAIL_ON(mode.cvt);
1121*4882a593Smuzhiyun FAIL_ON(mode.interlace);
1122*4882a593Smuzhiyun FAIL_ON(mode.margins);
1123*4882a593Smuzhiyun FAIL_ON(mode.force != DRM_FORCE_UNSPECIFIED);
1124*4882a593Smuzhiyun
1125*4882a593Smuzhiyun return 0;
1126*4882a593Smuzhiyun }
1127*4882a593Smuzhiyun
1128*4882a593Smuzhiyun #include "drm_selftest.c"
1129*4882a593Smuzhiyun
test_drm_cmdline_init(void)1130*4882a593Smuzhiyun static int __init test_drm_cmdline_init(void)
1131*4882a593Smuzhiyun {
1132*4882a593Smuzhiyun int err;
1133*4882a593Smuzhiyun
1134*4882a593Smuzhiyun err = run_selftests(selftests, ARRAY_SIZE(selftests), NULL);
1135*4882a593Smuzhiyun
1136*4882a593Smuzhiyun return err > 0 ? 0 : err;
1137*4882a593Smuzhiyun }
1138*4882a593Smuzhiyun module_init(test_drm_cmdline_init);
1139*4882a593Smuzhiyun
1140*4882a593Smuzhiyun MODULE_AUTHOR("Maxime Ripard <maxime.ripard@bootlin.com>");
1141*4882a593Smuzhiyun MODULE_LICENSE("GPL");
1142