2022-08-29 13:19:32

by Maxime Ripard

[permalink] [raw]
Subject: [PATCH v2 11/41] drm/modes: Only consider bpp and refresh before options

Some video= options might have a value that contains a dash. However, the

command line parsing mode considers all dashes as the separator between the

mode and the bpp count.



Let's rework the parsing code a bit to only consider a dash as the bpp

separator if it before a comma, the options separator.



A follow-up patch will add a unit-test for this once such an option is

introduced.



Signed-off-by: Maxime Ripard <[email protected]>

Reviewed-by: Geert Uytterhoeven <[email protected]>



diff --git a/drivers/gpu/drm/drm_modes.c b/drivers/gpu/drm/drm_modes.c

index ee581ee17171..b4e1ff56b4d8 100644

--- a/drivers/gpu/drm/drm_modes.c

+++ b/drivers/gpu/drm/drm_modes.c

@@ -2254,20 +2254,22 @@ bool drm_mode_parse_command_line_for_connector(const char *mode_option,



name = mode_option;



+ /* Locate the start of named options */

+ options_ptr = strchr(name, ',');

+ if (options_ptr)

+ options_off = options_ptr - name;

+ else

+ options_off = strlen(name);

+

/* Try to locate the bpp and refresh specifiers, if any */

- bpp_ptr = strchr(name, '-');

+ bpp_ptr = strnchr(name, options_off, '-');

if (bpp_ptr)

bpp_off = bpp_ptr - name;



- refresh_ptr = strchr(name, '@');

+ refresh_ptr = strnchr(name, options_off, '@');

if (refresh_ptr)

refresh_off = refresh_ptr - name;



- /* Locate the start of named options */

- options_ptr = strchr(name, ',');

- if (options_ptr)

- options_off = options_ptr - name;

-

/* Locate the end of the name / resolution, and parse it */

if (bpp_ptr) {

mode_end = bpp_off;



--

b4 0.10.0-dev-65ba7