diff mbox series

drm/nouveau: set RGB quantization range to FULL

Message ID e9a4a58a-0500-50f6-58cc-938a253cedeb@xs4all.nl (mailing list archive)
State New, archived
Headers show
Series drm/nouveau: set RGB quantization range to FULL | expand

Commit Message

Hans Verkuil Nov. 10, 2021, 3:58 p.m. UTC
The nouveau driver outputs full range RGB, but the AVI InfoFrame just says
'Default' instead of 'Full'.

Call drm_hdmi_avi_infoframe_quant_range to fill in the quantization field of
the AVI InfoFrame correctly. Now displays that advertise RGB Selectable
Quantization Range in their EDID will understand that full range is transmitted
by the HDMI output. This is consistent to how the Nvidia's driver behaves.

Signed-off-by: Hans Verkuil <hverkuil-cisco@xs4all.nl>
---

Comments

Ben Skeggs Nov. 11, 2021, 12:44 a.m. UTC | #1
On Thu, 11 Nov 2021 at 01:58, Hans Verkuil <hverkuil-cisco@xs4all.nl> wrote:
>
> The nouveau driver outputs full range RGB, but the AVI InfoFrame just says
> 'Default' instead of 'Full'.
>
> Call drm_hdmi_avi_infoframe_quant_range to fill in the quantization field of
> the AVI InfoFrame correctly. Now displays that advertise RGB Selectable
> Quantization Range in their EDID will understand that full range is transmitted
> by the HDMI output. This is consistent to how the Nvidia's driver behaves.
>
> Signed-off-by: Hans Verkuil <hverkuil-cisco@xs4all.nl>
Reviewed-by: Ben Skeggs <bskeggs@redhat.com>

> ---
> diff --git a/drivers/gpu/drm/nouveau/dispnv50/disp.c b/drivers/gpu/drm/nouveau/dispnv50/disp.c
> index d7b9f7f8c9e3..b05c01927fe6 100644
> --- a/drivers/gpu/drm/nouveau/dispnv50/disp.c
> +++ b/drivers/gpu/drm/nouveau/dispnv50/disp.c
> @@ -852,6 +852,9 @@ nv50_hdmi_enable(struct drm_encoder *encoder, struct nouveau_crtc *nv_crtc,
>         ret = drm_hdmi_avi_infoframe_from_display_mode(&avi_frame.avi,
>                                                        &nv_connector->base, mode);
>         if (!ret) {
> +               drm_hdmi_avi_infoframe_quant_range(&avi_frame.avi,
> +                                                  &nv_connector->base, mode,
> +                                                  HDMI_QUANTIZATION_RANGE_FULL);
>                 /* We have an AVI InfoFrame, populate it to the display */
>                 args.pwr.avi_infoframe_length
>                         = hdmi_infoframe_pack(&avi_frame, args.infoframes, 17);
diff mbox series

Patch

diff --git a/drivers/gpu/drm/nouveau/dispnv50/disp.c b/drivers/gpu/drm/nouveau/dispnv50/disp.c
index d7b9f7f8c9e3..b05c01927fe6 100644
--- a/drivers/gpu/drm/nouveau/dispnv50/disp.c
+++ b/drivers/gpu/drm/nouveau/dispnv50/disp.c
@@ -852,6 +852,9 @@  nv50_hdmi_enable(struct drm_encoder *encoder, struct nouveau_crtc *nv_crtc,
 	ret = drm_hdmi_avi_infoframe_from_display_mode(&avi_frame.avi,
 						       &nv_connector->base, mode);
 	if (!ret) {
+		drm_hdmi_avi_infoframe_quant_range(&avi_frame.avi,
+						   &nv_connector->base, mode,
+						   HDMI_QUANTIZATION_RANGE_FULL);
 		/* We have an AVI InfoFrame, populate it to the display */
 		args.pwr.avi_infoframe_length
 			= hdmi_infoframe_pack(&avi_frame, args.infoframes, 17);