drm/amdgpu: update drm_display_info correctly when the edid is read
[ Upstream commit 20543be93ca45968f344261c1a997177e51bd7e1 ] drm_display_info is updated by drm_get_edid() or drm_connector_update_edid_property(). In the amdgpu driver it is almost always updated when the edid is read in amdgpu_connector_get_edid(), but not always. Change amdgpu_connector_get_edid() and amdgpu_connector_free_edid() to keep drm_display_info updated. Reviewed-by: Harry Wentland <harry.wentland@amd.com> Signed-off-by: Claudio Suarez <cssk@net-c.es> Signed-off-by: Alex Deucher <alexander.deucher@amd.com> Stable-dep-of: 602ad43c3cd8 ("drm/amdgpu: Partially revert "drm/amdgpu: update drm_display_info correctly when the edid is read"") Signed-off-by: Sasha Levin <sashal@kernel.org>
This commit is contained in:

committed by
Greg Kroah-Hartman

parent
44b204730b
commit
00570fafc2
@@ -315,8 +315,10 @@ static void amdgpu_connector_get_edid(struct drm_connector *connector)
|
|||||||
if (!amdgpu_connector->edid) {
|
if (!amdgpu_connector->edid) {
|
||||||
/* some laptops provide a hardcoded edid in rom for LCDs */
|
/* some laptops provide a hardcoded edid in rom for LCDs */
|
||||||
if (((connector->connector_type == DRM_MODE_CONNECTOR_LVDS) ||
|
if (((connector->connector_type == DRM_MODE_CONNECTOR_LVDS) ||
|
||||||
(connector->connector_type == DRM_MODE_CONNECTOR_eDP)))
|
(connector->connector_type == DRM_MODE_CONNECTOR_eDP))) {
|
||||||
amdgpu_connector->edid = amdgpu_connector_get_hardcoded_edid(adev);
|
amdgpu_connector->edid = amdgpu_connector_get_hardcoded_edid(adev);
|
||||||
|
drm_connector_update_edid_property(connector, amdgpu_connector->edid);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -326,6 +328,7 @@ static void amdgpu_connector_free_edid(struct drm_connector *connector)
|
|||||||
|
|
||||||
kfree(amdgpu_connector->edid);
|
kfree(amdgpu_connector->edid);
|
||||||
amdgpu_connector->edid = NULL;
|
amdgpu_connector->edid = NULL;
|
||||||
|
drm_connector_update_edid_property(connector, NULL);
|
||||||
}
|
}
|
||||||
|
|
||||||
static int amdgpu_connector_ddc_get_modes(struct drm_connector *connector)
|
static int amdgpu_connector_ddc_get_modes(struct drm_connector *connector)
|
||||||
|
@@ -2348,13 +2348,12 @@ void amdgpu_dm_update_connector_after_detect(
|
|||||||
aconnector->edid =
|
aconnector->edid =
|
||||||
(struct edid *)sink->dc_edid.raw_edid;
|
(struct edid *)sink->dc_edid.raw_edid;
|
||||||
|
|
||||||
drm_connector_update_edid_property(connector,
|
|
||||||
aconnector->edid);
|
|
||||||
if (aconnector->dc_link->aux_mode)
|
if (aconnector->dc_link->aux_mode)
|
||||||
drm_dp_cec_set_edid(&aconnector->dm_dp_aux.aux,
|
drm_dp_cec_set_edid(&aconnector->dm_dp_aux.aux,
|
||||||
aconnector->edid);
|
aconnector->edid);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
drm_connector_update_edid_property(connector, aconnector->edid);
|
||||||
amdgpu_dm_update_freesync_caps(connector, aconnector->edid);
|
amdgpu_dm_update_freesync_caps(connector, aconnector->edid);
|
||||||
update_connector_ext_caps(aconnector);
|
update_connector_ext_caps(aconnector);
|
||||||
} else {
|
} else {
|
||||||
|
Reference in New Issue
Block a user