]> git.ipfire.org Git - thirdparty/kernel/linux.git/commitdiff
drm/amd/display: Fix DP no audio issue
authorCharlene Liu <Charlene.Liu@amd.com>
Sat, 29 Nov 2025 00:38:31 +0000 (19:38 -0500)
committerAlex Deucher <alexander.deucher@amd.com>
Tue, 16 Dec 2025 18:24:53 +0000 (13:24 -0500)
[why]
need to enable APG_CLOCK_ENABLE enable first
also need to wake up az from D3 before access az block

Reviewed-by: Swapnil Patel <swapnil.patel@amd.com>
Signed-off-by: Charlene Liu <Charlene.Liu@amd.com>
Signed-off-by: Chenyu Chen <chen-yu.chen@amd.com>
Tested-by: Daniel Wheeler <daniel.wheeler@amd.com>
Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
drivers/gpu/drm/amd/display/dc/hwss/dce110/dce110_hwseq.c
drivers/gpu/drm/amd/display/dc/hwss/dcn401/dcn401_hwseq.c

index 7e736f2ee70106f33a7e55f047306161c995bdd6..ebdb885826aaa05878c04e4a6431b6dcbf6a55e5 100644 (file)
@@ -1098,13 +1098,13 @@ void dce110_enable_audio_stream(struct pipe_ctx *pipe_ctx)
                        if (dc->current_state->res_ctx.pipe_ctx[i].stream_res.audio != NULL)
                                num_audio++;
                }
+               if (num_audio >= 1 && clk_mgr->funcs->enable_pme_wa) {
+                       /*wake AZ from D3 first before access az endpoint*/
+                       clk_mgr->funcs->enable_pme_wa(clk_mgr);
+               }
 
                pipe_ctx->stream_res.audio->funcs->az_enable(pipe_ctx->stream_res.audio);
 
-               if (num_audio >= 1 && clk_mgr->funcs->enable_pme_wa)
-                       /*this is the first audio. apply the PME w/a in order to wake AZ from D3*/
-                       clk_mgr->funcs->enable_pme_wa(clk_mgr);
-
                link_hwss->enable_audio_packet(pipe_ctx);
 
                if (pipe_ctx->stream_res.audio)
index 3e6797653223ec9d1443f591df812bbce104c567..63cd13d4617a2caaa85f970f6d969dd8f2a407c6 100644 (file)
@@ -297,7 +297,6 @@ void dcn401_init_hw(struct dc *dc)
                        }
                }
        }
-
        for (i = 0; i < res_pool->audio_count; i++) {
                struct audio *audio = res_pool->audios[i];