Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux
1
fork

Configure Feed

Select the types of activity you want to include in your feed.

drm/amd/display: Switch to immediate mode for updating infopackets

[Why]
Using FRAME_UPDATE will result in infopacket to be potentially updated
one frame late.
In commit stream scenarios for previously active stream, some stale
infopacket data from previous config might be erroneously sent out on
initial frame after stream is re-enabled.

[How]
Switch to using IMMEDIATE_UPDATE mode

Signed-off-by: Anthony Koo <Anthony.Koo@amd.com>
Reviewed-by: Ashley Thomas <Ashley.Thomas2@amd.com>
Acked-by: Qingqing Zhuo <qingqing.zhuo@amd.com>
Signed-off-by: Alex Deucher <alexander.deucher@amd.com>

authored by

Anthony Koo and committed by
Alex Deucher
073e7cd5 575da8db

+22 -8
+8 -8
drivers/gpu/drm/amd/display/dc/dcn10/dcn10_stream_encoder.c
··· 121 121 switch (packet_index) { 122 122 case 0: 123 123 REG_UPDATE(AFMT_VBI_PACKET_CONTROL1, 124 - AFMT_GENERIC0_FRAME_UPDATE, 1); 124 + AFMT_GENERIC0_IMMEDIATE_UPDATE, 1); 125 125 break; 126 126 case 1: 127 127 REG_UPDATE(AFMT_VBI_PACKET_CONTROL1, 128 - AFMT_GENERIC1_FRAME_UPDATE, 1); 128 + AFMT_GENERIC1_IMMEDIATE_UPDATE, 1); 129 129 break; 130 130 case 2: 131 131 REG_UPDATE(AFMT_VBI_PACKET_CONTROL1, 132 - AFMT_GENERIC2_FRAME_UPDATE, 1); 132 + AFMT_GENERIC2_IMMEDIATE_UPDATE, 1); 133 133 break; 134 134 case 3: 135 135 REG_UPDATE(AFMT_VBI_PACKET_CONTROL1, 136 - AFMT_GENERIC3_FRAME_UPDATE, 1); 136 + AFMT_GENERIC3_IMMEDIATE_UPDATE, 1); 137 137 break; 138 138 case 4: 139 139 REG_UPDATE(AFMT_VBI_PACKET_CONTROL1, 140 - AFMT_GENERIC4_FRAME_UPDATE, 1); 140 + AFMT_GENERIC4_IMMEDIATE_UPDATE, 1); 141 141 break; 142 142 case 5: 143 143 REG_UPDATE(AFMT_VBI_PACKET_CONTROL1, 144 - AFMT_GENERIC5_FRAME_UPDATE, 1); 144 + AFMT_GENERIC5_IMMEDIATE_UPDATE, 1); 145 145 break; 146 146 case 6: 147 147 REG_UPDATE(AFMT_VBI_PACKET_CONTROL1, 148 - AFMT_GENERIC6_FRAME_UPDATE, 1); 148 + AFMT_GENERIC6_IMMEDIATE_UPDATE, 1); 149 149 break; 150 150 case 7: 151 151 REG_UPDATE(AFMT_VBI_PACKET_CONTROL1, 152 - AFMT_GENERIC7_FRAME_UPDATE, 1); 152 + AFMT_GENERIC7_IMMEDIATE_UPDATE, 1); 153 153 break; 154 154 default: 155 155 break;
+14
drivers/gpu/drm/amd/display/dc/dcn10/dcn10_stream_encoder.h
··· 281 281 SE_SF(DIG0_AFMT_VBI_PACKET_CONTROL1, AFMT_GENERIC2_FRAME_UPDATE, mask_sh),\ 282 282 SE_SF(DIG0_AFMT_VBI_PACKET_CONTROL1, AFMT_GENERIC3_FRAME_UPDATE, mask_sh),\ 283 283 SE_SF(DIG0_AFMT_VBI_PACKET_CONTROL1, AFMT_GENERIC4_FRAME_UPDATE, mask_sh),\ 284 + SE_SF(DIG0_AFMT_VBI_PACKET_CONTROL1, AFMT_GENERIC0_IMMEDIATE_UPDATE, mask_sh),\ 285 + SE_SF(DIG0_AFMT_VBI_PACKET_CONTROL1, AFMT_GENERIC1_IMMEDIATE_UPDATE, mask_sh),\ 286 + SE_SF(DIG0_AFMT_VBI_PACKET_CONTROL1, AFMT_GENERIC2_IMMEDIATE_UPDATE, mask_sh),\ 287 + SE_SF(DIG0_AFMT_VBI_PACKET_CONTROL1, AFMT_GENERIC3_IMMEDIATE_UPDATE, mask_sh),\ 284 288 SE_SF(DIG0_AFMT_VBI_PACKET_CONTROL1, AFMT_GENERIC4_IMMEDIATE_UPDATE, mask_sh),\ 289 + SE_SF(DIG0_AFMT_VBI_PACKET_CONTROL1, AFMT_GENERIC5_IMMEDIATE_UPDATE, mask_sh),\ 290 + SE_SF(DIG0_AFMT_VBI_PACKET_CONTROL1, AFMT_GENERIC6_IMMEDIATE_UPDATE, mask_sh),\ 291 + SE_SF(DIG0_AFMT_VBI_PACKET_CONTROL1, AFMT_GENERIC7_IMMEDIATE_UPDATE, mask_sh),\ 285 292 SE_SF(DIG0_AFMT_VBI_PACKET_CONTROL1, AFMT_GENERIC5_FRAME_UPDATE, mask_sh),\ 286 293 SE_SF(DIG0_AFMT_VBI_PACKET_CONTROL1, AFMT_GENERIC6_FRAME_UPDATE, mask_sh),\ 287 294 SE_SF(DIG0_AFMT_VBI_PACKET_CONTROL1, AFMT_GENERIC7_FRAME_UPDATE, mask_sh),\ ··· 352 345 type AFMT_GENERIC2_FRAME_UPDATE;\ 353 346 type AFMT_GENERIC3_FRAME_UPDATE;\ 354 347 type AFMT_GENERIC4_FRAME_UPDATE;\ 348 + type AFMT_GENERIC0_IMMEDIATE_UPDATE;\ 349 + type AFMT_GENERIC1_IMMEDIATE_UPDATE;\ 350 + type AFMT_GENERIC2_IMMEDIATE_UPDATE;\ 351 + type AFMT_GENERIC3_IMMEDIATE_UPDATE;\ 355 352 type AFMT_GENERIC4_IMMEDIATE_UPDATE;\ 353 + type AFMT_GENERIC5_IMMEDIATE_UPDATE;\ 354 + type AFMT_GENERIC6_IMMEDIATE_UPDATE;\ 355 + type AFMT_GENERIC7_IMMEDIATE_UPDATE;\ 356 356 type AFMT_GENERIC5_FRAME_UPDATE;\ 357 357 type AFMT_GENERIC6_FRAME_UPDATE;\ 358 358 type AFMT_GENERIC7_FRAME_UPDATE;\