diff options
-rw-r--r-- | drivers/gpu/drm/drm_edid.c | 22 | ||||
-rw-r--r-- | include/drm/drm_crtc.h | 1 |
2 files changed, 23 insertions, 0 deletions
diff --git a/drivers/gpu/drm/drm_edid.c b/drivers/gpu/drm/drm_edid.c index d4e3f9d9370f..b8d6c5163575 100644 --- a/drivers/gpu/drm/drm_edid.c +++ b/drivers/gpu/drm/drm_edid.c | |||
@@ -2452,6 +2452,22 @@ u8 drm_match_cea_mode(const struct drm_display_mode *to_match) | |||
2452 | } | 2452 | } |
2453 | EXPORT_SYMBOL(drm_match_cea_mode); | 2453 | EXPORT_SYMBOL(drm_match_cea_mode); |
2454 | 2454 | ||
2455 | /** | ||
2456 | * drm_get_cea_aspect_ratio - get the picture aspect ratio corresponding to | ||
2457 | * the input VIC from the CEA mode list | ||
2458 | * @video_code: ID given to each of the CEA modes | ||
2459 | * | ||
2460 | * Returns picture aspect ratio | ||
2461 | */ | ||
2462 | enum hdmi_picture_aspect drm_get_cea_aspect_ratio(const u8 video_code) | ||
2463 | { | ||
2464 | /* return picture aspect ratio for video_code - 1 to access the | ||
2465 | * right array element | ||
2466 | */ | ||
2467 | return edid_cea_modes[video_code-1].picture_aspect_ratio; | ||
2468 | } | ||
2469 | EXPORT_SYMBOL(drm_get_cea_aspect_ratio); | ||
2470 | |||
2455 | /* | 2471 | /* |
2456 | * Calculate the alternate clock for HDMI modes (those from the HDMI vendor | 2472 | * Calculate the alternate clock for HDMI modes (those from the HDMI vendor |
2457 | * specific block). | 2473 | * specific block). |
@@ -3613,6 +3629,12 @@ drm_hdmi_avi_infoframe_from_display_mode(struct hdmi_avi_infoframe *frame, | |||
3613 | frame->video_code = drm_match_cea_mode(mode); | 3629 | frame->video_code = drm_match_cea_mode(mode); |
3614 | 3630 | ||
3615 | frame->picture_aspect = HDMI_PICTURE_ASPECT_NONE; | 3631 | frame->picture_aspect = HDMI_PICTURE_ASPECT_NONE; |
3632 | |||
3633 | /* Populate picture aspect ratio from CEA mode list */ | ||
3634 | if (frame->video_code > 0) | ||
3635 | frame->picture_aspect = drm_get_cea_aspect_ratio( | ||
3636 | frame->video_code); | ||
3637 | |||
3616 | frame->active_aspect = HDMI_ACTIVE_ASPECT_PICTURE; | 3638 | frame->active_aspect = HDMI_ACTIVE_ASPECT_PICTURE; |
3617 | frame->scan_mode = HDMI_SCAN_MODE_UNDERSCAN; | 3639 | frame->scan_mode = HDMI_SCAN_MODE_UNDERSCAN; |
3618 | 3640 | ||
diff --git a/include/drm/drm_crtc.h b/include/drm/drm_crtc.h index e55fccbe7c42..c061bb372199 100644 --- a/include/drm/drm_crtc.h +++ b/include/drm/drm_crtc.h | |||
@@ -1020,6 +1020,7 @@ extern int drm_mode_gamma_get_ioctl(struct drm_device *dev, | |||
1020 | extern int drm_mode_gamma_set_ioctl(struct drm_device *dev, | 1020 | extern int drm_mode_gamma_set_ioctl(struct drm_device *dev, |
1021 | void *data, struct drm_file *file_priv); | 1021 | void *data, struct drm_file *file_priv); |
1022 | extern u8 drm_match_cea_mode(const struct drm_display_mode *to_match); | 1022 | extern u8 drm_match_cea_mode(const struct drm_display_mode *to_match); |
1023 | extern enum hdmi_picture_aspect drm_get_cea_aspect_ratio(const u8 video_code); | ||
1023 | extern bool drm_detect_hdmi_monitor(struct edid *edid); | 1024 | extern bool drm_detect_hdmi_monitor(struct edid *edid); |
1024 | extern bool drm_detect_monitor_audio(struct edid *edid); | 1025 | extern bool drm_detect_monitor_audio(struct edid *edid); |
1025 | extern bool drm_rgb_quant_range_selectable(struct edid *edid); | 1026 | extern bool drm_rgb_quant_range_selectable(struct edid *edid); |