Received: by 2002:a05:6a10:206:0:0:0:0 with SMTP id 6csp477372pxj; Tue, 18 May 2021 07:36:17 -0700 (PDT) X-Google-Smtp-Source: ABdhPJxOIRxgtNXKyL1IIS2BcAjuGi7cFW7oomKVYUU0KI7E1ubfbzUchYp8Io0fqdIoueJSD6U6 X-Received: by 2002:a17:906:ca55:: with SMTP id jx21mr4488437ejb.161.1621348577031; Tue, 18 May 2021 07:36:17 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1621348577; cv=none; d=google.com; s=arc-20160816; b=ghiU9xEQqodLnrEA/i0W38r7s6Uc2ErK8/DfSPamo+zB0W84m9SrKYMt/JLt0trunK Cb6AXiapdnCegwxKqUVRZU4OsDZxa0mBMwUc3E79wn29bIk3KaYsYY64wGxdIHj1kyRB XOQdfAiePUyd/7bn6HzPa5q4TSIfsoGlCVKr3WWe2alaKtEeB4EzE6nRubVr1zaDvqHc BoseHm3u31QvFkDdrG2uwENjA9uxQl5mmN1ZDifmxZJJWdfFq9I5jhZeZWy9+235qq44 lGshybcfmPaU9vx32ebPmI33kanOvwcmJonCUTkOvhEaHmbeLsnmdvGPKx8jcY6PhKL2 XZsA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:content-transfer-encoding:mime-version :user-agent:references:in-reply-to:message-id:date:subject:cc:to :from:dkim-signature; bh=BSXifGOXtcemcLXIb1x14AtU3RPhFO2InsFXpYcZHuc=; b=EAKSsimHJ6Y7PDvVSr+bBY6zCjJ1qt2232YD7uxh62TPzcL49+1vvWyq+lWg6RKpH1 VG7asEt84Y4/y70W6GySHNKLonFKltEPsVGRNP+NA1W7Uy+Ant+zDApWbeh6B+uhs1jf 6inxhPaqrnN9raSw4b+8iOXKI1BG9vn7Hg34fNVElIT+UjkHjlH/0RGMKE622qNjYzGV 9QsiOIZOdGHj2mmZNWt6SiLwwcquHy6IC2EBAgr6t8fKkAnPw6D1TbL1LSDv+HYStr+k 77XQ3ZCi9DHcApkHklQtlRWoQdQ7GGfWodUMb1shA51Klvt42CtOKcImCkaZH9DLDqSV VpwQ== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@linuxfoundation.org header.s=korg header.b=UmKla9ZV; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=linuxfoundation.org Return-Path: Received: from vger.kernel.org (vger.kernel.org. [23.128.96.18]) by mx.google.com with ESMTP id j13si2401112edw.558.2021.05.18.07.35.29; Tue, 18 May 2021 07:36:17 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) client-ip=23.128.96.18; Authentication-Results: mx.google.com; dkim=pass header.i=@linuxfoundation.org header.s=korg header.b=UmKla9ZV; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=linuxfoundation.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1344756AbhEQPph (ORCPT + 99 others); Mon, 17 May 2021 11:45:37 -0400 Received: from mail.kernel.org ([198.145.29.99]:58256 "EHLO mail.kernel.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S245564AbhEQP36 (ORCPT ); Mon, 17 May 2021 11:29:58 -0400 Received: by mail.kernel.org (Postfix) with ESMTPSA id 63F4961CB3; Mon, 17 May 2021 14:37:42 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=linuxfoundation.org; s=korg; t=1621262262; bh=iy9Yw7ThZLTHCMO/gNB5syOPKAPLxs3AGIaSGrNZ14U=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=UmKla9ZV3HWejzMFM+lj6axRWPDiNPl7I6q6X+BfLzgnJXjJ42/pztuF/3zUutuAL I/hghFYmn0b76sQDSi7uaYnMOmDbkZnRQcRtw6TVocXXfdEcS1OiT9PlIDx4FkQhs7 FHovQpasqQ358yijpqJd0xei2YLiF2wunLJ8uuPI= From: Greg Kroah-Hartman To: linux-kernel@vger.kernel.org Cc: Greg Kroah-Hartman , stable@vger.kernel.org, Kuogee Hsieh , Stephen Boyd , Rob Clark , Sasha Levin Subject: [PATCH 5.11 252/329] drm/msm/dp: initialize audio_comp when audio starts Date: Mon, 17 May 2021 16:02:43 +0200 Message-Id: <20210517140310.634571843@linuxfoundation.org> X-Mailer: git-send-email 2.31.1 In-Reply-To: <20210517140302.043055203@linuxfoundation.org> References: <20210517140302.043055203@linuxfoundation.org> User-Agent: quilt/0.66 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org From: Kuogee Hsieh [ Upstream commit f2f46b878777e0d3f885c7ddad48f477b4dea247 ] Initialize audio_comp when audio starts and wait for audio_comp at dp_display_disable(). This will take care of both dongle unplugged and display off (suspend) cases. Changes in v2: -- add dp_display_signal_audio_start() Changes in v3: -- restore dp_display_handle_plugged_change() at dp_hpd_unplug_handle(). Changes in v4: -- none Signed-off-by: Kuogee Hsieh Reviewed-by: Stephen Boyd Tested-by: Stephen Boyd Fixes: c703d5789590 ("drm/msm/dp: trigger unplug event in msm_dp_display_disable") Link: https://lore.kernel.org/r/1619048258-8717-3-git-send-email-khsieh@codeaurora.org Signed-off-by: Rob Clark Signed-off-by: Sasha Levin --- drivers/gpu/drm/msm/dp/dp_audio.c | 1 + drivers/gpu/drm/msm/dp/dp_display.c | 11 +++++++++-- drivers/gpu/drm/msm/dp/dp_display.h | 1 + 3 files changed, 11 insertions(+), 2 deletions(-) diff --git a/drivers/gpu/drm/msm/dp/dp_audio.c b/drivers/gpu/drm/msm/dp/dp_audio.c index 82a8673ab8da..d7e4a39a904e 100644 --- a/drivers/gpu/drm/msm/dp/dp_audio.c +++ b/drivers/gpu/drm/msm/dp/dp_audio.c @@ -527,6 +527,7 @@ int dp_audio_hw_params(struct device *dev, dp_audio_setup_acr(audio); dp_audio_safe_to_exit_level(audio); dp_audio_enable(audio, true); + dp_display_signal_audio_start(dp_display); dp_display->audio_enabled = true; end: diff --git a/drivers/gpu/drm/msm/dp/dp_display.c b/drivers/gpu/drm/msm/dp/dp_display.c index 81f6794a2510..e0cf26935a35 100644 --- a/drivers/gpu/drm/msm/dp/dp_display.c +++ b/drivers/gpu/drm/msm/dp/dp_display.c @@ -178,6 +178,15 @@ static int dp_del_event(struct dp_display_private *dp_priv, u32 event) return 0; } +void dp_display_signal_audio_start(struct msm_dp *dp_display) +{ + struct dp_display_private *dp; + + dp = container_of(dp_display, struct dp_display_private, dp_display); + + reinit_completion(&dp->audio_comp); +} + void dp_display_signal_audio_complete(struct msm_dp *dp_display) { struct dp_display_private *dp; @@ -651,7 +660,6 @@ static int dp_hpd_unplug_handle(struct dp_display_private *dp, u32 data) dp_add_event(dp, EV_DISCONNECT_PENDING_TIMEOUT, 0, DP_TIMEOUT_5_SECOND); /* signal the disconnect event early to ensure proper teardown */ - reinit_completion(&dp->audio_comp); dp_display_handle_plugged_change(g_dp_display, false); dp_catalog_hpd_config_intr(dp->catalog, DP_DP_HPD_PLUG_INT_MASK | @@ -891,7 +899,6 @@ static int dp_display_disable(struct dp_display_private *dp, u32 data) /* wait only if audio was enabled */ if (dp_display->audio_enabled) { /* signal the disconnect event */ - reinit_completion(&dp->audio_comp); dp_display_handle_plugged_change(dp_display, false); if (!wait_for_completion_timeout(&dp->audio_comp, HZ * 5)) diff --git a/drivers/gpu/drm/msm/dp/dp_display.h b/drivers/gpu/drm/msm/dp/dp_display.h index 6092ba1ed85e..5173c89eedf7 100644 --- a/drivers/gpu/drm/msm/dp/dp_display.h +++ b/drivers/gpu/drm/msm/dp/dp_display.h @@ -34,6 +34,7 @@ int dp_display_get_modes(struct msm_dp *dp_display, int dp_display_request_irq(struct msm_dp *dp_display); bool dp_display_check_video_test(struct msm_dp *dp_display); int dp_display_get_test_bpp(struct msm_dp *dp_display); +void dp_display_signal_audio_start(struct msm_dp *dp_display); void dp_display_signal_audio_complete(struct msm_dp *dp_display); #endif /* _DP_DISPLAY_H_ */ -- 2.30.2