Received: by 10.223.185.116 with SMTP id b49csp2255161wrg; Thu, 15 Feb 2018 08:50:27 -0800 (PST) X-Google-Smtp-Source: AH8x2248g+PgUwxJ9Orp1/bBqbaBqflH832A0eop8biFyGZ3u0QiRwZmVvw3E5ezRRT8M5RuKKTM X-Received: by 10.98.22.65 with SMTP id 62mr3180856pfw.211.1518713426902; Thu, 15 Feb 2018 08:50:26 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1518713426; cv=none; d=google.com; s=arc-20160816; b=z47AR7HkLBr6okQw6fUIIFYGonQBsqQJwpxOflV2y3mXR+uAv2pfhnRlwvAfBH0Dho CzIWW9k8QCOJjZzUgV408QmX2xSRLEozrVYk1iYxY9Dr8X6wpneM4gVO1xmNn58j0CqY KuifqGW4SLLo9CzsDtMGajkIZzV4UpBuIOdTM45Z06N1aQAY6bUMXHTuRyoDChgzzgzX T82qVqt9Ez4Z2pFwVy/kKwl/lvBBdqtn/RBhVgEgZTsq1BggRl9IaW2q5enePkT+86Gz Ik8s+SbAD+oKK9NQ89LKdPJMH3iAQ3WZTpScgXRLX1tPW7gBx+duIKuIQFBQc8o0oZHE 6Bhw== 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:cc:to:from:arc-authentication-results; bh=FQ9kzkuiGmtCN0zNBhhIdgA/Z4rqFjAlFZGdWVk29ZM=; b=z67bDBWVPlejxGLZZfF6Tgqz7vUHOknZcJXtxBFYCqeynPz0rZ8W8euv68YuirN4/w tlEaatrMzUMHh+9+aCk1qaQfOK3SYsZMFIz6ZHXySH6+s53IgnNvN8ZdvXI4y1T9qNXv uLSB2c4XCgFGkP3j8iDXIbTmgQKfjnYFKcjvMUF0oeqrwNwYPig3Doha4xLxpb3SushL ytm6O4huqlHT+AoaBgf7or2QbnVs9UKROeUBLGodxWP3CXr2MX/WdOZwm2A2tmTtX4hQ 7r/ecy3QIApQhooZV63QaG4HiUkJcIB+DQgtk60ti9t1s2h9DT1w3uepRqP6u0iLrQgq BRBg== 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 d21si28101pgv.365.2018.02.15.08.50.11; Thu, 15 Feb 2018 08:50:26 -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 S1426500AbeBOQtG (ORCPT + 99 others); Thu, 15 Feb 2018 11:49:06 -0500 Received: from mga03.intel.com ([134.134.136.65]:12998 "EHLO mga03.intel.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1423789AbeBOQsq (ORCPT ); Thu, 15 Feb 2018 11:48:46 -0500 X-Amp-Result: SKIPPED(no attachment in message) X-Amp-File-Uploaded: False Received: from orsmga004.jf.intel.com ([10.7.209.38]) by orsmga103.jf.intel.com with ESMTP/TLS/DHE-RSA-AES256-GCM-SHA384; 15 Feb 2018 08:48:45 -0800 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.46,517,1511856000"; d="scan'208";a="175557273" Received: from intel-h97m-d3h.iind.intel.com ([10.66.247.169]) by orsmga004.jf.intel.com with ESMTP; 15 Feb 2018 08:48:41 -0800 From: abhijeet.kumar@intel.com To: Liam Girdwood , Mark Brown , Jaroslav Kysela , Takashi Iwai , Vinod Koul , Jeeja KP , Guneshwor Singh , "Subhransu S. Prusty" , "Ughreja, Rakesh A" , Puneeth Prabhu , alsa-devel@alsa-project.org, linux-kernel@vger.kernel.org Cc: abhijeet.kumar@intel.com, fengguang.wu@intel.com Subject: [PATCH v2] ASoC: hdac_hdmi : Ensuring proper setting of output widget power state Date: Thu, 15 Feb 2018 22:26:50 +0530 Message-Id: <1518713812-17078-1-git-send-email-abhijeet.kumar@intel.com> X-Mailer: git-send-email 1.9.1 In-Reply-To: <1518683739-4448-1-git-send-email-abhijeet.kumar@intel.com> References: <1518683739-4448-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 | 18 +++++++++++++++--- 1 file changed, 15 insertions(+), 3 deletions(-) diff --git a/sound/soc/codecs/hdac_hdmi.c b/sound/soc/codecs/hdac_hdmi.c index dba6f4c5074a..97fcd55205e6 100644 --- a/sound/soc/codecs/hdac_hdmi.c +++ b/sound/soc/codecs/hdac_hdmi.c @@ -718,10 +718,22 @@ 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->hdev, nid) & AC_WCAP_POWER) { - if (!snd_hdac_check_power_state(&edev->hdev, nid, pwr_state)) - snd_hdac_codec_write(&edev->hdev, nid, 0, - AC_VERB_SET_POWER_STATE, pwr_state); + if (!snd_hdac_check_power_state(&edev->hdev, nid, pwr_state)) { + for (count = 0; count < 10; count++) { + snd_hdac_codec_read(&edev->hdev, nid, 0, + AC_VERB_SET_POWER_STATE, + pwr_state); + state = snd_hdac_sync_power_state(&edev->hdev, + nid, pwr_state); + if (!(state & AC_PWRST_ERROR)) + break; + } + } + } } -- 1.9.1