RE: [PATCH v2] drm/edid: ignore the CEA modes not defined in CEA-861-D

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



[AMD Official Use Only - General]

Thanks William!

After fixing few typos below, feel free to add:

Acked-by: Wayne Lin <Wayne.Lin@xxxxxxx>

> -----Original Message-----
> From: William Tseng <william.tseng@xxxxxxxxx>
> Sent: Monday, June 13, 2022 12:27 PM
> To: dri-devel@xxxxxxxxxxxxxxxxxxxxx
> Cc: William Tseng <william.tseng@xxxxxxxxx>; Ville Syrjälä
> <ville.syrjala@xxxxxxxxxxxxxxx>; Jani Nikula <jani.nikula@xxxxxxxxxxxxxxx>; Lin,
> Wayne <Wayne.Lin@xxxxxxx>; Lee Shawn C <shawn.c.lee@xxxxxxxxx>
> Subject: [PATCH v2] drm/edid: ignore the CEA modes not defined in CEA-
> 861-D
> 
> This is a workaround for HDMI 1.4 sink which has a CEA mode with higher vic
> than what is defined in CEA-861-D.
> 
> As an example, a HDMI 1.4 sink has the video format 2560x1080p to be
> displayed and the video format is indicated by both SVD (with vic 90 and
> pictuure aspect ratio 64:27) and DTD.  When connecting to such sink, source

Typo - picture
> can't output the video format in SVD because an error is returned by
> drm_hdmi_avi_infoframe_from_display_mode(), which can't fill the
> infoframe with pictuure aspect ratio 64:27 and the vic, which is originally 90

Typo - picture
> and is changed to 0 by drm_mode_cea_vic().
> 
> To work around it, do not set the vic 0 so the corresponding mode may be
> accepted in drm_hdmi_avi_infoframe_from_display_mode() and be
> dispalyed.
> 
> Cc: Ville Syrjälä <ville.syrjala@xxxxxxxxxxxxxxx>
> Cc: Jani Nikula <jani.nikula@xxxxxxxxxxxxxxx>
> Cc: Wayne Lin <waynelin@xxxxxxx>
> Cc: Lee Shawn C <shawn.c.lee@xxxxxxxxx>
> Signed-off-by: William Tseng <william.tseng@xxxxxxxxx>
> ---
>  drivers/gpu/drm/drm_edid.c | 10 ++++++----
>  1 file changed, 6 insertions(+), 4 deletions(-)
> 
> diff --git a/drivers/gpu/drm/drm_edid.c b/drivers/gpu/drm/drm_edid.c
> index bc43e1b32092..a4582627ec9d 100644
> --- a/drivers/gpu/drm/drm_edid.c
> +++ b/drivers/gpu/drm/drm_edid.c
> @@ -5876,7 +5876,8 @@ static u8 drm_mode_hdmi_vic(const struct
> drm_connector *connector,  }
> 
>  static u8 drm_mode_cea_vic(const struct drm_connector *connector,
> -			   const struct drm_display_mode *mode)
> +			   const struct drm_display_mode *mode,
> +			   bool is_hdmi2_sink)
>  {
>  	u8 vic;
> 
> @@ -5896,7 +5897,7 @@ static u8 drm_mode_cea_vic(const struct
> drm_connector *connector,
>  	 * HDMI 2.0 VIC range: 1 <= VIC <= 107 (CEA-861-F). So we
>  	 * have to make sure we dont break HDMI 1.4 sinks.
>  	 */
> -	if (!is_hdmi2_sink(connector) && vic > 64)
> +	if (!is_hdmi2_sink && vic > 64)
>  		return 0;
> 
>  	return vic;
> @@ -5927,7 +5928,7 @@
> drm_hdmi_avi_infoframe_from_display_mode(struct hdmi_avi_infoframe
> *frame,
>  	if (mode->flags & DRM_MODE_FLAG_DBLCLK)
>  		frame->pixel_repeat = 1;
> 
> -	vic = drm_mode_cea_vic(connector, mode);
> +	vic = drm_mode_cea_vic(connector, mode, true);
>  	hdmi_vic = drm_mode_hdmi_vic(connector, mode);
> 
>  	frame->picture_aspect = HDMI_PICTURE_ASPECT_NONE; @@ -
> 5971,7 +5972,8 @@ drm_hdmi_avi_infoframe_from_display_mode(struct
> hdmi_avi_infoframe *frame,
>  		picture_aspect = HDMI_PICTURE_ASPECT_NONE;
>  	}
> 
> -	frame->video_code = vic;
> +	frame->video_code = drm_mode_cea_vic(connector, mode,
> +						is_hdmi2_sink(connector));
>  	frame->picture_aspect = picture_aspect;
>  	frame->active_aspect = HDMI_ACTIVE_ASPECT_PICTURE;
>  	frame->scan_mode = HDMI_SCAN_MODE_UNDERSCAN;
> --
> 2.17.1




[Index of Archives]     [Linux DRI Users]     [Linux Intel Graphics]     [Linux USB Devel]     [Video for Linux]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]     [XFree86]     [Linux USB Devel]     [Video for Linux]     [Linux Audio Users]     [Linux Kernel]     [Linux SCSI]     [XFree86]
  Powered by Linux