On Tue, 20 Aug 2019 04:16:34 +0300
Laurent Pinchart <laurent.pinch...@ideasonboard.com> wrote:

> The drm_display_info structure contains many fields related to HDMI
> sinks, but none that identifies if a sink compliant with CEA-861 (EDID)
> shall be treated as an HDMI sink or a DVI sink. Add such a flag, and
> populate it according to section 8.3.3 ("DVI/HDMI Device
> Discrimination") of the HDMI v1.3 specification.
> 
> Signed-off-by: Laurent Pinchart <laurent.pinch...@ideasonboard.com>
> Reviewed-by: Andrzej Hajda <a.ha...@samsung.com>
> Reviewed-by: Ville Syrjälä <ville.syrj...@linux.intel.com>
> Reviewed-by: Daniel Vetter <daniel.vet...@ffwll.ch>

Reviewed-by: Boris Brezillon <boris.brezil...@collabora.com>

> ---
> Changes since v1:
> 
> - Link the is_hdmi field doc with drm_detect_hdmi_monitor()
> - Add a conversion task in todo.rst
> ---
>  Documentation/gpu/todo.rst  | 12 ++++++++++++
>  drivers/gpu/drm/drm_edid.c  |  6 ++++++
>  include/drm/drm_connector.h |  8 ++++++++
>  3 files changed, 26 insertions(+)
> 
> diff --git a/Documentation/gpu/todo.rst b/Documentation/gpu/todo.rst
> index 32787acff0a8..199751149e23 100644
> --- a/Documentation/gpu/todo.rst
> +++ b/Documentation/gpu/todo.rst
> @@ -284,6 +284,18 @@ drm_fb_helper tasks
>    removed: drm_fb_helper_single_add_all_connectors(),
>    drm_fb_helper_add_one_connector() and drm_fb_helper_remove_one_connector().
>  
> +Replace drm_detect_hdmi_monitor() with drm_display_info.is_hdmi
> +---------------------------------------------------------------
> +
> +Once EDID is parsed, the monitor HDMI support information is available 
> through
> +drm_display_info.is_hdmi. Many drivers still call drm_detect_hdmi_monitor() 
> to
> +retrieve the same information, which is less efficient.
> +
> +Audit each individual driver calling drm_detect_hdmi_monitor() and switch to
> +drm_display_info.is_hdmi if applicable.
> +
> +Contact: Laurent Pinchart, respective driver maintainers
> +
>  Core refactorings
>  =================
>  
> diff --git a/drivers/gpu/drm/drm_edid.c b/drivers/gpu/drm/drm_edid.c
> index 86ddb67c1e8a..8be00dda945b 100644
> --- a/drivers/gpu/drm/drm_edid.c
> +++ b/drivers/gpu/drm/drm_edid.c
> @@ -4325,6 +4325,9 @@ EXPORT_SYMBOL(drm_av_sync_delay);
>   *
>   * Parse the CEA extension according to CEA-861-B.
>   *
> + * Drivers that have added the modes parsed from EDID to drm_display_info
> + * should use &drm_display_info.is_hdmi instead of calling this function.
> + *
>   * Return: True if the monitor is HDMI, false if not or unknown.
>   */
>  bool drm_detect_hdmi_monitor(struct edid *edid)
> @@ -4559,6 +4562,8 @@ drm_parse_hdmi_vsdb_video(struct drm_connector 
> *connector, const u8 *db)
>       struct drm_display_info *info = &connector->display_info;
>       u8 len = cea_db_payload_len(db);
>  
> +     info->is_hdmi = true;
> +
>       if (len >= 6)
>               info->dvi_dual = db[6] & 1;
>       if (len >= 7)
> @@ -4627,6 +4632,7 @@ drm_reset_display_info(struct drm_connector *connector)
>       info->cea_rev = 0;
>       info->max_tmds_clock = 0;
>       info->dvi_dual = false;
> +     info->is_hdmi = false;
>       info->has_hdmi_infoframe = false;
>       info->rgb_quant_range_selectable = false;
>       memset(&info->hdmi, 0, sizeof(info->hdmi));
> diff --git a/include/drm/drm_connector.h b/include/drm/drm_connector.h
> index b91e369cfb11..9b6f69c5092b 100644
> --- a/include/drm/drm_connector.h
> +++ b/include/drm/drm_connector.h
> @@ -430,6 +430,14 @@ struct drm_display_info {
>        */
>       bool dvi_dual;
>  
> +     /**
> +      * @is_hdmi: True if the sink is an HDMI device.
> +      *
> +      * This field shall be used instead of calling
> +      * drm_detect_hdmi_monitor() when possible.
> +      */
> +     bool is_hdmi;
> +
>       /**
>        * @has_hdmi_infoframe: Does the sink support the HDMI infoframe?
>        */

_______________________________________________
dri-devel mailing list
dri-devel@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/dri-devel

Reply via email to