OSDN Git Service

drm/nouveau: set RGB quantization range to FULL
authorHans Verkuil <hverkuil-cisco@xs4all.nl>
Wed, 10 Nov 2021 15:58:42 +0000 (16:58 +0100)
committerKarol Herbst <kherbst@redhat.com>
Fri, 12 Nov 2021 22:46:05 +0000 (23:46 +0100)
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>
Signed-off-by: Karol Herbst <kherbst@redhat.com>
Link: https://patchwork.freedesktop.org/patch/msgid/e9a4a58a-0500-50f6-58cc-938a253cedeb@xs4all.nl
drivers/gpu/drm/nouveau/dispnv50/disp.c

index 7b8992e..23fa9ec 100644 (file)
@@ -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);