Received: by 2002:a25:31c3:0:0:0:0:0 with SMTP id x186csp821159ybx; Wed, 6 Nov 2019 08:55:28 -0800 (PST) X-Google-Smtp-Source: APXvYqyEavzBJlGsb2RlCwR2SM9yQngEruE8ItWcFJLllZicmbjKe3DrU9YOWtVx3WvI3BNQesCF X-Received: by 2002:a17:906:5786:: with SMTP id k6mr8579828ejq.294.1573059327920; Wed, 06 Nov 2019 08:55:27 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1573059327; cv=none; d=google.com; s=arc-20160816; b=mO9/vZJlfziIGoivI/JbV9P5X60WgYeUKFZqwnxeFrQypRpDhOCPFirazer6StcJty ufu2NWqxYQO1FBB8ojdx0Lk5I+pDEbKCPW9WK3mYFvv3OKrs8r4eU6PACQbyPc8EcSna RP2K4hsNzrR2XQQqQmkoBFr6f/O7pmDQSUkAR3sMejOtCiocCU8vtLwR8kjDHiVV0i52 XclnpNzlMvCMDr48nKMmH5WVJB15woIK5wGj7tyl2rU8ipXkFned8JTicf04UUhlIRE0 lkMnGfFAMh62rqQoBYBnCFpvoxt0V1y4fyOkpcFzNH4opyPR+VDfVkwNSpH3DRgLy7jE SHtA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:content-transfer-encoding :content-language:in-reply-to:mime-version:user-agent:date :message-id:from:references:cc:to:subject; bh=iWzuKlUF2eDTNeAAIha0Uk7GQ09ugHqCBHfHiUBfI98=; b=aEYO7clIYZeZ3zbk60B7ETILjfP/Spof/KxfUBaoL5CCv7yQVJ/QzqEFHlnO7QSFXB MLL9S80k6R9DEpjKdX6WAp2Lj4xF9oN+lx4o/u00dz2GE9EAGo89MZTidtco9mZR/92U PlxUuhYSPBK9zjJkZ4k1ErsQvw6lO27E7VeQNQY006UWfJiOt05oBAN8Hr2RPCl7oEiE jS/Vea7iTUFWJ+Sf1epNvtDoJQAUlmpjcCzI+xp/hJcobCjwwajVf/a5beXYcV9UABOh TyNJxrd9udUy5iGTALV/7wfdlWZ2BYwBwDUeBzwFCSHpljLnnO060iYS6tmmVrONi+eP 9sqw== 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; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=intel.com Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id si4si3393609ejb.156.2019.11.06.08.55.03; Wed, 06 Nov 2019 08:55:27 -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; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=intel.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1732331AbfKFQxB (ORCPT + 99 others); Wed, 6 Nov 2019 11:53:01 -0500 Received: from mga03.intel.com ([134.134.136.65]:52065 "EHLO mga03.intel.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1727824AbfKFQw7 (ORCPT ); Wed, 6 Nov 2019 11:52:59 -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; 06 Nov 2019 08:52:59 -0800 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.68,275,1569308400"; d="scan'208";a="353532513" Received: from pdblomfi-mobl.gar.corp.intel.com (HELO [10.254.107.145]) ([10.254.107.145]) by orsmga004.jf.intel.com with ESMTP; 06 Nov 2019 08:52:58 -0800 Subject: Re: [alsa-devel] [RESEND PATCH v2 7/7] ASoC: amd: Added ACP3x system resume and runtime pm ops To: Ravulapati Vishnu vardhan rao Cc: "moderated list:SOUND - SOC LAYER / DYNAMIC AUDIO POWER MANAGEM..." , Maruthi Srinivas Bayyavarapu , open list , Takashi Iwai , Liam Girdwood , Akshu.Agrawal@amd.com, Mark Brown , djkurtz@google.com, Vijendar Mukunda , Alex Deucher , Colin Ian King , Dan Carpenter References: <1573137364-5592-1-git-send-email-Vishnuvardhanrao.Ravulapati@amd.com> <1573137364-5592-8-git-send-email-Vishnuvardhanrao.Ravulapati@amd.com> From: Pierre-Louis Bossart Message-ID: Date: Wed, 6 Nov 2019 10:43:42 -0600 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:68.0) Gecko/20100101 Thunderbird/68.1.2 MIME-Version: 1.0 In-Reply-To: <1573137364-5592-8-git-send-email-Vishnuvardhanrao.Ravulapati@amd.com> Content-Type: text/plain; charset=utf-8; format=flowed Content-Language: en-US Content-Transfer-Encoding: 7bit Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On 11/7/19 8:36 AM, Ravulapati Vishnu vardhan rao wrote: > When system wide suspend happens, ACP will be powered off > and when system resumes,for audio usecase to continue, > all the runtime configuration data needs to be programmed again. > Added resume pm call back to ACP pm ops and > also Added runtime PM operations for ACP3x PCM platform device. > Device will enter into D3 state when there is no activity > on audio I2S lines. spaces after punctuation and use of capital letters at the start of a sentence? > > Signed-off-by: Ravulapati Vishnu vardhan rao > --- > sound/soc/amd/raven/pci-acp3x.c | 47 ++++++++++++++++++++++++++++++++++++++++- > 1 file changed, 46 insertions(+), 1 deletion(-) > > diff --git a/sound/soc/amd/raven/pci-acp3x.c b/sound/soc/amd/raven/pci-acp3x.c > index 7727c9d..d567585 100644 > --- a/sound/soc/amd/raven/pci-acp3x.c > +++ b/sound/soc/amd/raven/pci-acp3x.c > @@ -9,6 +9,9 @@ > #include > #include > #include > +#include > +#include > +#include > > #include "acp3x.h" > > @@ -247,6 +250,11 @@ static int snd_acp3x_probe(struct pci_dev *pci, > } > break; > } > + pm_runtime_set_autosuspend_delay(&pci->dev, 10000); > + pm_runtime_use_autosuspend(&pci->dev); > + pm_runtime_set_active(&pci->dev); > + pm_runtime_put_noidle(&pci->dev); > + pm_runtime_enable(&pci->dev); > return 0; > > unmap_mmio: > @@ -268,6 +276,39 @@ static int snd_acp3x_probe(struct pci_dev *pci, > return ret; > } > > +static int snd_acp3x_suspend(struct device *dev) > +{ > + int status; > + struct acp3x_dev_data *adata = dev_get_drvdata(dev); > + > + status = acp3x_deinit(adata->acp3x_base); > + if (status) > + dev_err(dev, "ACP de-init failed\n"); > + else > + dev_info(dev, "ACP de-initialized\n"); > + > + return 0; > +} > +static int snd_acp3x_resume(struct device *dev) > +{ > + int status; > + struct acp3x_dev_data *adata = dev_get_drvdata(dev); > + > + status = acp3x_init(adata->acp3x_base); > + if (status) { > + dev_err(dev, "ACP init failed\n"); > + return status; > + } > + > + return 0; > +} > + > +static const struct dev_pm_ops acp3x_pm = { > + .runtime_suspend = snd_acp3x_suspend, > + .runtime_resume = snd_acp3x_resume, > + .resume = snd_acp3x_resume, > +}; that should have been combined with the previous patch, you resume inits in the platform device resume and only add it to the PCI level here. > + > static void snd_acp3x_remove(struct pci_dev *pci) > { > int i, ret; > @@ -283,7 +324,8 @@ static void snd_acp3x_remove(struct pci_dev *pci) > else > dev_info(&pci->dev, "ACP de-initialized\n"); > iounmap(adata->acp3x_base); > - > + pm_runtime_disable(&pci->dev); > + pm_runtime_get_noresume(&pci->dev); > pci_disable_msi(pci); > pci_release_regions(pci); > pci_disable_device(pci); > @@ -302,6 +344,9 @@ static struct pci_driver acp3x_driver = { > .id_table = snd_acp3x_ids, > .probe = snd_acp3x_probe, > .remove = snd_acp3x_remove, > + .driver = { > + .pm = &acp3x_pm, > + } > }; > > module_pci_driver(acp3x_driver); >