Takashi Iwai b695fa
From 20543be93ca45968f344261c1a997177e51bd7e1 Mon Sep 17 00:00:00 2001
Takashi Iwai b695fa
From: Claudio Suarez <cssk@net-c.es>
Takashi Iwai b695fa
Date: Sun, 17 Oct 2021 13:34:58 +0200
Takashi Iwai b695fa
Subject: [PATCH] drm/amdgpu: update drm_display_info correctly when the edid is read
Takashi Iwai b695fa
Git-commit: 20543be93ca45968f344261c1a997177e51bd7e1
Takashi Iwai b695fa
Patch-mainline: v5.17-rc1
Takashi Iwai b695fa
References: git-fixes
Takashi Iwai b695fa
Takashi Iwai b695fa
drm_display_info is updated by drm_get_edid() or
Takashi Iwai b695fa
drm_connector_update_edid_property(). In the amdgpu driver it is almost
Takashi Iwai b695fa
always updated when the edid is read in amdgpu_connector_get_edid(),
Takashi Iwai b695fa
but not always.  Change amdgpu_connector_get_edid() and
Takashi Iwai b695fa
amdgpu_connector_free_edid() to keep drm_display_info updated.
Takashi Iwai b695fa
Takashi Iwai b695fa
Reviewed-by: Harry Wentland <harry.wentland@amd.com>
Takashi Iwai b695fa
Signed-off-by: Claudio Suarez <cssk@net-c.es>
Takashi Iwai b695fa
Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
Takashi Iwai b695fa
Acked-by: Takashi Iwai <tiwai@suse.de>
Takashi Iwai b695fa
Takashi Iwai b695fa
---
Takashi Iwai b695fa
 drivers/gpu/drm/amd/amdgpu/amdgpu_connectors.c    | 5 ++++-
Takashi Iwai b695fa
 drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c | 3 +--
Takashi Iwai b695fa
 2 files changed, 5 insertions(+), 3 deletions(-)
Takashi Iwai b695fa
Takashi Iwai b695fa
diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_connectors.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_connectors.c
Takashi Iwai b695fa
index df1f9b88a53f..e5fc5a1ea394 100644
Takashi Iwai b695fa
--- a/drivers/gpu/drm/amd/amdgpu/amdgpu_connectors.c
Takashi Iwai b695fa
+++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_connectors.c
Takashi Iwai b695fa
@@ -315,8 +315,10 @@ static void amdgpu_connector_get_edid(struct drm_connector *connector)
Takashi Iwai b695fa
 	if (!amdgpu_connector->edid) {
Takashi Iwai b695fa
 		/* some laptops provide a hardcoded edid in rom for LCDs */
Takashi Iwai b695fa
 		if (((connector->connector_type == DRM_MODE_CONNECTOR_LVDS) ||
Takashi Iwai b695fa
-		     (connector->connector_type == DRM_MODE_CONNECTOR_eDP)))
Takashi Iwai b695fa
+		     (connector->connector_type == DRM_MODE_CONNECTOR_eDP))) {
Takashi Iwai b695fa
 			amdgpu_connector->edid = amdgpu_connector_get_hardcoded_edid(adev);
Takashi Iwai b695fa
+			drm_connector_update_edid_property(connector, amdgpu_connector->edid);
Takashi Iwai b695fa
+		}
Takashi Iwai b695fa
 	}
Takashi Iwai b695fa
 }
Takashi Iwai b695fa
 
Takashi Iwai b695fa
@@ -326,6 +328,7 @@ static void amdgpu_connector_free_edid(struct drm_connector *connector)
Takashi Iwai b695fa
 
Takashi Iwai b695fa
 	kfree(amdgpu_connector->edid);
Takashi Iwai b695fa
 	amdgpu_connector->edid = NULL;
Takashi Iwai b695fa
+	drm_connector_update_edid_property(connector, NULL);
Takashi Iwai b695fa
 }
Takashi Iwai b695fa
 
Takashi Iwai b695fa
 static int amdgpu_connector_ddc_get_modes(struct drm_connector *connector)
Takashi Iwai b695fa
diff --git a/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c b/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c
Takashi Iwai b695fa
index 0585ae44e555..151f3559e0ae 100644
Takashi Iwai b695fa
--- a/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c
Takashi Iwai b695fa
+++ b/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c
Takashi Iwai b695fa
@@ -2950,13 +2950,12 @@ void amdgpu_dm_update_connector_after_detect(
Takashi Iwai b695fa
 			aconnector->edid =
Takashi Iwai b695fa
 				(struct edid *)sink->dc_edid.raw_edid;
Takashi Iwai b695fa
 
Takashi Iwai b695fa
-			drm_connector_update_edid_property(connector,
Takashi Iwai b695fa
-							   aconnector->edid);
Takashi Iwai b695fa
 			if (aconnector->dc_link->aux_mode)
Takashi Iwai b695fa
 				drm_dp_cec_set_edid(&aconnector->dm_dp_aux.aux,
Takashi Iwai b695fa
 						    aconnector->edid);
Takashi Iwai b695fa
 		}
Takashi Iwai b695fa
 
Takashi Iwai b695fa
+		drm_connector_update_edid_property(connector, aconnector->edid);
Takashi Iwai b695fa
 		amdgpu_dm_update_freesync_caps(connector, aconnector->edid);
Takashi Iwai b695fa
 		update_connector_ext_caps(aconnector);
Takashi Iwai b695fa
 	} else {
Takashi Iwai b695fa
-- 
Takashi Iwai b695fa
2.35.3
Takashi Iwai b695fa