Commit 05911836 authored by Leo Ma's avatar Leo Ma Committed by Alex Deucher

drm/amd/display: Fix HDMI VSIF V3 incorrect issue

[Why]
Reported from customer the checksum in AMD VSIF V3 is incorrect and
causing blank screen issue.

[How]
Fix the packet length issue on AMD HDMI VSIF V3.
Reviewed-by: default avatarAnthony Koo <Anthony.Koo@amd.com>
Acked-by: default avatarTom Chung <chiahsuan.chung@amd.com>
Signed-off-by: default avatarLeo Ma <hanghong.ma@amd.com>
Tested-by: default avatarDaniel Wheeler <daniel.wheeler@amd.com>
Signed-off-by: default avatarAlex Deucher <alexander.deucher@amd.com>
parent 615fc502
...@@ -613,10 +613,6 @@ static void build_vrr_infopacket_data_v1(const struct mod_vrr_params *vrr, ...@@ -613,10 +613,6 @@ static void build_vrr_infopacket_data_v1(const struct mod_vrr_params *vrr,
* Note: We should never go above the field rate of the mode timing set. * Note: We should never go above the field rate of the mode timing set.
*/ */
infopacket->sb[8] = (unsigned char)((vrr->max_refresh_in_uhz + 500000) / 1000000); infopacket->sb[8] = (unsigned char)((vrr->max_refresh_in_uhz + 500000) / 1000000);
/* FreeSync HDR */
infopacket->sb[9] = 0;
infopacket->sb[10] = 0;
} }
static void build_vrr_infopacket_data_v3(const struct mod_vrr_params *vrr, static void build_vrr_infopacket_data_v3(const struct mod_vrr_params *vrr,
...@@ -684,10 +680,6 @@ static void build_vrr_infopacket_data_v3(const struct mod_vrr_params *vrr, ...@@ -684,10 +680,6 @@ static void build_vrr_infopacket_data_v3(const struct mod_vrr_params *vrr,
/* PB16 : Reserved bits 7:1, FixedRate bit 0 */ /* PB16 : Reserved bits 7:1, FixedRate bit 0 */
infopacket->sb[16] = (vrr->state == VRR_STATE_ACTIVE_FIXED) ? 1 : 0; infopacket->sb[16] = (vrr->state == VRR_STATE_ACTIVE_FIXED) ? 1 : 0;
//FreeSync HDR
infopacket->sb[9] = 0;
infopacket->sb[10] = 0;
} }
static void build_vrr_infopacket_fs2_data(enum color_transfer_func app_tf, static void build_vrr_infopacket_fs2_data(enum color_transfer_func app_tf,
...@@ -772,8 +764,7 @@ static void build_vrr_infopacket_header_v2(enum signal_type signal, ...@@ -772,8 +764,7 @@ static void build_vrr_infopacket_header_v2(enum signal_type signal,
/* HB2 = [Bits 7:5 = 0] [Bits 4:0 = Length = 0x09] */ /* HB2 = [Bits 7:5 = 0] [Bits 4:0 = Length = 0x09] */
infopacket->hb2 = 0x09; infopacket->hb2 = 0x09;
*payload_size = 0x0A; *payload_size = 0x09;
} else if (dc_is_dp_signal(signal)) { } else if (dc_is_dp_signal(signal)) {
/* HEADER */ /* HEADER */
...@@ -822,9 +813,9 @@ static void build_vrr_infopacket_header_v3(enum signal_type signal, ...@@ -822,9 +813,9 @@ static void build_vrr_infopacket_header_v3(enum signal_type signal,
infopacket->hb1 = version; infopacket->hb1 = version;
/* HB2 = [Bits 7:5 = 0] [Bits 4:0 = Length] */ /* HB2 = [Bits 7:5 = 0] [Bits 4:0 = Length] */
*payload_size = 0x10; infopacket->hb2 = 0x10;
infopacket->hb2 = *payload_size - 1; //-1 for checksum
*payload_size = 0x10;
} else if (dc_is_dp_signal(signal)) { } else if (dc_is_dp_signal(signal)) {
/* HEADER */ /* HEADER */
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment