mirror of https://gitee.com/openkylin/linux.git
drm/amd/display: Prevent dpcd reads with passive dongles
[why] During hotplug, a DP port may be connected to the sink through passive adapter which does not support DPCD reads. Issuing reads without checking for this condition will result in errors [how] Ensure the link is in aux_mode before initiating operation that result in a DPCD read. Signed-off-by: Aurabindo Pillai <aurabindo.pillai@amd.com> Reviewed-by: Harry Wentland <Harry.Wentland@amd.com> Acked-by: Aurabindo Pillai <aurabindo.pillai@amd.com> Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
This commit is contained in:
parent
65d6836982
commit
7b353e41b4
|
@ -2012,17 +2012,22 @@ void amdgpu_dm_update_connector_after_detect(
|
||||||
dc_sink_retain(aconnector->dc_sink);
|
dc_sink_retain(aconnector->dc_sink);
|
||||||
if (sink->dc_edid.length == 0) {
|
if (sink->dc_edid.length == 0) {
|
||||||
aconnector->edid = NULL;
|
aconnector->edid = NULL;
|
||||||
drm_dp_cec_unset_edid(&aconnector->dm_dp_aux.aux);
|
if (aconnector->dc_link->aux_mode) {
|
||||||
|
drm_dp_cec_unset_edid(
|
||||||
|
&aconnector->dm_dp_aux.aux);
|
||||||
|
}
|
||||||
} else {
|
} else {
|
||||||
aconnector->edid =
|
aconnector->edid =
|
||||||
(struct edid *) sink->dc_edid.raw_edid;
|
(struct edid *)sink->dc_edid.raw_edid;
|
||||||
|
|
||||||
|
|
||||||
drm_connector_update_edid_property(connector,
|
drm_connector_update_edid_property(connector,
|
||||||
aconnector->edid);
|
aconnector->edid);
|
||||||
drm_dp_cec_set_edid(&aconnector->dm_dp_aux.aux,
|
|
||||||
aconnector->edid);
|
if (aconnector->dc_link->aux_mode)
|
||||||
|
drm_dp_cec_set_edid(&aconnector->dm_dp_aux.aux,
|
||||||
|
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 {
|
||||||
|
|
Loading…
Reference in New Issue