aboutsummaryrefslogtreecommitdiffstats
path: root/common/recipes-kernel/linux/files/0993-drm-amd-dal-Fix-Fiji-audio-lag-issue.patch
diff options
context:
space:
mode:
Diffstat (limited to 'common/recipes-kernel/linux/files/0993-drm-amd-dal-Fix-Fiji-audio-lag-issue.patch')
-rw-r--r--common/recipes-kernel/linux/files/0993-drm-amd-dal-Fix-Fiji-audio-lag-issue.patch85
1 files changed, 85 insertions, 0 deletions
diff --git a/common/recipes-kernel/linux/files/0993-drm-amd-dal-Fix-Fiji-audio-lag-issue.patch b/common/recipes-kernel/linux/files/0993-drm-amd-dal-Fix-Fiji-audio-lag-issue.patch
new file mode 100644
index 00000000..5d89c722
--- /dev/null
+++ b/common/recipes-kernel/linux/files/0993-drm-amd-dal-Fix-Fiji-audio-lag-issue.patch
@@ -0,0 +1,85 @@
+From bfc9ee223b7426fa3fd81da89f445aa35a13069f Mon Sep 17 00:00:00 2001
+From: Yongqiang Sun <yongqiang.sun@amd.com>
+Date: Wed, 30 Mar 2016 11:53:00 -0400
+Subject: [PATCH 0993/1110] drm/amd/dal: Fix Fiji audio lag issue.
+
+Issue:
+Play audio when DP and HDMI connected, if unplug HDMI, audio lag happened
+on DP monitor.
+
+Root cause:
+In case of DP and HDMI connected or HDMI only, DCCG_AUDIO_DTO_SEL
+is set to either dto0 or dto1, audio should work fine.
+In case of DP connected only, DCCG_AUDIO_DTO_SEL should be dto1.
+When HDMI unplugged, due to mode set optimization,
+setup audio wall dto is bypassed, and DCCG_AUDIO_DTO_SEL is dto0,
+audio lag happened.
+
+Solution:
+Not optimized audio wall dto setup. When mode set, iterate pipe_ctx,
+find first available pipe with audio, setup audio wall DTO per topology
+instead of per pipe.
+
+Signed-off-by: Yongqiang Sun <yongqiang.sun@amd.com>
+Acked-by: Harry Wentland <harry.wentland@amd.com>
+Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
+---
+ .../drm/amd/dal/dc/dce110/dce110_hw_sequencer.c | 35 +++++++++++++++++-----
+ 1 file changed, 27 insertions(+), 8 deletions(-)
+
+diff --git a/drivers/gpu/drm/amd/dal/dc/dce110/dce110_hw_sequencer.c b/drivers/gpu/drm/amd/dal/dc/dce110/dce110_hw_sequencer.c
+index 0673a1b..9ca604d 100644
+--- a/drivers/gpu/drm/amd/dal/dc/dce110/dce110_hw_sequencer.c
++++ b/drivers/gpu/drm/amd/dal/dc/dce110/dce110_hw_sequencer.c
+@@ -867,14 +867,6 @@ static enum dc_status apply_single_controller_ctx_to_hw(
+ }
+ }
+
+- /* Setup audio rate clock source */
+- if (pipe_ctx->audio != NULL)
+- dal_audio_setup_audio_wall_dto(
+- pipe_ctx->audio,
+- pipe_ctx->signal,
+- &pipe_ctx->audio_output.crtc_info,
+- &pipe_ctx->audio_output.pll_info);
+-
+ /* program blank color */
+ color_space = get_output_color_space(&stream->public.timing);
+ pipe_ctx->tg->funcs->set_blank_color(
+@@ -1347,6 +1339,33 @@ static enum dc_status apply_ctx_to_hw(
+ if (DC_OK != status)
+ return status;
+ }
++
++ /* Setup audio rate clock source */
++ /* Issue:
++ * Audio lag happened on DP monitor when unplug a HDMI monitor
++ *
++ * Cause:
++ * In case of DP and HDMI connected or HDMI only, DCCG_AUDIO_DTO_SEL
++ * is set to either dto0 or dto1, audio should work fine.
++ * In case of DP connected only, DCCG_AUDIO_DTO_SEL should be dto1,
++ * set to dto0 will cause audio lag.
++ *
++ * Solution:
++ * Not optimized audio wall dto setup. When mode set, iterate pipe_ctx,
++ * find first available pipe with audio, setup audio wall DTO per topology
++ * instead of per pipe.
++ */
++ for (i = 0; i < MAX_PIPES; i++) {
++ if (context->res_ctx.pipe_ctx[i].audio != NULL) {
++ dal_audio_setup_audio_wall_dto(
++ context->res_ctx.pipe_ctx[i].audio,
++ context->res_ctx.pipe_ctx[i].signal,
++ &context->res_ctx.pipe_ctx[i].audio_output.crtc_info,
++ &context->res_ctx.pipe_ctx[i].audio_output.pll_info);
++ break;
++ }
++ }
++
+ dc->hwss.set_displaymarks(dc, context);
+
+ update_bios_scratch_critical_state(context->res_ctx.pool.adapter_srv,
+--
+2.7.4
+