aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/gpu
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/gpu')
-rw-r--r--drivers/gpu/drm/i915/intel_sdvo.c8
1 files changed, 8 insertions, 0 deletions
diff --git a/drivers/gpu/drm/i915/intel_sdvo.c b/drivers/gpu/drm/i915/intel_sdvo.c
index 3a7251ad9a73..d2e8c9f4d6d5 100644
--- a/drivers/gpu/drm/i915/intel_sdvo.c
+++ b/drivers/gpu/drm/i915/intel_sdvo.c
@@ -140,6 +140,11 @@ struct intel_sdvo {
140 140
141 /* DDC bus used by this SDVO encoder */ 141 /* DDC bus used by this SDVO encoder */
142 uint8_t ddc_bus; 142 uint8_t ddc_bus;
143
144 /*
145 * the sdvo flag gets lost in round trip: dtd->adjusted_mode->dtd
146 */
147 uint8_t dtd_sdvo_flags;
143}; 148};
144 149
145struct intel_sdvo_connector { 150struct intel_sdvo_connector {
@@ -985,6 +990,7 @@ intel_sdvo_get_preferred_input_mode(struct intel_sdvo *intel_sdvo,
985 return false; 990 return false;
986 991
987 intel_sdvo_get_mode_from_dtd(adjusted_mode, &input_dtd); 992 intel_sdvo_get_mode_from_dtd(adjusted_mode, &input_dtd);
993 intel_sdvo->dtd_sdvo_flags = input_dtd.part2.sdvo_flags;
988 994
989 return true; 995 return true;
990} 996}
@@ -1093,6 +1099,8 @@ static void intel_sdvo_mode_set(struct drm_encoder *encoder,
1093 * adjusted_mode. 1099 * adjusted_mode.
1094 */ 1100 */
1095 intel_sdvo_get_dtd_from_mode(&input_dtd, adjusted_mode); 1101 intel_sdvo_get_dtd_from_mode(&input_dtd, adjusted_mode);
1102 if (intel_sdvo->is_tv || intel_sdvo->is_lvds)
1103 input_dtd.part2.sdvo_flags = intel_sdvo->dtd_sdvo_flags;
1096 if (!intel_sdvo_set_input_timing(intel_sdvo, &input_dtd)) 1104 if (!intel_sdvo_set_input_timing(intel_sdvo, &input_dtd))
1097 DRM_INFO("Setting input timings on %s failed\n", 1105 DRM_INFO("Setting input timings on %s failed\n",
1098 SDVO_NAME(intel_sdvo)); 1106 SDVO_NAME(intel_sdvo));