diff options
Diffstat (limited to 'target/linux/bcm27xx/patches-5.4/950-0480-drm-modes-parse_cmdline-Rework-drm_mode_parse_cmdlin.patch')
-rw-r--r-- | target/linux/bcm27xx/patches-5.4/950-0480-drm-modes-parse_cmdline-Rework-drm_mode_parse_cmdlin.patch | 76 |
1 files changed, 76 insertions, 0 deletions
diff --git a/target/linux/bcm27xx/patches-5.4/950-0480-drm-modes-parse_cmdline-Rework-drm_mode_parse_cmdlin.patch b/target/linux/bcm27xx/patches-5.4/950-0480-drm-modes-parse_cmdline-Rework-drm_mode_parse_cmdlin.patch new file mode 100644 index 0000000000..1716ebd7be --- /dev/null +++ b/target/linux/bcm27xx/patches-5.4/950-0480-drm-modes-parse_cmdline-Rework-drm_mode_parse_cmdlin.patch @@ -0,0 +1,76 @@ +From 5b6257773b43e7a7b28f86359d2e9ebe15346b78 Mon Sep 17 00:00:00 2001 +From: Hans de Goede <hdegoede@redhat.com> +Date: Mon, 18 Nov 2019 16:51:26 +0100 +Subject: [PATCH] drm/modes: parse_cmdline: Rework + drm_mode_parse_cmdline_options() + +Commit 739b200c2edcaaa7a86f37b0c11db57956433dfb upstream. + +Refactor drm_mode_parse_cmdline_options() so that it takes a pointer +to the first option, rather then a pointer to the ',' before the first +option. + +This is a preparation patch for allowing parsing of stand-alone options +without a mode before them, e.g.: video=HDMI-1:margin_right=14,... + +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-5-hdegoede@redhat.com +--- + drivers/gpu/drm/drm_modes.c | 21 +++++++++------------ + 1 file changed, 9 insertions(+), 12 deletions(-) + +--- a/drivers/gpu/drm/drm_modes.c ++++ b/drivers/gpu/drm/drm_modes.c +@@ -1591,23 +1591,21 @@ static int drm_mode_parse_cmdline_int(co + return 0; + } + +-static int drm_mode_parse_cmdline_options(const char *str, size_t len, ++static int drm_mode_parse_cmdline_options(const char *str, + const struct drm_connector *connector, + struct drm_cmdline_mode *mode) + { + unsigned int deg, margin, rotation = 0; +- const char *sep = str; ++ const char *delim, *option, *sep; + +- while ((sep = strchr(sep, ','))) { +- const char *delim, *option; +- +- option = sep + 1; ++ option = str; ++ do { + delim = strchr(option, '='); + if (!delim) { + delim = strchr(option, ','); + + if (!delim) +- delim = str + len; ++ delim = option + strlen(option); + } + + if (!strncmp(option, "rotate", delim - option)) { +@@ -1661,8 +1659,9 @@ static int drm_mode_parse_cmdline_option + } else { + return -EINVAL; + } +- sep = delim; +- } ++ sep = strchr(delim, ','); ++ option = sep + 1; ++ } while (sep); + + if (!(rotation & DRM_MODE_ROTATE_MASK)) + rotation |= DRM_MODE_ROTATE_0; +@@ -1862,9 +1861,7 @@ bool drm_mode_parse_command_line_for_con + } + + if (options_ptr) { +- int len = strlen(name) - (options_ptr - name); +- +- ret = drm_mode_parse_cmdline_options(options_ptr, len, ++ ret = drm_mode_parse_cmdline_options(options_ptr + 1, + connector, mode); + if (ret) + return false; |