|
@@ -1117,13 +1117,23 @@ static int radeon_dp_get_modes(struct drm_connector *connector)
|
|
|
(connector->connector_type == DRM_MODE_CONNECTOR_LVDS)) {
|
|
|
struct drm_display_mode *mode;
|
|
|
|
|
|
- if (!radeon_dig_connector->edp_on)
|
|
|
- atombios_set_edp_panel_power(connector,
|
|
|
- ATOM_TRANSMITTER_ACTION_POWER_ON);
|
|
|
- ret = radeon_ddc_get_modes(radeon_connector);
|
|
|
- if (!radeon_dig_connector->edp_on)
|
|
|
- atombios_set_edp_panel_power(connector,
|
|
|
- ATOM_TRANSMITTER_ACTION_POWER_OFF);
|
|
|
+ if (connector->connector_type == DRM_MODE_CONNECTOR_eDP) {
|
|
|
+ if (!radeon_dig_connector->edp_on)
|
|
|
+ atombios_set_edp_panel_power(connector,
|
|
|
+ ATOM_TRANSMITTER_ACTION_POWER_ON);
|
|
|
+ ret = radeon_ddc_get_modes(radeon_connector);
|
|
|
+ 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_get_dp_bridge_encoder_id(connector) !=
|
|
|
+ ENCODER_OBJECT_ID_NONE) {
|
|
|
+ if (encoder)
|
|
|
+ radeon_atom_ext_encoder_setup_ddc(encoder);
|
|
|
+ }
|
|
|
+ ret = radeon_ddc_get_modes(radeon_connector);
|
|
|
+ }
|
|
|
|
|
|
if (ret > 0) {
|
|
|
if (encoder) {
|
|
@@ -1134,7 +1144,6 @@ static int radeon_dp_get_modes(struct drm_connector *connector)
|
|
|
return ret;
|
|
|
}
|
|
|
|
|
|
- encoder = radeon_best_single_encoder(connector);
|
|
|
if (!encoder)
|
|
|
return 0;
|
|
|
|