Received: by 10.223.176.46 with SMTP id f43csp4438713wra; Tue, 23 Jan 2018 09:24:31 -0800 (PST) X-Google-Smtp-Source: AH8x224NREXNIB6rRe5n5Gau1aSeEX15wjzB9GXm7epKrfRKhqPEIQb8irnhXZKVakNPiLpvwe/P X-Received: by 10.157.32.225 with SMTP id x88mr7610276ota.121.1516728271074; Tue, 23 Jan 2018 09:24:31 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1516728271; cv=none; d=google.com; s=arc-20160816; b=hjwToYZKWSe+UodTEDkoiJI4RNvma2ISg1o7OGricFcPF5A0TUSDCtdFZg9dh7HGJD v0qfdhveFYTvjAOhJ85T9XnUWlDZsx72q5WWR67jI64WhYsTz/Lu6gnry0y/N7WCImFE MVWGLZgm7WfXYVOu9Du0Ago5HqrsE8s9FvlEg86n3H8MNA/C5YUjGlTfXY6M1DLLx5MI uhleLTWwXECDeD3JZN8A/gqmC6xZMCPTAFUWoWORDA0vC0W8YF2tceYvtI4pGbQosNfk D7lrFi/xE9E8uB/2pxoGTfvPGWGJZUuvAHRlov+dpZ3RVoYKnC/IKUTsVOXgcKu821Et kn5w== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:references:in-reply-to:message-id:date :subject:to:from:arc-authentication-results; bh=BkbbzPENbUeYR7WLn2NRm4a+bx8v89JS4p4g1MAoB2E=; b=YUxb3n/vtXHwY+BV48jIaDnyd3Dj9JLxK6zf/hQt3/JmmZZPx5NWepZ3GLfxaqk72r 6c7m0ht45jOa7i4eGVSULP/OvUgMVV+TPeBb/5O9RmcYqi8CyE3pe5EazlroEfab1cD+ fzTaMFEGQTvb4jusOxQRH8k+FtOYdZG0WBjiZNljhSs+21C5j1bLPIFNEBFg16Ajttrk sh7Ua+6CYniCL1C1/OIfX5FGdC1gfnMq+WAv03sWhRJvF61FWSLAU4JSdDeSyV7q6VvL FRVnQ9lnNkzsEiMDFwbdYuI+M2X2CB9zyazhIBF3JaNx1g+v6zy0MbZQvo0BsYnXrqg9 NbPw== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id n10si5987127ioc.62.2018.01.23.09.24.17; Tue, 23 Jan 2018 09:24:31 -0800 (PST) Received-SPF: pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) client-ip=209.132.180.67; Authentication-Results: mx.google.com; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1751928AbeAWRWj (ORCPT + 99 others); Tue, 23 Jan 2018 12:22:39 -0500 Received: from mga11.intel.com ([192.55.52.93]:28822 "EHLO mga11.intel.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1751884AbeAWRWh (ORCPT ); Tue, 23 Jan 2018 12:22:37 -0500 X-Amp-Result: SKIPPED(no attachment in message) X-Amp-File-Uploaded: False Received: from orsmga007.jf.intel.com ([10.7.209.58]) by fmsmga102.fm.intel.com with ESMTP/TLS/DHE-RSA-AES256-GCM-SHA384; 23 Jan 2018 09:22:37 -0800 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.46,402,1511856000"; d="scan'208";a="12015006" Received: from intel-h97m-d3h.iind.intel.com ([10.66.247.169]) by orsmga007.jf.intel.com with ESMTP; 23 Jan 2018 09:22:32 -0800 From: abhijeet.kumar@intel.com To: Jaroslav Kysela , Takashi Iwai , Liam Girdwood , Mark Brown , Abhijeet Kumar , Takashi Sakamoto , Wang YanQing , Bhumika Goyal , Jeeja KP , Vinod Koul , "Subhransu S. Prusty" , Guneshwor Singh , alsa-devel@alsa-project.org, linux-kernel@vger.kernel.org Subject: [PATCH 3/3] ASoC: hdac_hdmi : Ensuring proper setting of output widget power state Date: Tue, 23 Jan 2018 23:00:53 +0530 Message-Id: <1516728657-21522-3-git-send-email-abhijeet.kumar@intel.com> X-Mailer: git-send-email 1.9.1 In-Reply-To: <1516728657-21522-1-git-send-email-abhijeet.kumar@intel.com> References: <1515670468-9198-1-git-send-email-abhijeet.kumar@intel.com> <1516728657-21522-1-git-send-email-abhijeet.kumar@intel.com> Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org From: Abhijeet Kumar In usecases like hot plug-unplug DP panel or modeset during a playback, sometimes we observe no audio after codec resets. During no audio condition, we have noticed that the power state of the pin or the connector is D3. Optimizing the way we set the power mitigates the issue. With this changes the verb is sent to set the power state and waits until actual state reaches target state. Thus ensuring power state is set. Signed-off-by: Abhijeet Kumar --- sound/soc/codecs/hdac_hdmi.c | 16 +++++++++++++--- 1 file changed, 13 insertions(+), 3 deletions(-) diff --git a/sound/soc/codecs/hdac_hdmi.c b/sound/soc/codecs/hdac_hdmi.c index f3b4f4dfae6a..4dc9b9b71db9 100644 --- a/sound/soc/codecs/hdac_hdmi.c +++ b/sound/soc/codecs/hdac_hdmi.c @@ -716,10 +716,20 @@ static struct hdac_hdmi_pcm *hdac_hdmi_get_pcm(struct hdac_ext_device *edev, static void hdac_hdmi_set_power_state(struct hdac_ext_device *edev, hda_nid_t nid, unsigned int pwr_state) { + int count; + unsigned int state; if (get_wcaps(&edev->hdac, nid) & AC_WCAP_POWER) { - if (!snd_hdac_check_power_state(&edev->hdac, nid, pwr_state)) - snd_hdac_codec_write(&edev->hdac, nid, 0, - AC_VERB_SET_POWER_STATE, pwr_state); + if (!snd_hdac_check_power_state(&edev->hdac, nid, pwr_state)) { + for (count = 0; count < 10; count++) { + snd_hdac_codec_read(&edev->hdac, nid, 0, + AC_VERB_SET_POWER_STATE, + pwr_state); + state = snd_hdac_sync_power_state(&edev->hdac, + nid, pwr_state); + if (!(state & AC_PWRST_ERROR)) + break; + } + } } } -- 1.9.1