OSDN Git Service

drm/i915/tv: Make TV mode autoselection actually useable
authorVille Syrjälä <ville.syrjala@linux.intel.com>
Mon, 12 Nov 2018 16:59:55 +0000 (18:59 +0200)
committerVille Syrjälä <ville.syrjala@linux.intel.com>
Fri, 25 Jan 2019 16:58:47 +0000 (18:58 +0200)
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>
drivers/gpu/drm/i915/intel_tv.c

index 89e60a8..6279d6f 100644 (file)
@@ -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;
        }