From: Bard Liao <yung-chuan.liao@linux.intel.com> To: alsa-devel@alsa-project.org, vkoul@kernel.org Cc: vinod.koul@linaro.org, linux-kernel@vger.kernel.org, tiwai@suse.de, broonie@kernel.org, gregkh@linuxfoundation.org, jank@cadence.com, srinivas.kandagatla@linaro.org, rander.wang@linux.intel.com, ranjani.sridharan@linux.intel.com, hui.wang@canonical.com, pierre-louis.bossart@linux.intel.com, sanyog.r.kale@intel.com, slawomir.blauciak@intel.com, mengdong.lin@intel.com, bard.liao@intel.com Subject: [PATCH 03/13] soundwire: intel: reset pm_runtime status during system resume Date: Wed, 22 Jul 2020 04:37:13 +0800 [thread overview] Message-ID: <20200721203723.18305-4-yung-chuan.liao@linux.intel.com> (raw) In-Reply-To: <20200721203723.18305-1-yung-chuan.liao@linux.intel.com> From: Pierre-Louis Bossart <pierre-louis.bossart@linux.intel.com> The system resume does the entire bus re-initialization and brings it to full-power. If the device was pm_runtime suspended, there is no need to run the pm_runtime resume sequence after the system runtime. Follow the documentation from runtime_pm.rst, and conditionally disable, set_active and re-enable the device on system resume. Note that pm_runtime_suspended() is used instead of pm_runtime_status_suspended() so that we can deal with the case where pm_runtime is disabled. Signed-off-by: Pierre-Louis Bossart <pierre-louis.bossart@linux.intel.com> Signed-off-by: Bard Liao <yung-chuan.liao@linux.intel.com> --- drivers/soundwire/intel.c | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) diff --git a/drivers/soundwire/intel.c b/drivers/soundwire/intel.c index ed7163ae5f7a..284e5c9d240a 100644 --- a/drivers/soundwire/intel.c +++ b/drivers/soundwire/intel.c @@ -1433,6 +1433,14 @@ static int intel_suspend(struct device *dev) return 0; } + if (pm_runtime_suspended(dev)) { + dev_dbg(dev, + "%s: pm_runtime status: suspended\n", + __func__); + + return 0; + } + ret = sdw_cdns_enable_interrupt(cdns, false); if (ret < 0) { dev_err(dev, "cannot disable interrupts on suspend\n"); @@ -1493,6 +1501,18 @@ static int intel_resume(struct device *dev) return 0; } + if (pm_runtime_suspended(dev)) { + dev_dbg(dev, + "%s: pm_runtime status was suspended, forcing active\n", + __func__); + + /* follow required sequence from runtime_pm.rst */ + pm_runtime_disable(dev); + pm_runtime_set_active(dev); + pm_runtime_mark_last_busy(dev); + pm_runtime_enable(dev); + } + ret = intel_init(sdw); if (ret) { dev_err(dev, "%s failed: %d", __func__, ret); -- 2.17.1
WARNING: multiple messages have this Message-ID (diff)
From: Bard Liao <yung-chuan.liao@linux.intel.com> To: alsa-devel@alsa-project.org, vkoul@kernel.org Cc: pierre-louis.bossart@linux.intel.com, vinod.koul@linaro.org, tiwai@suse.de, gregkh@linuxfoundation.org, linux-kernel@vger.kernel.org, ranjani.sridharan@linux.intel.com, hui.wang@canonical.com, broonie@kernel.org, srinivas.kandagatla@linaro.org, jank@cadence.com, mengdong.lin@intel.com, slawomir.blauciak@intel.com, sanyog.r.kale@intel.com, rander.wang@linux.intel.com, bard.liao@intel.com Subject: [PATCH 03/13] soundwire: intel: reset pm_runtime status during system resume Date: Wed, 22 Jul 2020 04:37:13 +0800 [thread overview] Message-ID: <20200721203723.18305-4-yung-chuan.liao@linux.intel.com> (raw) In-Reply-To: <20200721203723.18305-1-yung-chuan.liao@linux.intel.com> From: Pierre-Louis Bossart <pierre-louis.bossart@linux.intel.com> The system resume does the entire bus re-initialization and brings it to full-power. If the device was pm_runtime suspended, there is no need to run the pm_runtime resume sequence after the system runtime. Follow the documentation from runtime_pm.rst, and conditionally disable, set_active and re-enable the device on system resume. Note that pm_runtime_suspended() is used instead of pm_runtime_status_suspended() so that we can deal with the case where pm_runtime is disabled. Signed-off-by: Pierre-Louis Bossart <pierre-louis.bossart@linux.intel.com> Signed-off-by: Bard Liao <yung-chuan.liao@linux.intel.com> --- drivers/soundwire/intel.c | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) diff --git a/drivers/soundwire/intel.c b/drivers/soundwire/intel.c index ed7163ae5f7a..284e5c9d240a 100644 --- a/drivers/soundwire/intel.c +++ b/drivers/soundwire/intel.c @@ -1433,6 +1433,14 @@ static int intel_suspend(struct device *dev) return 0; } + if (pm_runtime_suspended(dev)) { + dev_dbg(dev, + "%s: pm_runtime status: suspended\n", + __func__); + + return 0; + } + ret = sdw_cdns_enable_interrupt(cdns, false); if (ret < 0) { dev_err(dev, "cannot disable interrupts on suspend\n"); @@ -1493,6 +1501,18 @@ static int intel_resume(struct device *dev) return 0; } + if (pm_runtime_suspended(dev)) { + dev_dbg(dev, + "%s: pm_runtime status was suspended, forcing active\n", + __func__); + + /* follow required sequence from runtime_pm.rst */ + pm_runtime_disable(dev); + pm_runtime_set_active(dev); + pm_runtime_mark_last_busy(dev); + pm_runtime_enable(dev); + } + ret = intel_init(sdw); if (ret) { dev_err(dev, "%s failed: %d", __func__, ret); -- 2.17.1
next prev parent reply other threads:[~2020-07-22 8:31 UTC|newest] Thread overview: 42+ messages / expand[flat|nested] mbox.gz Atom feed top 2020-07-21 20:37 [PATCH 00/13] soundwire: intel: add power management support Bard Liao 2020-07-21 20:37 ` Bard Liao 2020-07-21 20:37 ` [PATCH 01/13] soundwire: intel: Add basic " Bard Liao 2020-07-21 20:37 ` Bard Liao 2020-07-21 20:37 ` [PATCH 02/13] soundwire: intel: add pm_runtime support Bard Liao 2020-07-21 20:37 ` Bard Liao 2020-07-21 20:37 ` Bard Liao [this message] 2020-07-21 20:37 ` [PATCH 03/13] soundwire: intel: reset pm_runtime status during system resume Bard Liao 2020-08-17 11:19 ` Vinod Koul 2020-08-17 11:19 ` Vinod Koul 2020-07-21 20:37 ` [PATCH 04/13] soundwire: intel: fix race condition on " Bard Liao 2020-07-21 20:37 ` Bard Liao 2020-07-21 20:37 ` [PATCH 05/13] soundwire: intel: call helper to reset Slave states on resume Bard Liao 2020-07-21 20:37 ` Bard Liao 2020-07-21 20:37 ` [PATCH 06/13] soundwire: intel: reinitialize IP+DSP in .prepare(), but only when resuming Bard Liao 2020-07-21 20:37 ` Bard Liao 2020-07-21 20:37 ` [PATCH 07/13] soundwire: intel: pm_runtime idle scheduling Bard Liao 2020-07-21 20:37 ` Bard Liao 2020-07-21 20:37 ` [PATCH 08/13] soundwire: intel: add CLK_STOP_TEARDOWN for pm_runtime suspend Bard Liao 2020-07-21 20:37 ` Bard Liao 2020-07-21 20:37 ` [PATCH 09/13] soundwire: intel: add CLK_STOP_BUS_RESET support Bard Liao 2020-07-21 20:37 ` Bard Liao 2020-08-17 11:47 ` Vinod Koul 2020-08-17 11:47 ` Vinod Koul 2020-08-17 14:30 ` Pierre-Louis Bossart 2020-08-17 14:30 ` Pierre-Louis Bossart 2020-08-18 6:27 ` Vinod Koul 2020-08-18 6:27 ` Vinod Koul 2020-07-21 20:37 ` [PATCH 10/13] soundwire: intel: add CLK_STOP_NOT_ALLOWED support Bard Liao 2020-07-21 20:37 ` Bard Liao 2020-07-21 20:37 ` [PATCH 11/13] soundwire: intel_init: handle power rail dependencies for clock stop mode Bard Liao 2020-07-21 20:37 ` Bard Liao 2020-07-21 20:37 ` [PATCH 12/13] soundwire: intel: support clock_stop mode without quirks Bard Liao 2020-07-21 20:37 ` Bard Liao 2020-07-21 20:37 ` [PATCH 13/13] soundwire: intel: refine runtime pm for SDW_INTEL_CLK_STOP_BUS_RESET Bard Liao 2020-07-21 20:37 ` Bard Liao 2020-08-17 12:08 ` [PATCH 00/13] soundwire: intel: add power management support Vinod Koul 2020-08-17 12:08 ` Vinod Koul 2020-08-17 14:46 ` Pierre-Louis Bossart 2020-08-17 16:10 ` Pierre-Louis Bossart 2020-08-18 6:29 ` Vinod Koul 2020-08-18 6:29 ` Vinod Koul
Reply instructions: You may reply publicly to this message via plain-text email using any one of the following methods: * Save the following mbox file, import it into your mail client, and reply-to-all from there: mbox Avoid top-posting and favor interleaved quoting: https://en.wikipedia.org/wiki/Posting_style#Interleaved_style * Reply using the --to, --cc, and --in-reply-to switches of git-send-email(1): git send-email \ --in-reply-to=20200721203723.18305-4-yung-chuan.liao@linux.intel.com \ --to=yung-chuan.liao@linux.intel.com \ --cc=alsa-devel@alsa-project.org \ --cc=bard.liao@intel.com \ --cc=broonie@kernel.org \ --cc=gregkh@linuxfoundation.org \ --cc=hui.wang@canonical.com \ --cc=jank@cadence.com \ --cc=linux-kernel@vger.kernel.org \ --cc=mengdong.lin@intel.com \ --cc=pierre-louis.bossart@linux.intel.com \ --cc=rander.wang@linux.intel.com \ --cc=ranjani.sridharan@linux.intel.com \ --cc=sanyog.r.kale@intel.com \ --cc=slawomir.blauciak@intel.com \ --cc=srinivas.kandagatla@linaro.org \ --cc=tiwai@suse.de \ --cc=vinod.koul@linaro.org \ --cc=vkoul@kernel.org \ /path/to/YOUR_REPLY https://kernel.org/pub/software/scm/git/docs/git-send-email.html * If your mail client supports setting the In-Reply-To header via mailto: links, try the mailto: linkBe sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes, see mirroring instructions on how to clone and mirror all data and code used by this external index.