@ -1297,12 +1297,33 @@ radeon_dp_detect(struct drm_connector *connector, bool force)
if ( ! radeon_dig_connector - > edp_on )
atombios_set_edp_panel_power ( connector ,
ATOM_TRANSMITTER_ACTION_POWER_OFF ) ;
} else {
/* need to setup ddc on the bridge */
if ( radeon_connector_encoder_is_dp_bridge ( connector ) ) {
} else if ( radeon_connector_encoder_is_dp_bridge ( connector ) ) {
/* DP bridges are always DP */
radeon_dig_connector - > dp_sink_type = CONNECTOR_OBJECT_ID_DISPLAYPORT ;
/* get the DPCD from the bridge */
radeon_dp_getdpcd ( radeon_connector ) ;
if ( radeon_hpd_sense ( rdev , radeon_connector - > hpd . hpd ) )
ret = connector_status_connected ;
else {
/* need to setup ddc on the bridge */
if ( encoder )
radeon_atom_ext_encoder_setup_ddc ( encoder ) ;
if ( radeon_ddc_probe ( radeon_connector ,
radeon_connector - > requires_extended_probe ) )
ret = connector_status_connected ;
}
if ( ( ret = = connector_status_disconnected ) & &
radeon_connector - > dac_load_detect ) {
struct drm_encoder * encoder = radeon_best_single_encoder ( connector ) ;
struct drm_encoder_helper_funcs * encoder_funcs ;
if ( encoder ) {
encoder_funcs = encoder - > helper_private ;
ret = encoder_funcs - > detect ( encoder , connector ) ;
}
}
} else {
radeon_dig_connector - > dp_sink_type = radeon_dp_getsinktype ( radeon_connector ) ;
if ( radeon_hpd_sense ( rdev , radeon_connector - > hpd . hpd ) ) {
ret = connector_status_connected ;
@ -1318,16 +1339,6 @@ radeon_dp_detect(struct drm_connector *connector, bool force)
ret = connector_status_connected ;
}
}
if ( ( ret = = connector_status_disconnected ) & &
radeon_connector - > dac_load_detect ) {
struct drm_encoder * encoder = radeon_best_single_encoder ( connector ) ;
struct drm_encoder_helper_funcs * encoder_funcs ;
if ( encoder ) {
encoder_funcs = encoder - > helper_private ;
ret = encoder_funcs - > detect ( encoder , connector ) ;
}
}
}
radeon_connector_update_scratch_regs ( connector , ret ) ;