aboutsummaryrefslogtreecommitdiffstats
path: root/target/linux/bcm27xx/patches-4.19/950-0643-drm-modes-Parse-overscan-properties.patch
diff options
context:
space:
mode:
authorAdrian Schmutzler <freifunk@adrianschmutzler.de>2020-02-08 21:58:55 +0100
committerAdrian Schmutzler <freifunk@adrianschmutzler.de>2020-02-14 14:10:51 +0100
commit7d7aa2fd924c27829ec25f825481554dd81bce97 (patch)
tree658b87b89331670266163e522ea5fb52535633cb /target/linux/bcm27xx/patches-4.19/950-0643-drm-modes-Parse-overscan-properties.patch
parente7bfda2c243e66a75ff966ba04c28b1590b5d24c (diff)
downloadupstream-7d7aa2fd924c27829ec25f825481554dd81bce97.tar.gz
upstream-7d7aa2fd924c27829ec25f825481554dd81bce97.tar.bz2
upstream-7d7aa2fd924c27829ec25f825481554dd81bce97.zip
brcm2708: rename target to bcm27xx
This change makes the names of Broadcom targets consistent by using the common notation based on SoC/CPU ID (which is used internally anyway), bcmXXXX instead of brcmXXXX. This is even used for target TITLE in make menuconfig already, only the short target name used brcm so far. Despite, since subtargets range from bcm2708 to bcm2711, it seems appropriate to use bcm27xx instead of bcm2708 (again, as already done for BOARDNAME). This also renames the packages brcm2708-userland and brcm2708-gpu-fw. Signed-off-by: Adrian Schmutzler <freifunk@adrianschmutzler.de> Acked-by: Álvaro Fernández Rojas <noltari@gmail.com>
Diffstat (limited to 'target/linux/bcm27xx/patches-4.19/950-0643-drm-modes-Parse-overscan-properties.patch')
-rw-r--r--target/linux/bcm27xx/patches-4.19/950-0643-drm-modes-Parse-overscan-properties.patch102
1 files changed, 102 insertions, 0 deletions
diff --git a/target/linux/bcm27xx/patches-4.19/950-0643-drm-modes-Parse-overscan-properties.patch b/target/linux/bcm27xx/patches-4.19/950-0643-drm-modes-Parse-overscan-properties.patch
new file mode 100644
index 0000000000..f8de9b5fc3
--- /dev/null
+++ b/target/linux/bcm27xx/patches-4.19/950-0643-drm-modes-Parse-overscan-properties.patch
@@ -0,0 +1,102 @@
+From 99b367ee521e48beae92bea59515dd0f08f2e55b Mon Sep 17 00:00:00 2001
+From: Maxime Ripard <maxime.ripard@bootlin.com>
+Date: Wed, 19 Jun 2019 12:17:51 +0200
+Subject: [PATCH] drm/modes: Parse overscan properties
+MIME-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+
+Commit 3d46a3007cd8f73bae502bf5c171977b91d7aacc upstream.
+
+Properly configuring the overscan properties might be needed for the
+initial setup of the framebuffer for display that still have overscan.
+Let's allow for more properties on the kernel command line to setup each
+margin.
+
+Reviewed-by: Noralf Trønnes <noralf@tronnes.org>
+Signed-off-by: Maxime Ripard <maxime.ripard@bootlin.com>
+Link: https://patchwork.freedesktop.org/patch/msgid/e481f1628e3768ca49226ec2115cfa4dfcbd5e4c.1560783090.git-series.maxime.ripard@bootlin.com
+---
+ Documentation/fb/modedb.txt | 2 ++
+ drivers/gpu/drm/drm_modes.c | 44 +++++++++++++++++++++++++++++++++++++
+ include/drm/drm_connector.h | 5 +++++
+ 3 files changed, 51 insertions(+)
+
+--- a/Documentation/fb/modedb.txt
++++ b/Documentation/fb/modedb.txt
+@@ -57,6 +57,8 @@ Options can also be passed after the mod
+
+ Valid options are:
+
++ - margin_top, margin_bottom, margin_left, margin_right (integer):
++ Number of pixels in the margins, typically to deal with overscan on TVs
+ - reflect_x (boolean): Perform an axial symmetry on the X axis
+ - reflect_y (boolean): Perform an axial symmetry on the Y axis
+ - rotate (integer): Rotate the initial framebuffer by x
+--- a/drivers/gpu/drm/drm_modes.c
++++ b/drivers/gpu/drm/drm_modes.c
+@@ -1615,6 +1615,50 @@ static int drm_mode_parse_cmdline_option
+ } else if (!strncmp(option, "reflect_y", delim - option)) {
+ rotation |= DRM_MODE_REFLECT_Y;
+ sep = delim;
++ } else if (!strncmp(option, "margin_right", delim - option)) {
++ const char *value = delim + 1;
++ unsigned int margin;
++
++ margin = simple_strtol(value, &sep, 10);
++
++ /* Make sure we have parsed something */
++ if (sep == value)
++ return -EINVAL;
++
++ mode->tv_margins.right = margin;
++ } else if (!strncmp(option, "margin_left", delim - option)) {
++ const char *value = delim + 1;
++ unsigned int margin;
++
++ margin = simple_strtol(value, &sep, 10);
++
++ /* Make sure we have parsed something */
++ if (sep == value)
++ return -EINVAL;
++
++ mode->tv_margins.left = margin;
++ } else if (!strncmp(option, "margin_top", delim - option)) {
++ const char *value = delim + 1;
++ unsigned int margin;
++
++ margin = simple_strtol(value, &sep, 10);
++
++ /* Make sure we have parsed something */
++ if (sep == value)
++ return -EINVAL;
++
++ mode->tv_margins.top = margin;
++ } else if (!strncmp(option, "margin_bottom", delim - option)) {
++ const char *value = delim + 1;
++ unsigned int margin;
++
++ margin = simple_strtol(value, &sep, 10);
++
++ /* Make sure we have parsed something */
++ if (sep == value)
++ return -EINVAL;
++
++ mode->tv_margins.bottom = margin;
+ } else {
+ return -EINVAL;
+ }
+--- a/include/drm/drm_connector.h
++++ b/include/drm/drm_connector.h
+@@ -886,6 +886,11 @@ struct drm_cmdline_mode {
+ * DRM_MODE_ROTATE_0 and DRM_MODE_ROTATE_180.
+ */
+ unsigned int rotation_reflection;
++
++ /**
++ * @tv_margins: TV margins to apply to the mode.
++ */
++ struct drm_connector_tv_margins tv_margins;
+ };
+
+ /**