lkml.org 
[lkml]   [2019]   [Aug]   [2]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH AUTOSEL 5.2 20/76] drm/amd/display: use encoder's engine id to find matched free audio device
    Date
    From: Tai Man <taiman.wong@amd.com>

    [ Upstream commit 74eda776d7a4e69ec7aa1ce30a87636f14220fbb ]

    [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>
    Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>
    ---
    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 eac7186e4f084..ad82906b99db9 100644
    --- a/drivers/gpu/drm/amd/display/dc/core/dc_resource.c
    +++ b/drivers/gpu/drm/amd/display/dc/core/dc_resource.c
    @@ -254,7 +254,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) {
    @@ -1702,6 +1702,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.20.1
    \
     
     \ /
      Last update: 2019-08-02 15:21    [W:2.190 / U:0.040 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site