diff options
Diffstat (limited to 'drivers/gpu/drm/radeon/atombios_dp.c')
| -rw-r--r-- | drivers/gpu/drm/radeon/atombios_dp.c | 18 | 
1 files changed, 15 insertions, 3 deletions
diff --git a/drivers/gpu/drm/radeon/atombios_dp.c b/drivers/gpu/drm/radeon/atombios_dp.c index a71557ce01d..552b436451f 100644 --- a/drivers/gpu/drm/radeon/atombios_dp.c +++ b/drivers/gpu/drm/radeon/atombios_dp.c @@ -564,9 +564,21 @@ int radeon_dp_get_panel_mode(struct drm_encoder *encoder,  	    ENCODER_OBJECT_ID_NUTMEG)  		panel_mode = DP_PANEL_MODE_INTERNAL_DP1_MODE;  	else if (radeon_connector_encoder_get_dp_bridge_encoder_id(connector) == -		 ENCODER_OBJECT_ID_TRAVIS) -		panel_mode = DP_PANEL_MODE_INTERNAL_DP2_MODE; -	else if (connector->connector_type == DRM_MODE_CONNECTOR_eDP) { +		 ENCODER_OBJECT_ID_TRAVIS) { +		u8 id[6]; +		int i; +		for (i = 0; i < 6; i++) +			id[i] = radeon_read_dpcd_reg(radeon_connector, 0x503 + i); +		if (id[0] == 0x73 && +		    id[1] == 0x69 && +		    id[2] == 0x76 && +		    id[3] == 0x61 && +		    id[4] == 0x72 && +		    id[5] == 0x54) +			panel_mode = DP_PANEL_MODE_INTERNAL_DP1_MODE; +		else +			panel_mode = DP_PANEL_MODE_INTERNAL_DP2_MODE; +	} else if (connector->connector_type == DRM_MODE_CONNECTOR_eDP) {  		u8 tmp = radeon_read_dpcd_reg(radeon_connector, DP_EDP_CONFIGURATION_CAP);  		if (tmp & 1)  			panel_mode = DP_PANEL_MODE_INTERNAL_DP2_MODE;  |