]> git.proxmox.com Git - mirror_ubuntu-kernels.git/commitdiff
drm/amd/display: Fix HDMI framepack 3D test issue
authorSung Joon Kim <sungkim@amd.com>
Thu, 5 Oct 2023 18:56:24 +0000 (14:56 -0400)
committerAlex Deucher <alexander.deucher@amd.com>
Thu, 26 Oct 2023 22:58:07 +0000 (18:58 -0400)
[why]
Bandwidth validation failure on framepack tests.
Need to double pixel clock when 3D format is
framepack. Also for HDMI displays, we need to
keep the ITC flag to 1 by default.

[how]
Double the pixel clock when using framepack 3D format.
Set hdmi ITC bit to 1.

Reviewed-by: Charlene Liu <charlene.liu@amd.com>
Acked-by: Roman Li <roman.li@amd.com>
Signed-off-by: Sung Joon Kim <sungkim@amd.com>
Tested-by: Daniel Wheeler <daniel.wheeler@amd.com>
Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
drivers/gpu/drm/amd/display/dc/core/dc_resource.c
drivers/gpu/drm/amd/display/dc/dml2/dml2_translation_helper.c

index f9e472f08e21bbd15538fde6f491fcf3cbdcdfb2..1d48278cba96c587be346e32c4ce46bfe6aaf85e 100644 (file)
@@ -4229,7 +4229,7 @@ static void set_avi_info_frame(
        switch (stream->content_type) {
        case DISPLAY_CONTENT_TYPE_NO_DATA:
                hdmi_info.bits.CN0_CN1 = 0;
-               hdmi_info.bits.ITC = 0;
+               hdmi_info.bits.ITC = 1;
                break;
        case DISPLAY_CONTENT_TYPE_GRAPHICS:
                hdmi_info.bits.CN0_CN1 = 0;
index 331f6bd97d38a2cf80273caa7df842c392079724..89836f175a138e924253adedd5e13d602b004e21 100644 (file)
@@ -571,6 +571,8 @@ static void populate_dml_timing_cfg_from_stream_state(struct dml_timing_cfg_st *
        out->RefreshRate[location] = ((in->timing.pix_clk_100hz * 100) / in->timing.h_total) / in->timing.v_total;
        out->VFrontPorch[location] = in->timing.v_front_porch;
        out->PixelClock[location] = in->timing.pix_clk_100hz / 10000.00;
+       if (in->timing.timing_3d_format == TIMING_3D_FORMAT_HW_FRAME_PACKING)
+               out->PixelClock[location] *= 2;
        out->HTotal[location] = in->timing.h_total;
        out->VTotal[location] = in->timing.v_total;
        out->Interlace[location] = in->timing.flags.INTERLACE;