diff options
Diffstat (limited to 'target/linux/bcm27xx/patches-5.4/950-0482-drm-modes-parse_cmdline-Set-bpp-refresh_specified-af.patch')
-rw-r--r-- | target/linux/bcm27xx/patches-5.4/950-0482-drm-modes-parse_cmdline-Set-bpp-refresh_specified-af.patch | 64 |
1 files changed, 64 insertions, 0 deletions
diff --git a/target/linux/bcm27xx/patches-5.4/950-0482-drm-modes-parse_cmdline-Set-bpp-refresh_specified-af.patch b/target/linux/bcm27xx/patches-5.4/950-0482-drm-modes-parse_cmdline-Set-bpp-refresh_specified-af.patch new file mode 100644 index 0000000000..ac973e1d4e --- /dev/null +++ b/target/linux/bcm27xx/patches-5.4/950-0482-drm-modes-parse_cmdline-Set-bpp-refresh_specified-af.patch @@ -0,0 +1,64 @@ +From 5b7efd2fa0c75164373d6faf28fec4b89065d39c Mon Sep 17 00:00:00 2001 +From: Hans de Goede <hdegoede@redhat.com> +Date: Mon, 18 Nov 2019 16:51:28 +0100 +Subject: [PATCH] drm/modes: parse_cmdline: Set bpp/refresh_specified + after successful parsing + +Commit 6a2d163756545aa3180d7851d5f8322b865e72be upstream. + +drm_connector_get_cmdline_mode() calls +drm_mode_parse_command_line_for_connector() with &connector->cmdline_mode +as mode argument, so anything which we store in the mode arguments gets +kept even if we return false. + +Avoid storing a possibly false-postive bpp/refresh_specified setting +in connector->cmdline_mode by moving the setting of these to after +successful parsing of the bpp/refresh parts of the video= argument. + +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-7-hdegoede@redhat.com +--- + drivers/gpu/drm/drm_modes.c | 9 +++++---- + 1 file changed, 5 insertions(+), 4 deletions(-) + +--- a/drivers/gpu/drm/drm_modes.c ++++ b/drivers/gpu/drm/drm_modes.c +@@ -1778,10 +1778,8 @@ bool drm_mode_parse_command_line_for_con + + /* Try to locate the bpp and refresh specifiers, if any */ + bpp_ptr = strchr(name, '-'); +- if (bpp_ptr) { ++ if (bpp_ptr) + bpp_off = bpp_ptr - name; +- mode->bpp_specified = true; +- } + + refresh_ptr = strchr(name, '@'); + if (refresh_ptr) { +@@ -1789,7 +1787,6 @@ bool drm_mode_parse_command_line_for_con + return false; + + refresh_off = refresh_ptr - name; +- mode->refresh_specified = true; + } + + /* Locate the start of named options */ +@@ -1832,6 +1829,8 @@ bool drm_mode_parse_command_line_for_con + ret = drm_mode_parse_cmdline_bpp(bpp_ptr, &bpp_end_ptr, mode); + if (ret) + return false; ++ ++ mode->bpp_specified = true; + } + + if (refresh_ptr) { +@@ -1839,6 +1838,8 @@ bool drm_mode_parse_command_line_for_con + &refresh_end_ptr, mode); + if (ret) + return false; ++ ++ mode->refresh_specified = true; + } + + /* |