f07e572f64
bcm2708: boot tested on RPi B+ v1.2 bcm2709: boot tested on RPi 3B v1.2 and RPi 4B v1.1 4G bcm2710: boot tested on RPi 3B v1.2 bcm2711: boot tested on RPi 4B v1.1 4G Signed-off-by: Álvaro Fernández Rojas <noltari@gmail.com>
59 lines
2.0 KiB
Diff
59 lines
2.0 KiB
Diff
From a90dcdf7cf7ad632f5a260758a76e406403a7e3c Mon Sep 17 00:00:00 2001
|
|
From: Dave Stevenson <dave.stevenson@raspberrypi.com>
|
|
Date: Thu, 14 May 2020 14:44:15 +0100
|
|
Subject: [PATCH] drm/vc4: Fix VIC usage with Broadcast RGB
|
|
|
|
Adding the Broadcast RGB range selection broke the VIC
|
|
field of the AVI infoframes on HDMI, zeroing them for all
|
|
modes on an HDMI monitor.
|
|
|
|
Correct this so that it is only zeroed if the range is
|
|
contrary to the standard range of the mode.
|
|
|
|
Signed-off-by: Dave Stevenson <dave.stevenson@raspberrypi.com>
|
|
---
|
|
drivers/gpu/drm/vc4/vc4_firmware_kms.c | 19 ++++++++++++-------
|
|
1 file changed, 12 insertions(+), 7 deletions(-)
|
|
|
|
--- a/drivers/gpu/drm/vc4/vc4_firmware_kms.c
|
|
+++ b/drivers/gpu/drm/vc4/vc4_firmware_kms.c
|
|
@@ -936,19 +936,14 @@ static void vc4_crtc_mode_set_nofb(struc
|
|
break;
|
|
}
|
|
|
|
+ mb.timings.video_id_code = frame.avi.video_code;
|
|
+
|
|
if (!vc4_encoder->hdmi_monitor) {
|
|
mb.timings.flags |= TIMINGS_FLAGS_DVI;
|
|
- mb.timings.video_id_code = frame.avi.video_code;
|
|
} else {
|
|
struct vc4_fkms_connector_state *conn_state =
|
|
to_vc4_fkms_connector_state(vc4_crtc->connector->state);
|
|
|
|
- /* Do not provide a VIC as the HDMI spec requires that we do not
|
|
- * signal the opposite of the defined range in the AVI
|
|
- * infoframe.
|
|
- */
|
|
- mb.timings.video_id_code = 0;
|
|
-
|
|
if (conn_state->broadcast_rgb == VC4_BROADCAST_RGB_AUTO) {
|
|
/* See CEA-861-E - 5.1 Default Encoding Parameters */
|
|
if (drm_default_rgb_quant_range(mode) ==
|
|
@@ -958,6 +953,16 @@ static void vc4_crtc_mode_set_nofb(struc
|
|
if (conn_state->broadcast_rgb ==
|
|
VC4_BROADCAST_RGB_LIMITED)
|
|
mb.timings.flags |= TIMINGS_FLAGS_RGB_LIMITED;
|
|
+
|
|
+ /* If not using the default range, then do not provide
|
|
+ * a VIC as the HDMI spec requires that we do not
|
|
+ * signal the opposite of the defined range in the AVI
|
|
+ * infoframe.
|
|
+ */
|
|
+ if (!!(mb.timings.flags & TIMINGS_FLAGS_RGB_LIMITED) !=
|
|
+ (drm_default_rgb_quant_range(mode) ==
|
|
+ HDMI_QUANTIZATION_RANGE_LIMITED))
|
|
+ mb.timings.video_id_code = 0;
|
|
}
|
|
}
|
|
|