Manual adapted the following patches:
   generic/hack-5.15/221-module_exports.patch
   bcm27xx/patches-5.15/950-0008-drm-vc4-hdmi-Use-a-mutex-to-prevent-concurrent-frame.patch
   octeontx/patches-5.15/0004-PCI-add-quirk-for-Gateworks-PLX-PEX860x-switch-with-.patch
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
(cherry picked from commit 9693ed6a9e)
		
	
		
			
				
	
	
		
			90 lines
		
	
	
		
			2.7 KiB
		
	
	
	
		
			Diff
		
	
	
	
	
	
			
		
		
	
	
			90 lines
		
	
	
		
			2.7 KiB
		
	
	
	
		
			Diff
		
	
	
	
	
	
From a2ce322776832848b320ece1aa7e3485bfe4b5f3 Mon Sep 17 00:00:00 2001
 | 
						|
From: Dave Stevenson <dave.stevenson@raspberrypi.com>
 | 
						|
Date: Tue, 1 Feb 2022 12:20:20 +0000
 | 
						|
Subject: [PATCH] drm/panel: Add and initialise an orientation field to
 | 
						|
 drm_panel
 | 
						|
 | 
						|
Current usage of drm_connector_set_panel_orientation is from a panel's
 | 
						|
get_modes call. However if the panel orientation property doesn't
 | 
						|
exist on the connector at this point, then drm_mode_object triggers
 | 
						|
WARNs as the connector is already registered.
 | 
						|
 | 
						|
Add an orientation variable to struct drm_panel and initialise it from
 | 
						|
drm_panel_init.
 | 
						|
panel_bridge_attach can then create the property before the connector
 | 
						|
is registered.
 | 
						|
 | 
						|
Signed-off-by: Dave Stevenson <dave.stevenson@raspberrypi.com>
 | 
						|
---
 | 
						|
 drivers/gpu/drm/bridge/panel.c |  4 ++++
 | 
						|
 drivers/gpu/drm/drm_panel.c    | 15 ++++++++++-----
 | 
						|
 include/drm/drm_panel.h        |  8 ++++++++
 | 
						|
 3 files changed, 22 insertions(+), 5 deletions(-)
 | 
						|
 | 
						|
--- a/drivers/gpu/drm/bridge/panel.c
 | 
						|
+++ b/drivers/gpu/drm/bridge/panel.c
 | 
						|
@@ -80,6 +80,10 @@ static int panel_bridge_attach(struct dr
 | 
						|
 		return ret;
 | 
						|
 	}
 | 
						|
 
 | 
						|
+	/* set up connector's "panel orientation" property */
 | 
						|
+	drm_connector_set_panel_orientation(&panel_bridge->connector,
 | 
						|
+					    panel_bridge->panel->orientation);
 | 
						|
+
 | 
						|
 	drm_connector_attach_encoder(&panel_bridge->connector,
 | 
						|
 					  bridge->encoder);
 | 
						|
 
 | 
						|
--- a/drivers/gpu/drm/drm_panel.c
 | 
						|
+++ b/drivers/gpu/drm/drm_panel.c
 | 
						|
@@ -61,6 +61,9 @@ void drm_panel_init(struct drm_panel *pa
 | 
						|
 	panel->dev = dev;
 | 
						|
 	panel->funcs = funcs;
 | 
						|
 	panel->connector_type = connector_type;
 | 
						|
+
 | 
						|
+	panel->orientation = DRM_MODE_PANEL_ORIENTATION_UNKNOWN;
 | 
						|
+	of_drm_get_panel_orientation(dev->of_node, &panel->orientation);
 | 
						|
 }
 | 
						|
 EXPORT_SYMBOL(drm_panel_init);
 | 
						|
 
 | 
						|
@@ -294,16 +297,18 @@ int of_drm_get_panel_orientation(const s
 | 
						|
 	if (ret < 0)
 | 
						|
 		return ret;
 | 
						|
 
 | 
						|
-	if (rotation == 0)
 | 
						|
+	if (rotation == 0) {
 | 
						|
 		*orientation = DRM_MODE_PANEL_ORIENTATION_NORMAL;
 | 
						|
-	else if (rotation == 90)
 | 
						|
+	} else if (rotation == 90) {
 | 
						|
 		*orientation = DRM_MODE_PANEL_ORIENTATION_RIGHT_UP;
 | 
						|
-	else if (rotation == 180)
 | 
						|
+	} else if (rotation == 180) {
 | 
						|
 		*orientation = DRM_MODE_PANEL_ORIENTATION_BOTTOM_UP;
 | 
						|
-	else if (rotation == 270)
 | 
						|
+	} else if (rotation == 270) {
 | 
						|
 		*orientation = DRM_MODE_PANEL_ORIENTATION_LEFT_UP;
 | 
						|
-	else
 | 
						|
+	} else {
 | 
						|
+		DRM_ERROR("%pOF: invalid orientation %d\n", np, ret);
 | 
						|
 		return -EINVAL;
 | 
						|
+	}
 | 
						|
 
 | 
						|
 	return 0;
 | 
						|
 }
 | 
						|
--- a/include/drm/drm_panel.h
 | 
						|
+++ b/include/drm/drm_panel.h
 | 
						|
@@ -166,6 +166,14 @@ struct drm_panel {
 | 
						|
 	int connector_type;
 | 
						|
 
 | 
						|
 	/**
 | 
						|
+	 * @orientation:
 | 
						|
+	 *
 | 
						|
+	 * Panel orientation at initialisation. This is used to initialise the
 | 
						|
+	 * drm_connector property for panel orientation.
 | 
						|
+	 */
 | 
						|
+	enum drm_panel_orientation orientation;
 | 
						|
+
 | 
						|
+	/**
 | 
						|
 	 * @list:
 | 
						|
 	 *
 | 
						|
 	 * Panel entry in registry.
 |