Unverified Commit 90c258ba authored by Maxime Ripard's avatar Maxime Ripard
Browse files

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.

Reviewed-by: default avatarGeert Uytterhoeven <geert@linux-m68k.org>
Link: https://lore.kernel.org/r/20220728-rpi-analog-tv-properties-v4-12-60d38873f782@cerno.tech


Signed-off-by: default avatarMaxime Ripard <maxime@cerno.tech>
parent 941731a2
Loading
Loading
Loading
Loading
+9 −7
Original line number Diff line number Diff line
@@ -1801,20 +1801,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;