|
@@ -1024,9 +1024,13 @@ static void intel_sdvo_mode_set(struct drm_encoder *encoder,
|
|
|
if (!intel_sdvo_set_target_input(intel_sdvo))
|
|
|
return;
|
|
|
|
|
|
- if (intel_sdvo->has_hdmi_monitor &&
|
|
|
- !intel_sdvo_set_avi_infoframe(intel_sdvo))
|
|
|
- return;
|
|
|
+ if (intel_sdvo->has_hdmi_monitor) {
|
|
|
+ intel_sdvo_set_encode(intel_sdvo, SDVO_ENCODE_HDMI);
|
|
|
+ intel_sdvo_set_colorimetry(intel_sdvo,
|
|
|
+ SDVO_COLORIMETRY_RGB256);
|
|
|
+ intel_sdvo_set_avi_infoframe(intel_sdvo);
|
|
|
+ } else
|
|
|
+ intel_sdvo_set_encode(intel_sdvo, SDVO_ENCODE_DVI);
|
|
|
|
|
|
if (intel_sdvo->is_tv &&
|
|
|
!intel_sdvo_set_tv_format(intel_sdvo))
|
|
@@ -1398,6 +1402,9 @@ intel_sdvo_detect(struct drm_connector *connector, bool force)
|
|
|
|
|
|
intel_sdvo->attached_output = response;
|
|
|
|
|
|
+ intel_sdvo->has_hdmi_monitor = false;
|
|
|
+ intel_sdvo->has_hdmi_audio = false;
|
|
|
+
|
|
|
if ((intel_sdvo_connector->output_flag & response) == 0)
|
|
|
ret = connector_status_disconnected;
|
|
|
else if (response & SDVO_TMDS_MASK)
|
|
@@ -1922,20 +1929,7 @@ intel_sdvo_select_i2c_bus(struct drm_i915_private *dev_priv,
|
|
|
static bool
|
|
|
intel_sdvo_is_hdmi_connector(struct intel_sdvo *intel_sdvo, int device)
|
|
|
{
|
|
|
- int is_hdmi;
|
|
|
-
|
|
|
- if (!intel_sdvo_check_supp_encode(intel_sdvo))
|
|
|
- return false;
|
|
|
-
|
|
|
- if (!intel_sdvo_set_target_output(intel_sdvo,
|
|
|
- device == 0 ? SDVO_OUTPUT_TMDS0 : SDVO_OUTPUT_TMDS1))
|
|
|
- return false;
|
|
|
-
|
|
|
- is_hdmi = 0;
|
|
|
- if (!intel_sdvo_get_value(intel_sdvo, SDVO_CMD_GET_ENCODE, &is_hdmi, 1))
|
|
|
- return false;
|
|
|
-
|
|
|
- return !!is_hdmi;
|
|
|
+ return intel_sdvo_check_supp_encode(intel_sdvo);
|
|
|
}
|
|
|
|
|
|
static u8
|
|
@@ -2037,12 +2031,7 @@ intel_sdvo_dvi_init(struct intel_sdvo *intel_sdvo, int device)
|
|
|
connector->connector_type = DRM_MODE_CONNECTOR_DVID;
|
|
|
|
|
|
if (intel_sdvo_is_hdmi_connector(intel_sdvo, device)) {
|
|
|
- /* enable hdmi encoding mode if supported */
|
|
|
- intel_sdvo_set_encode(intel_sdvo, SDVO_ENCODE_HDMI);
|
|
|
- intel_sdvo_set_colorimetry(intel_sdvo,
|
|
|
- SDVO_COLORIMETRY_RGB256);
|
|
|
connector->connector_type = DRM_MODE_CONNECTOR_HDMIA;
|
|
|
-
|
|
|
intel_sdvo->is_hdmi = true;
|
|
|
}
|
|
|
intel_sdvo->base.clone_mask = ((1 << INTEL_SDVO_NON_TV_CLONE_BIT) |
|