summaryrefslogtreecommitdiffstats
path: root/drivers/gpu/drm/i915
diff options
context:
space:
mode:
authorVille Syrjälä2018-11-12 17:59:55 +0100
committerVille Syrjälä2019-01-25 17:58:47 +0100
commite94390aadaf2bf0fb87c9b7b0c0dc9910f08356a (patch)
treeba6fa9e8fd18202800a8488d188c45dd344d1dd0 /drivers/gpu/drm/i915
parentdrm/i915/tv: Use drm_mode_set_name() to name TV modes (diff)
downloadkernel-qcow2-linux-e94390aadaf2bf0fb87c9b7b0c0dc9910f08356a.tar.gz
kernel-qcow2-linux-e94390aadaf2bf0fb87c9b7b0c0dc9910f08356a.tar.xz
kernel-qcow2-linux-e94390aadaf2bf0fb87c9b7b0c0dc9910f08356a.zip
drm/i915/tv: Make TV mode autoselection actually useable
The current code insists on picking a new TV mode when switching between component and non-component cables. That's super annoying. Let's just keep the current TV mode unless the new cable type actually disagrees with it. Signed-off-by: Ville Syrjälä <ville.syrjala@linux.intel.com> Link: https://patchwork.freedesktop.org/patch/msgid/20181112170000.27531-12-ville.syrjala@linux.intel.com Reviewed-by: Imre Deak <imre.deak@intel.com>
Diffstat (limited to 'drivers/gpu/drm/i915')
-rw-r--r--drivers/gpu/drm/i915/intel_tv.c12
1 files changed, 7 insertions, 5 deletions
diff --git a/drivers/gpu/drm/i915/intel_tv.c b/drivers/gpu/drm/i915/intel_tv.c
index 89e60a8f0fd9..6279d6fed7e9 100644
--- a/drivers/gpu/drm/i915/intel_tv.c
+++ b/drivers/gpu/drm/i915/intel_tv.c
@@ -1252,16 +1252,18 @@ static void intel_tv_find_better_format(struct drm_connector *connector)
const struct tv_mode *tv_mode = intel_tv_mode_find(connector->state);
int i;
- if ((intel_tv->type == DRM_MODE_CONNECTOR_Component) ==
- tv_mode->component_only)
+ /* Component supports everything so we can keep the current mode */
+ if (intel_tv->type == DRM_MODE_CONNECTOR_Component)
return;
+ /* If the current mode is fine don't change it */
+ if (!tv_mode->component_only)
+ return;
for (i = 0; i < ARRAY_SIZE(tv_modes); i++) {
- tv_mode = tv_modes + i;
+ tv_mode = &tv_modes[i];
- if ((intel_tv->type == DRM_MODE_CONNECTOR_Component) ==
- tv_mode->component_only)
+ if (!tv_mode->component_only)
break;
}