drm/i915: simplify possible_clones computation
[GitHub/mt8127/android_kernel_alcatel_ttab.git] / drivers / gpu / drm / i915 / intel_tv.c
index a233a51fd7e60c9f48ea89fd9b425140f4bf0ceb..1a0bab07699e9d0e0d7cd87f095d57cbe3913285 100644 (file)
@@ -891,24 +891,21 @@ intel_tv_mode_valid(struct drm_connector *connector,
 
 
 static bool
-intel_tv_mode_fixup(struct drm_encoder *encoder, struct drm_display_mode *mode,
+intel_tv_mode_fixup(struct drm_encoder *encoder,
+                   const struct drm_display_mode *mode,
                    struct drm_display_mode *adjusted_mode)
 {
        struct drm_device *dev = encoder->dev;
-       struct drm_mode_config *drm_config = &dev->mode_config;
        struct intel_tv *intel_tv = enc_to_intel_tv(encoder);
        const struct tv_mode *tv_mode = intel_tv_mode_find(intel_tv);
-       struct drm_encoder *other_encoder;
+       struct intel_encoder *other_encoder;
 
        if (!tv_mode)
                return false;
 
-       /* FIXME: lock encoder list */
-       list_for_each_entry(other_encoder, &drm_config->encoder_list, head) {
-               if (other_encoder != encoder &&
-                   other_encoder->crtc == encoder->crtc)
+       for_each_encoder_on_crtc(dev, encoder->crtc, other_encoder)
+               if (&other_encoder->base != encoder)
                        return false;
-       }
 
        adjusted_mode->clock = tv_mode->clock;
        return true;
@@ -1625,7 +1622,7 @@ intel_tv_init(struct drm_device *dev)
        intel_connector_attach_encoder(intel_connector, intel_encoder);
        intel_encoder->type = INTEL_OUTPUT_TVOUT;
        intel_encoder->crtc_mask = (1 << 0) | (1 << 1);
-       intel_encoder->clone_mask = (1 << INTEL_TV_CLONE_BIT);
+       intel_encoder->cloneable = false;
        intel_encoder->base.possible_crtcs = ((1 << 0) | (1 << 1));
        intel_encoder->base.possible_clones = (1 << INTEL_OUTPUT_TVOUT);
        intel_tv->type = DRM_MODE_CONNECTOR_Unknown;