diff options
Diffstat (limited to 'drivers/gpu')
-rw-r--r-- | drivers/gpu/drm/i915/intel_sdvo.c | 8 |
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 | ||
145 | struct intel_sdvo_connector { | 150 | struct 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)); |