diff options
author | Daniel Vetter <daniel.vetter@ffwll.ch> | 2013-04-30 08:01:45 -0400 |
---|---|---|
committer | Daniel Vetter <daniel.vetter@ffwll.ch> | 2013-05-10 15:56:46 -0400 |
commit | 09ede5414f0215461c933032630bf9c3a61a8ba3 (patch) | |
tree | 603fe6012789c9b5dca478c33a2cc7aadc628cb6 /drivers/gpu/drm/i915/intel_sdvo.c | |
parent | a16af721e83466b965c7e53d5350e16abf9691e4 (diff) |
drm/i915: make SDVO TV-out work for multifunction devices
We need to track this correctly. While at it shovel the boolean
to track whether the sdvo is in tv mode or not into pipe_config.
Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=36997
Tested-by: Pierre Assal <pierre.assal@verint.com>
Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=63609
Tested-by: cancan,feng <cancan.feng@intel.com>
Reviewed-by: Jani Nikula <jani.nikula@intel.com>
Signed-off-by: Daniel Vetter <daniel.vetter@ffwll.ch>
Diffstat (limited to 'drivers/gpu/drm/i915/intel_sdvo.c')
-rw-r--r-- | drivers/gpu/drm/i915/intel_sdvo.c | 8 |
1 files changed, 2 insertions, 6 deletions
diff --git a/drivers/gpu/drm/i915/intel_sdvo.c b/drivers/gpu/drm/i915/intel_sdvo.c index 0fc6fc2d6a30..015f9f4263fe 100644 --- a/drivers/gpu/drm/i915/intel_sdvo.c +++ b/drivers/gpu/drm/i915/intel_sdvo.c | |||
@@ -1092,6 +1092,7 @@ static bool intel_sdvo_compute_config(struct intel_encoder *encoder, | |||
1092 | (void) intel_sdvo_get_preferred_input_mode(intel_sdvo, | 1092 | (void) intel_sdvo_get_preferred_input_mode(intel_sdvo, |
1093 | mode, | 1093 | mode, |
1094 | adjusted_mode); | 1094 | adjusted_mode); |
1095 | pipe_config->sdvo_tv_clock = true; | ||
1095 | } else if (intel_sdvo->is_lvds) { | 1096 | } else if (intel_sdvo->is_lvds) { |
1096 | if (!intel_sdvo_set_output_timings_from_mode(intel_sdvo, | 1097 | if (!intel_sdvo_set_output_timings_from_mode(intel_sdvo, |
1097 | intel_sdvo->sdvo_lvds_fixed_mode)) | 1098 | intel_sdvo->sdvo_lvds_fixed_mode)) |
@@ -1655,12 +1656,9 @@ intel_sdvo_detect(struct drm_connector *connector, bool force) | |||
1655 | if (ret == connector_status_connected) { | 1656 | if (ret == connector_status_connected) { |
1656 | intel_sdvo->is_tv = false; | 1657 | intel_sdvo->is_tv = false; |
1657 | intel_sdvo->is_lvds = false; | 1658 | intel_sdvo->is_lvds = false; |
1658 | intel_sdvo->base.needs_tv_clock = false; | ||
1659 | 1659 | ||
1660 | if (response & SDVO_TV_MASK) { | 1660 | if (response & SDVO_TV_MASK) |
1661 | intel_sdvo->is_tv = true; | 1661 | intel_sdvo->is_tv = true; |
1662 | intel_sdvo->base.needs_tv_clock = true; | ||
1663 | } | ||
1664 | if (response & SDVO_LVDS_MASK) | 1662 | if (response & SDVO_LVDS_MASK) |
1665 | intel_sdvo->is_lvds = intel_sdvo->sdvo_lvds_fixed_mode != NULL; | 1663 | intel_sdvo->is_lvds = intel_sdvo->sdvo_lvds_fixed_mode != NULL; |
1666 | } | 1664 | } |
@@ -2349,7 +2347,6 @@ intel_sdvo_tv_init(struct intel_sdvo *intel_sdvo, int type) | |||
2349 | intel_sdvo_connector->output_flag = type; | 2347 | intel_sdvo_connector->output_flag = type; |
2350 | 2348 | ||
2351 | intel_sdvo->is_tv = true; | 2349 | intel_sdvo->is_tv = true; |
2352 | intel_sdvo->base.needs_tv_clock = true; | ||
2353 | 2350 | ||
2354 | intel_sdvo_connector_init(intel_sdvo_connector, intel_sdvo); | 2351 | intel_sdvo_connector_init(intel_sdvo_connector, intel_sdvo); |
2355 | 2352 | ||
@@ -2437,7 +2434,6 @@ static bool | |||
2437 | intel_sdvo_output_setup(struct intel_sdvo *intel_sdvo, uint16_t flags) | 2434 | intel_sdvo_output_setup(struct intel_sdvo *intel_sdvo, uint16_t flags) |
2438 | { | 2435 | { |
2439 | intel_sdvo->is_tv = false; | 2436 | intel_sdvo->is_tv = false; |
2440 | intel_sdvo->base.needs_tv_clock = false; | ||
2441 | intel_sdvo->is_lvds = false; | 2437 | intel_sdvo->is_lvds = false; |
2442 | 2438 | ||
2443 | /* SDVO requires XXX1 function may not exist unless it has XXX0 function.*/ | 2439 | /* SDVO requires XXX1 function may not exist unless it has XXX0 function.*/ |