diff options
Diffstat (limited to 'meta-amd-bsp/recipes-kernel/linux/linux-yocto-4.19.8/3051-drm-amd-display-use-encoder-s-engine-id-to-find-matc.patch')
-rw-r--r-- | meta-amd-bsp/recipes-kernel/linux/linux-yocto-4.19.8/3051-drm-amd-display-use-encoder-s-engine-id-to-find-matc.patch | 53 |
1 files changed, 53 insertions, 0 deletions
diff --git a/meta-amd-bsp/recipes-kernel/linux/linux-yocto-4.19.8/3051-drm-amd-display-use-encoder-s-engine-id-to-find-matc.patch b/meta-amd-bsp/recipes-kernel/linux/linux-yocto-4.19.8/3051-drm-amd-display-use-encoder-s-engine-id-to-find-matc.patch new file mode 100644 index 00000000..a991332f --- /dev/null +++ b/meta-amd-bsp/recipes-kernel/linux/linux-yocto-4.19.8/3051-drm-amd-display-use-encoder-s-engine-id-to-find-matc.patch @@ -0,0 +1,53 @@ +From 3393bebc0dc28f5ac9faa381b4a756ad96ac412e Mon Sep 17 00:00:00 2001 +From: Tai Man <taiman.wong@amd.com> +Date: Fri, 7 Jun 2019 17:32:27 -0400 +Subject: [PATCH 3051/4256] drm/amd/display: use encoder's engine id to find + matched free audio device + +[Why] +On some platforms, the encoder id 3 is not populated. So the encoders +are not stored in right order as index (id: 0, 1, 2, 4, 5) at pool. This +would cause encoders id 4 & id 5 to fail when finding corresponding +audio device, defaulting to the first available audio device. As result, +we cannot stream audio into two DP ports with encoders id 4 & id 5. + +[How] +It need to create enough audio device objects (0 - 5) to perform matching. +Then use encoder engine id to find matched audio device. + +Signed-off-by: Tai Man <taiman.wong@amd.com> +Reviewed-by: Charlene Liu <Charlene.Liu@amd.com> +Acked-by: Leo Li <sunpeng.li@amd.com> +--- + drivers/gpu/drm/amd/display/dc/core/dc_resource.c | 8 +++++++- + 1 file changed, 7 insertions(+), 1 deletion(-) + +diff --git a/drivers/gpu/drm/amd/display/dc/core/dc_resource.c b/drivers/gpu/drm/amd/display/dc/core/dc_resource.c +index 5b85139fb3ce..5e7b8b2dd178 100644 +--- a/drivers/gpu/drm/amd/display/dc/core/dc_resource.c ++++ b/drivers/gpu/drm/amd/display/dc/core/dc_resource.c +@@ -265,7 +265,7 @@ bool resource_construct( + * PORT_CONNECTIVITY == 1 (as instructed by HW team). + */ + update_num_audio(&straps, &num_audio, &pool->audio_support); +- for (i = 0; i < pool->pipe_count && i < num_audio; i++) { ++ for (i = 0; i < caps->num_audio; i++) { + struct audio *aud = create_funcs->create_audio(ctx, i); + + if (aud == NULL) { +@@ -1676,6 +1676,12 @@ static struct audio *find_first_free_audio( + return pool->audios[i]; + } + } ++ ++ /* use engine id to find free audio */ ++ if ((id < pool->audio_count) && (res_ctx->is_audio_acquired[id] == false)) { ++ return pool->audios[id]; ++ } ++ + /*not found the matching one, first come first serve*/ + for (i = 0; i < pool->audio_count; i++) { + if (res_ctx->is_audio_acquired[i] == false) { +-- +2.17.1 + |