Merge branch 'for-linus' into topic/hda-cleanup
[firefly-linux-kernel-4.4.55.git] / drivers / gpu / drm / drm_edid.c
index dfa9769b26b5c57db0731361478639a9600b65b3..1dbf3bc4c6a3cdd580d00706052976aed01b94c9 100644 (file)
@@ -3305,6 +3305,7 @@ struct drm_connector *drm_select_eld(struct drm_encoder *encoder,
        struct drm_device *dev = encoder->dev;
 
        WARN_ON(!mutex_is_locked(&dev->mode_config.mutex));
+       WARN_ON(!drm_modeset_is_locked(&dev->mode_config.connection_mutex));
 
        list_for_each_entry(connector, &dev->mode_config.connector_list, head)
                if (connector->encoder == encoder && connector->eld[0])
@@ -3775,8 +3776,14 @@ drm_hdmi_avi_infoframe_from_display_mode(struct hdmi_avi_infoframe *frame,
 
        frame->picture_aspect = HDMI_PICTURE_ASPECT_NONE;
 
-       /* Populate picture aspect ratio from CEA mode list */
-       if (frame->video_code > 0)
+       /*
+        * Populate picture aspect ratio from either
+        * user input (if specified) or from the CEA mode list.
+        */
+       if (mode->picture_aspect_ratio == HDMI_PICTURE_ASPECT_4_3 ||
+               mode->picture_aspect_ratio == HDMI_PICTURE_ASPECT_16_9)
+               frame->picture_aspect = mode->picture_aspect_ratio;
+       else if (frame->video_code > 0)
                frame->picture_aspect = drm_get_cea_aspect_ratio(
                                                frame->video_code);