aboutsummaryrefslogtreecommitdiffstats
path: root/target/linux/bcm27xx/patches-5.4/950-0476-drm-modes-parse_cmdline-Add-support-for-specifying-p.patch
diff options
context:
space:
mode:
Diffstat (limited to 'target/linux/bcm27xx/patches-5.4/950-0476-drm-modes-parse_cmdline-Add-support-for-specifying-p.patch')
-rw-r--r--target/linux/bcm27xx/patches-5.4/950-0476-drm-modes-parse_cmdline-Add-support-for-specifying-p.patch157
1 files changed, 0 insertions, 157 deletions
diff --git a/target/linux/bcm27xx/patches-5.4/950-0476-drm-modes-parse_cmdline-Add-support-for-specifying-p.patch b/target/linux/bcm27xx/patches-5.4/950-0476-drm-modes-parse_cmdline-Add-support-for-specifying-p.patch
deleted file mode 100644
index cbda9ecc10..0000000000
--- a/target/linux/bcm27xx/patches-5.4/950-0476-drm-modes-parse_cmdline-Add-support-for-specifying-p.patch
+++ /dev/null
@@ -1,157 +0,0 @@
-From 7d395633947fa6595a117f40e0f27ba87be77d6c Mon Sep 17 00:00:00 2001
-From: Hans de Goede <hdegoede@redhat.com>
-Date: Mon, 18 Nov 2019 16:51:30 +0100
-Subject: [PATCH] drm/modes: parse_cmdline: Add support for specifying
- panel_orientation (v2)
-
-Commit 4e7a4a6fbdc669c44e6079f9d5eb25673749455f upstream.
-
-Sometimes we want to override a connector's panel_orientation from the
-kernel commandline. Either for testing and for special cases, e.g. a kiosk
-like setup which uses a TV mounted in portrait mode.
-
-Users can already specify a "rotate" option through a video= kernel cmdline
-option. But that only supports 0/180 degrees (see drm_client_modeset TODO)
-and only works for in kernel modeset clients, not for userspace kms users.
-
-The "panel-orientation" connector property OTOH does support 90/270 degrees
-as it leaves dealing with the rotation up to userspace and this does work
-for userspace kms clients (at least those which support this property).
-
-Changes in v2:
--Add missing ':' after @panel_orientation (reported by kbuild test robot)
-
-BugLink: https://gitlab.freedesktop.org/plymouth/plymouth/merge_requests/83
-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-9-hdegoede@redhat.com
----
- Documentation/fb/modedb.rst | 3 ++
- drivers/gpu/drm/drm_modes.c | 32 +++++++++++++++++++
- .../gpu/drm/selftests/drm_cmdline_selftests.h | 1 +
- .../drm/selftests/test-drm_cmdline_parser.c | 22 +++++++++++++
- include/drm/drm_connector.h | 8 +++++
- 5 files changed, 66 insertions(+)
-
---- a/Documentation/fb/modedb.rst
-+++ b/Documentation/fb/modedb.rst
-@@ -65,6 +65,9 @@ Valid options are::
- - reflect_y (boolean): Perform an axial symmetry on the Y axis
- - rotate (integer): Rotate the initial framebuffer by x
- degrees. Valid values are 0, 90, 180 and 270.
-+ - panel_orientation, one of "normal", "upside_down", "left_side_up", or
-+ "right_side_up". For KMS drivers only, this sets the "panel orientation"
-+ property on the kms connector as hint for kms users.
-
-
- -----------------------------------------------------------------------------
---- a/drivers/gpu/drm/drm_modes.c
-+++ b/drivers/gpu/drm/drm_modes.c
-@@ -1591,6 +1591,33 @@ static int drm_mode_parse_cmdline_int(co
- return 0;
- }
-
-+static int drm_mode_parse_panel_orientation(const char *delim,
-+ struct drm_cmdline_mode *mode)
-+{
-+ const char *value;
-+
-+ if (*delim != '=')
-+ return -EINVAL;
-+
-+ value = delim + 1;
-+ delim = strchr(value, ',');
-+ if (!delim)
-+ delim = value + strlen(value);
-+
-+ if (!strncmp(value, "normal", delim - value))
-+ mode->panel_orientation = DRM_MODE_PANEL_ORIENTATION_NORMAL;
-+ else if (!strncmp(value, "upside_down", delim - value))
-+ mode->panel_orientation = DRM_MODE_PANEL_ORIENTATION_BOTTOM_UP;
-+ else if (!strncmp(value, "left_side_up", delim - value))
-+ mode->panel_orientation = DRM_MODE_PANEL_ORIENTATION_LEFT_UP;
-+ else if (!strncmp(value, "right_side_up", delim - value))
-+ mode->panel_orientation = DRM_MODE_PANEL_ORIENTATION_RIGHT_UP;
-+ else
-+ return -EINVAL;
-+
-+ return 0;
-+}
-+
- static int drm_mode_parse_cmdline_options(const char *str,
- bool freestanding,
- const struct drm_connector *connector,
-@@ -1657,6 +1684,9 @@ static int drm_mode_parse_cmdline_option
- return -EINVAL;
-
- mode->tv_margins.bottom = margin;
-+ } else if (!strncmp(option, "panel_orientation", delim - option)) {
-+ if (drm_mode_parse_panel_orientation(delim, mode))
-+ return -EINVAL;
- } else {
- return -EINVAL;
- }
-@@ -1722,6 +1752,8 @@ bool drm_mode_parse_command_line_for_con
- char *bpp_end_ptr = NULL, *refresh_end_ptr = NULL;
- int i, len, ret;
-
-+ mode->panel_orientation = DRM_MODE_PANEL_ORIENTATION_UNKNOWN;
-+
- #ifdef CONFIG_FB
- if (!mode_option)
- mode_option = fb_mode_option;
---- a/drivers/gpu/drm/selftests/drm_cmdline_selftests.h
-+++ b/drivers/gpu/drm/selftests/drm_cmdline_selftests.h
-@@ -65,3 +65,4 @@ cmdline_test(drm_cmdline_test_bpp_extra_
- cmdline_test(drm_cmdline_test_extra_and_option)
- cmdline_test(drm_cmdline_test_freestanding_options)
- cmdline_test(drm_cmdline_test_freestanding_force_e_and_options)
-+cmdline_test(drm_cmdline_test_panel_orientation)
---- a/drivers/gpu/drm/selftests/test-drm_cmdline_parser.c
-+++ b/drivers/gpu/drm/selftests/test-drm_cmdline_parser.c
-@@ -1103,6 +1103,28 @@ static int drm_cmdline_test_freestanding
- return 0;
- }
-
-+static int drm_cmdline_test_panel_orientation(void *ignored)
-+{
-+ struct drm_cmdline_mode mode = { };
-+
-+ FAIL_ON(!drm_mode_parse_command_line_for_connector("panel_orientation=upside_down",
-+ &no_connector,
-+ &mode));
-+ FAIL_ON(mode.specified);
-+ FAIL_ON(mode.refresh_specified);
-+ FAIL_ON(mode.bpp_specified);
-+
-+ FAIL_ON(mode.panel_orientation != DRM_MODE_PANEL_ORIENTATION_BOTTOM_UP);
-+
-+ FAIL_ON(mode.rb);
-+ FAIL_ON(mode.cvt);
-+ FAIL_ON(mode.interlace);
-+ FAIL_ON(mode.margins);
-+ FAIL_ON(mode.force != DRM_FORCE_UNSPECIFIED);
-+
-+ return 0;
-+}
-+
- #include "drm_selftest.c"
-
- static int __init test_drm_cmdline_init(void)
---- a/include/drm/drm_connector.h
-+++ b/include/drm/drm_connector.h
-@@ -1066,6 +1066,14 @@ struct drm_cmdline_mode {
- unsigned int rotation_reflection;
-
- /**
-+ * @panel_orientation:
-+ *
-+ * drm-connector "panel orientation" property override value,
-+ * DRM_MODE_PANEL_ORIENTATION_UNKNOWN if not set.
-+ */
-+ enum drm_panel_orientation panel_orientation;
-+
-+ /**
- * @tv_margins: TV margins to apply to the mode.
- */
- struct drm_connector_tv_margins tv_margins;