diff --git a/drivers/gpu/drm/radeon/radeon_connectors.c b/drivers/gpu/drm/radeon/radeon_connectors.c index 8b3d8ed..e0c52c7 100644 --- a/drivers/gpu/drm/radeon/radeon_connectors.c +++ b/drivers/gpu/drm/radeon/radeon_connectors.c @@ -851,6 +854,19 @@ radeon_dvi_detect(struct drm_connector *connector, bool force) enum drm_connector_status ret = connector_status_disconnected; bool dret = false; + if (!force && !radeon_connector->shared_ddc + && rdev->family >= CHIP_R600 + && connector->status == connector_status_connected + && radeon_connector->hpd.hpd != RADEON_HPD_NONE + && radeon_hpd_sense(rdev, radeon_connector->hpd.hpd)) { + /* Do not re-fetch EDID while a HPD capable connector remains + * connected. But only on new ASICS where we think OEMs are + * setting up HPD mappings correctly. */ + return connector_status_connected; + } + if (radeon_connector->ddc_bus) dret = radeon_ddc_probe(radeon_connector); if (dret) {