drm/amd/display: Send H14b-VSIF specified in HDMI
authorWayne Lin <Wayne.Lin@amd.com>
Wed, 15 Jul 2020 08:45:09 +0000 (16:45 +0800)
committerAlex Deucher <alexander.deucher@amd.com>
Wed, 26 Aug 2020 20:40:18 +0000 (16:40 -0400)
[Why]
Current function excludes the logic to generate H14b-VSIF. Now it
constructs HF-VSIF only and causes HDMI compliace test fail.

[How]
According to HDMI spec, source devices shall utilize the H14b-VSIF
whenever the signaling capabilities of the H14b-VSIF allow this.

Here keep the logic for HF-VSIF and add H14b-VSIF construction part.

Signed-off-by: Wayne Lin <Wayne.Lin@amd.com>
Reviewed-by: Roman Li <Roman.Li@amd.com>
Acked-by: Eryk Brol <eryk.brol@amd.com>
Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c
drivers/gpu/drm/amd/display/modules/inc/mod_info_packet.h
drivers/gpu/drm/amd/display/modules/info_packet/info_packet.c

index ec6710f..785f21e 100644 (file)
@@ -4685,7 +4685,8 @@ create_stream_for_sink(struct amdgpu_dm_connector *aconnector,
        update_stream_signal(stream, sink);
 
        if (stream->signal == SIGNAL_TYPE_HDMI_TYPE_A)
-               mod_build_hf_vsif_infopacket(stream, &stream->vsp_infopacket, false, false);
+               mod_build_hf_vsif_infopacket(stream, &stream->vsp_infopacket);
+
        if (stream->link->psr_settings.psr_feature_enabled) {
                //
                // should decide stream support vsc sdp colorimetry capability
index 13c57ff..1ab813b 100644 (file)
@@ -37,6 +37,6 @@ void mod_build_vsc_infopacket(const struct dc_stream_state *stream,
                struct dc_info_packet *info_packet);
 
 void mod_build_hf_vsif_infopacket(const struct dc_stream_state *stream,
-               struct dc_info_packet *info_packet, int ALLMEnabled, int ALLMValue);
+               struct dc_info_packet *info_packet);
 
 #endif
index 7cd8a43..0fdf7a3 100644 (file)
@@ -421,15 +421,13 @@ void mod_build_vsc_infopacket(const struct dc_stream_state *stream,
  *****************************************************************************
  */
 void mod_build_hf_vsif_infopacket(const struct dc_stream_state *stream,
-               struct dc_info_packet *info_packet, int ALLMEnabled, int ALLMValue)
+               struct dc_info_packet *info_packet)
 {
                unsigned int length = 5;
                bool hdmi_vic_mode = false;
                uint8_t checksum = 0;
                uint32_t i = 0;
                enum dc_timing_3d_format format;
-               bool bALLM = (bool)ALLMEnabled;
-               bool bALLMVal = (bool)ALLMValue;
 
                info_packet->valid = false;
                format = stream->timing.timing_3d_format;
@@ -442,20 +440,13 @@ void mod_build_hf_vsif_infopacket(const struct dc_stream_state *stream,
                                && format == TIMING_3D_FORMAT_NONE)
                        hdmi_vic_mode = true;
 
-               if ((format == TIMING_3D_FORMAT_NONE) && !hdmi_vic_mode && !bALLM)
+               if ((format == TIMING_3D_FORMAT_NONE) && !hdmi_vic_mode)
                        return;
 
                info_packet->sb[1] = 0x03;
                info_packet->sb[2] = 0x0C;
                info_packet->sb[3] = 0x00;
 
-               if (bALLM) {
-                       info_packet->sb[1] = 0xD8;
-                       info_packet->sb[2] = 0x5D;
-                       info_packet->sb[3] = 0xC4;
-                       info_packet->sb[4] = HF_VSIF_VERSION;
-               }
-
                if (format != TIMING_3D_FORMAT_NONE)
                        info_packet->sb[4] = (2 << 5);
 
@@ -490,9 +481,6 @@ void mod_build_hf_vsif_infopacket(const struct dc_stream_state *stream,
                info_packet->hb1 = 0x01;
                info_packet->hb2 = (uint8_t) (length);
 
-               if (bALLM)
-                       info_packet->sb[5] = (info_packet->sb[5] & ~0x02) | (bALLMVal << 1);
-
                checksum += info_packet->hb0;
                checksum += info_packet->hb1;
                checksum += info_packet->hb2;