From: Dillon Varone <[email protected]>

[Why?]
When a monitor does not set both QS and QY bits, DC does not
set Q0, Q1, QY0 and QY1 bits in AVI infoframe. Setting RGB bits
should be separate from setting YCC bits.

[How?]
Separate logic for setting RGB and YCC quantization range bits
in the AVI infoframe.

Signed-off-by: Dillon Varone <[email protected]>
Reviewed-by: Chris Park <[email protected]>
Acked-by: Aurabindo Pillai <[email protected]>
---
 .../gpu/drm/amd/display/dc/core/dc_resource.c | 33 +++++++++++--------
 1 file changed, 19 insertions(+), 14 deletions(-)

diff --git a/drivers/gpu/drm/amd/display/dc/core/dc_resource.c 
b/drivers/gpu/drm/amd/display/dc/core/dc_resource.c
index ac7a75887f95..8cb937c046aa 100644
--- a/drivers/gpu/drm/amd/display/dc/core/dc_resource.c
+++ b/drivers/gpu/drm/amd/display/dc/core/dc_resource.c
@@ -2506,26 +2506,31 @@ static void set_avi_info_frame(
                hdmi_info.bits.ITC = itc_value;
        }
 
+       if (stream->qs_bit == 1) {
+               if (color_space == COLOR_SPACE_SRGB ||
+                       color_space == COLOR_SPACE_2020_RGB_FULLRANGE)
+                       hdmi_info.bits.Q0_Q1   = RGB_QUANTIZATION_FULL_RANGE;
+               else if (color_space == COLOR_SPACE_SRGB_LIMITED ||
+                                       color_space == 
COLOR_SPACE_2020_RGB_LIMITEDRANGE)
+                       hdmi_info.bits.Q0_Q1   = RGB_QUANTIZATION_LIMITED_RANGE;
+               else
+                       hdmi_info.bits.Q0_Q1   = RGB_QUANTIZATION_DEFAULT_RANGE;
+       } else
+               hdmi_info.bits.Q0_Q1   = RGB_QUANTIZATION_DEFAULT_RANGE;
+
        /* TODO : We should handle YCC quantization */
        /* but we do not have matrix calculation */
-       if (stream->qs_bit == 1 &&
-                       stream->qy_bit == 1) {
+       if (stream->qy_bit == 1) {
                if (color_space == COLOR_SPACE_SRGB ||
-                       color_space == COLOR_SPACE_2020_RGB_FULLRANGE) {
-                       hdmi_info.bits.Q0_Q1   = RGB_QUANTIZATION_FULL_RANGE;
+                       color_space == COLOR_SPACE_2020_RGB_FULLRANGE)
                        hdmi_info.bits.YQ0_YQ1 = YYC_QUANTIZATION_LIMITED_RANGE;
-               } else if (color_space == COLOR_SPACE_SRGB_LIMITED ||
-                                       color_space == 
COLOR_SPACE_2020_RGB_LIMITEDRANGE) {
-                       hdmi_info.bits.Q0_Q1   = RGB_QUANTIZATION_LIMITED_RANGE;
+               else if (color_space == COLOR_SPACE_SRGB_LIMITED ||
+                                       color_space == 
COLOR_SPACE_2020_RGB_LIMITEDRANGE)
                        hdmi_info.bits.YQ0_YQ1 = YYC_QUANTIZATION_LIMITED_RANGE;
-               } else {
-                       hdmi_info.bits.Q0_Q1   = RGB_QUANTIZATION_DEFAULT_RANGE;
+               else
                        hdmi_info.bits.YQ0_YQ1 = YYC_QUANTIZATION_LIMITED_RANGE;
-               }
-       } else {
-               hdmi_info.bits.Q0_Q1   = RGB_QUANTIZATION_DEFAULT_RANGE;
-               hdmi_info.bits.YQ0_YQ1   = YYC_QUANTIZATION_LIMITED_RANGE;
-       }
+       } else
+               hdmi_info.bits.YQ0_YQ1 = YYC_QUANTIZATION_LIMITED_RANGE;
 
        ///VIC
        format = stream->timing.timing_3d_format;
-- 
2.31.1

_______________________________________________
amd-gfx mailing list
[email protected]
https://lists.freedesktop.org/mailman/listinfo/amd-gfx

Reply via email to