Skip to content

Commit e4de13d

Browse files
committed
drivers/gpu/drm/amd/display/dc/link/link_dpms.c: Disable FRL on dpms off
1 parent 435360c commit e4de13d

3 files changed

Lines changed: 20 additions & 2 deletions

File tree

drivers/gpu/drm/amd/display/dc/link/link_dpms.c

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2453,6 +2453,9 @@ void link_set_dpms_off(struct pipe_ctx *pipe_ctx)
24532453
}
24542454
}
24552455

2456+
if (dc_is_hdmi_signal(pipe_ctx->stream->signal))
2457+
dc_link_disable_frl(pipe_ctx->stream->link);
2458+
24562459
if (pipe_ctx->stream->signal == SIGNAL_TYPE_DISPLAY_PORT &&
24572460
!dp_is_128b_132b_signal(pipe_ctx)) {
24582461

drivers/gpu/drm/amd/display/dc/link/protocols/link_frl_training.c

Lines changed: 12 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -88,13 +88,13 @@ bool dc_link_perform_frl_training(struct dc_link *link,
8888

8989
/* Write source version = 1 */
9090
write_buffer[0] = 0x01;
91-
frl_write_scdc(link, HDMI_SCDC_SOURCE_VERSION, &write_buffer[0], 1);
91+
frl_write_scdc(link, HDMI_SCDC_SOURCE_VERSION, write_buffer, 1);
9292

9393
retrain:
9494
/* Reset FRL rate */
9595
write_buffer[0] = 0;
9696
write_buffer[1] = 0;
97-
frl_write_scdc(link, 0x30, &write_buffer[0], 2);
97+
frl_write_scdc(link, HDMI_SCDC_CONFIG_0, write_buffer, 2);
9898

9999
/* ------------------------------------------------------------------ */
100100
/* Step 2: Wait for FLT_READY */
@@ -243,3 +243,13 @@ bool dc_link_perform_frl_training(struct dc_link *link,
243243

244244
return false;
245245
}
246+
247+
void dc_link_disable_frl(struct dc_link *link)
248+
{
249+
uint8_t write_buffer[2];
250+
251+
/* Inform the sink not to expect an FRL signal */
252+
write_buffer[0] = 0;
253+
write_buffer[1] = 0;
254+
frl_write_scdc(link, HDMI_SCDC_CONFIG_0, write_buffer, 2);
255+
}

drivers/gpu/drm/amd/display/dc/link/protocols/link_frl_training.h

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -34,4 +34,9 @@ struct link_resource;
3434
bool dc_link_perform_frl_training(struct dc_link *link,
3535
const struct link_resource *link_res);
3636

37+
/*
38+
* Disable FRL mode in the sink. Allows fallback to TMDS.
39+
*/
40+
void dc_link_disable_frl(struct dc_link *link);
41+
3742
#endif /* __LINK_HDMI_FRL_TRAINING_H__ */

0 commit comments

Comments
 (0)