2020-03-23 07:48:08 +00:00
|
|
|
From bc4d8c5519c74b9bdf4d35369ba76bac01be8ca2 Mon Sep 17 00:00:00 2001
|
|
|
|
From: Hans de Goede <hdegoede@redhat.com>
|
|
|
|
Date: Mon, 18 Nov 2019 16:51:25 +0100
|
|
|
|
Subject: [PATCH] drm/modes: parse_cmdline: Accept extras directly
|
|
|
|
after mode combined with options
|
|
|
|
|
|
|
|
Commit cfb0881b8f621b656a9e23b31944a5db94cf5842 upstream.
|
|
|
|
|
|
|
|
Before this commit it was impossible to combine an extra mode argument
|
|
|
|
specified directly after the resolution with an option, e.g.
|
|
|
|
video=HDMI-1:720x480e,rotate=180 would not work, either the "e" to force
|
|
|
|
enable would need to be dropped or the ",rotate=180", otherwise the
|
|
|
|
mode_option would not be accepted.
|
|
|
|
|
|
|
|
This commit fixes this by setting parse_extras to true in this case, so
|
|
|
|
that drm_mode_parse_cmdline_res_mode() parses the extra arguments directly
|
|
|
|
after the resolution.
|
|
|
|
|
|
|
|
Acked-by: Maxime Ripard <mripard@kernel.org>
|
|
|
|
Signed-off-by: Hans de Goede <hdegoede@redhat.com>
|
|
|
|
Link: https://patchwork.freedesktop.org/patch/msgid/20191118155134.30468-4-hdegoede@redhat.com
|
|
|
|
---
|
|
|
|
drivers/gpu/drm/drm_modes.c | 1 +
|
|
|
|
.../gpu/drm/selftests/drm_cmdline_selftests.h | 1 +
|
|
|
|
.../drm/selftests/test-drm_cmdline_parser.c | 24 +++++++++++++++++++
|
|
|
|
3 files changed, 26 insertions(+)
|
|
|
|
|
|
|
|
--- a/drivers/gpu/drm/drm_modes.c
|
|
|
|
+++ b/drivers/gpu/drm/drm_modes.c
|
2020-03-26 14:19:42 +00:00
|
|
|
@@ -1801,6 +1801,7 @@ bool drm_mode_parse_command_line_for_con
|
2020-03-23 07:48:08 +00:00
|
|
|
mode_end = refresh_off;
|
|
|
|
} else if (options_ptr) {
|
|
|
|
mode_end = options_off;
|
|
|
|
+ parse_extras = true;
|
|
|
|
} else {
|
|
|
|
mode_end = strlen(name);
|
|
|
|
parse_extras = true;
|
|
|
|
--- a/drivers/gpu/drm/selftests/drm_cmdline_selftests.h
|
|
|
|
+++ b/drivers/gpu/drm/selftests/drm_cmdline_selftests.h
|
2020-03-26 14:19:42 +00:00
|
|
|
@@ -62,3 +62,4 @@ cmdline_test(drm_cmdline_test_margin_opt
|
2020-03-23 07:48:08 +00:00
|
|
|
cmdline_test(drm_cmdline_test_multiple_options)
|
|
|
|
cmdline_test(drm_cmdline_test_invalid_option)
|
|
|
|
cmdline_test(drm_cmdline_test_bpp_extra_and_option)
|
|
|
|
+cmdline_test(drm_cmdline_test_extra_and_option)
|
|
|
|
--- a/drivers/gpu/drm/selftests/test-drm_cmdline_parser.c
|
|
|
|
+++ b/drivers/gpu/drm/selftests/test-drm_cmdline_parser.c
|
2020-03-26 14:19:42 +00:00
|
|
|
@@ -1029,6 +1029,30 @@ static int drm_cmdline_test_bpp_extra_an
|
2020-03-23 07:48:08 +00:00
|
|
|
return 0;
|
|
|
|
}
|
|
|
|
|
|
|
|
+static int drm_cmdline_test_extra_and_option(void *ignored)
|
|
|
|
+{
|
|
|
|
+ struct drm_cmdline_mode mode = { };
|
|
|
|
+
|
|
|
|
+ FAIL_ON(!drm_mode_parse_command_line_for_connector("720x480e,rotate=180",
|
|
|
|
+ &no_connector,
|
|
|
|
+ &mode));
|
|
|
|
+ FAIL_ON(!mode.specified);
|
|
|
|
+ FAIL_ON(mode.xres != 720);
|
|
|
|
+ FAIL_ON(mode.yres != 480);
|
|
|
|
+ FAIL_ON(mode.rotation_reflection != DRM_MODE_ROTATE_180);
|
|
|
|
+
|
|
|
|
+ FAIL_ON(mode.refresh_specified);
|
|
|
|
+ FAIL_ON(mode.bpp_specified);
|
|
|
|
+
|
|
|
|
+ FAIL_ON(mode.rb);
|
|
|
|
+ FAIL_ON(mode.cvt);
|
|
|
|
+ FAIL_ON(mode.interlace);
|
|
|
|
+ FAIL_ON(mode.margins);
|
|
|
|
+ FAIL_ON(mode.force != DRM_FORCE_ON);
|
|
|
|
+
|
|
|
|
+ return 0;
|
|
|
|
+}
|
|
|
|
+
|
|
|
|
#include "drm_selftest.c"
|
|
|
|
|
|
|
|
static int __init test_drm_cmdline_init(void)
|