Revert "drm/amd/display: Reduce Stack Usage by moving 'audio_output' into 'stream_res' v4"

This reverts commit 1cf1205ef2 ("drm/amd/display: Reduce Stack Usage by moving 'audio_output' into 'stream_res' v4")

Reason for revert: Causes DP compliance errors

Acked-by: Wayne Lin <Wayne.Lin@amd.com>
Signed-off-by: Martin Leung <Martin.Leung@amd.com>
Signed-off-by: Ray Wu <ray.wu@amd.com>
Tested-by: Daniel Wheeler <daniel.wheeler@amd.com>
Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
This commit is contained in:
Martin Leung 2025-08-06 17:40:55 -04:00 committed by Alex Deucher
parent edae98a2bd
commit c062decc5e
5 changed files with 31 additions and 27 deletions

View File

@ -1601,17 +1601,19 @@ enum dc_status dce110_apply_single_controller_ctx_to_hw(
}
if (pipe_ctx->stream_res.audio != NULL) {
build_audio_output(context, pipe_ctx, &pipe_ctx->stream_res.audio_output);
struct audio_output audio_output = {0};
link_hwss->setup_audio_output(pipe_ctx, &pipe_ctx->stream_res.audio_output,
build_audio_output(context, pipe_ctx, &audio_output);
link_hwss->setup_audio_output(pipe_ctx, &audio_output,
pipe_ctx->stream_res.audio->inst);
pipe_ctx->stream_res.audio->funcs->az_configure(
pipe_ctx->stream_res.audio,
pipe_ctx->stream->signal,
&pipe_ctx->stream_res.audio_output.crtc_info,
&audio_output.crtc_info,
&pipe_ctx->stream->audio_info,
&pipe_ctx->stream_res.audio_output.dp_link_info);
&audio_output.dp_link_info);
if (dc->config.disable_hbr_audio_dp2)
if (pipe_ctx->stream_res.audio->funcs->az_disable_hbr_audio &&
@ -2385,7 +2387,9 @@ static void dce110_setup_audio_dto(
if (pipe_ctx->stream->signal != SIGNAL_TYPE_HDMI_TYPE_A)
continue;
if (pipe_ctx->stream_res.audio != NULL) {
build_audio_output(context, pipe_ctx, &pipe_ctx->stream_res.audio_output);
struct audio_output audio_output;
build_audio_output(context, pipe_ctx, &audio_output);
if (dc->res_pool->dccg && dc->res_pool->dccg->funcs->set_audio_dtbclk_dto) {
struct dtbclk_dto_params dto_params = {0};
@ -2396,14 +2400,14 @@ static void dce110_setup_audio_dto(
pipe_ctx->stream_res.audio->funcs->wall_dto_setup(
pipe_ctx->stream_res.audio,
pipe_ctx->stream->signal,
&pipe_ctx->stream_res.audio_output.crtc_info,
&pipe_ctx->stream_res.audio_output.pll_info);
&audio_output.crtc_info,
&audio_output.pll_info);
} else
pipe_ctx->stream_res.audio->funcs->wall_dto_setup(
pipe_ctx->stream_res.audio,
pipe_ctx->stream->signal,
&pipe_ctx->stream_res.audio_output.crtc_info,
&pipe_ctx->stream_res.audio_output.pll_info);
&audio_output.crtc_info,
&audio_output.pll_info);
break;
}
}
@ -2423,15 +2427,15 @@ static void dce110_setup_audio_dto(
continue;
if (pipe_ctx->stream_res.audio != NULL) {
build_audio_output(context,
pipe_ctx,
&pipe_ctx->stream_res.audio_output);
struct audio_output audio_output = {0};
build_audio_output(context, pipe_ctx, &audio_output);
pipe_ctx->stream_res.audio->funcs->wall_dto_setup(
pipe_ctx->stream_res.audio,
pipe_ctx->stream->signal,
&pipe_ctx->stream_res.audio_output.crtc_info,
&pipe_ctx->stream_res.audio_output.pll_info);
&audio_output.crtc_info,
&audio_output.pll_info);
break;
}
}

View File

@ -228,7 +228,8 @@ struct resource_funcs {
enum dc_status (*update_dc_state_for_encoder_switch)(struct dc_link *link,
struct dc_link_settings *link_setting,
uint8_t pipe_count,
struct pipe_ctx *pipes);
struct pipe_ctx *pipes,
struct audio_output *audio_output);
};
struct audio_support{
@ -360,8 +361,6 @@ struct stream_resource {
uint8_t gsl_group;
struct test_pattern_params test_pattern_params;
struct audio_output audio_output;
};
struct plane_resource {

View File

@ -75,7 +75,7 @@ static void dp_retrain_link_dp_test(struct dc_link *link,
bool is_hpo_acquired;
uint8_t count;
int i;
struct audio_output audio_output[MAX_PIPES];
struct dc_stream_state *streams_on_link[MAX_PIPES];
int num_streams_on_link = 0;
@ -101,7 +101,7 @@ static void dp_retrain_link_dp_test(struct dc_link *link,
if (needs_divider_update && link->dc->res_pool->funcs->update_dc_state_for_encoder_switch) {
link->dc->res_pool->funcs->update_dc_state_for_encoder_switch(link,
link_setting, count,
*pipes);
*pipes, &audio_output[0]);
for (i = 0; i < count; i++) {
pipes[i]->clock_source->funcs->program_pix_clk(
pipes[i]->clock_source,
@ -113,16 +113,15 @@ static void dp_retrain_link_dp_test(struct dc_link *link,
const struct link_hwss *link_hwss = get_link_hwss(
link, &pipes[i]->link_res);
link_hwss->setup_audio_output(pipes[i],
&pipes[i]->stream_res.audio_output,
pipes[i]->stream_res.audio->inst);
link_hwss->setup_audio_output(pipes[i], &audio_output[i],
pipes[i]->stream_res.audio->inst);
pipes[i]->stream_res.audio->funcs->az_configure(
pipes[i]->stream_res.audio,
pipes[i]->stream->signal,
&pipes[i]->stream_res.audio_output.crtc_info,
&audio_output[i].crtc_info,
&pipes[i]->stream->audio_info,
&pipes[i]->stream_res.audio_output.dp_link_info);
&audio_output[i].dp_link_info);
if (link->dc->config.disable_hbr_audio_dp2 &&
pipes[i]->stream_res.audio->funcs->az_disable_hbr_audio &&

View File

@ -2239,7 +2239,8 @@ struct resource_pool *dcn31_create_resource_pool(
enum dc_status dcn31_update_dc_state_for_encoder_switch(struct dc_link *link,
struct dc_link_settings *link_setting,
uint8_t pipe_count,
struct pipe_ctx *pipes)
struct pipe_ctx *pipes,
struct audio_output *audio_output)
{
struct dc_state *state = link->dc->current_state;
int i;
@ -2254,7 +2255,7 @@ enum dc_status dcn31_update_dc_state_for_encoder_switch(struct dc_link *link,
// Setup audio
if (pipes[i].stream_res.audio != NULL)
build_audio_output(state, &pipes[i], &pipes[i].stream_res.audio_output);
build_audio_output(state, &pipes[i], &audio_output[i]);
}
#else
/* This DCN requires rate divider updates and audio reprogramming to allow DP1<-->DP2 link rate switching,

View File

@ -69,7 +69,8 @@ unsigned int dcn31_get_det_buffer_size(
enum dc_status dcn31_update_dc_state_for_encoder_switch(struct dc_link *link,
struct dc_link_settings *link_setting,
uint8_t pipe_count,
struct pipe_ctx *pipes);
struct pipe_ctx *pipes,
struct audio_output *audio_output);
/*temp: B0 specific before switch to dcn313 headers*/
#ifndef regPHYPLLF_PIXCLK_RESYNC_CNTL