All of lore.kernel.org
 help / color / mirror / Atom feed
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 11/13] soundwire: intel_init: handle power rail dependencies for clock stop mode
Date: Wed, 22 Jul 2020 04:37:21 +0800	[thread overview]
Message-ID: <20200721203723.18305-12-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>

When none of the clock stop quirks is specified, the Master IP will
assume the context is preserved and will not reset the Bus and restart
enumeration. Due to power rail dependencies, the HDaudio controller
needs to remain powered and prevented from executing its pm_runtime
suspend routine.

This choice of course has a power impact, and this mode should only be
selected when latency requirements are critical or the parent device
can enter D0ix modes.

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_init.c | 14 ++++++++++++++
 1 file changed, 14 insertions(+)

diff --git a/drivers/soundwire/intel_init.c b/drivers/soundwire/intel_init.c
index 96c9af15c308..c0fddf76a6dc 100644
--- a/drivers/soundwire/intel_init.c
+++ b/drivers/soundwire/intel_init.c
@@ -14,6 +14,7 @@
 #include <linux/module.h>
 #include <linux/platform_device.h>
 #include <linux/soundwire/sdw_intel.h>
+#include <linux/pm_runtime.h>
 #include "cadence_master.h"
 #include "intel.h"
 
@@ -72,6 +73,9 @@ static int sdw_intel_cleanup(struct sdw_intel_ctx *ctx)
 			pm_runtime_disable(&link->pdev->dev);
 			platform_device_unregister(link->pdev);
 		}
+
+		if (!link->clock_stop_quirks)
+			pm_runtime_put_noidle(link->dev);
 	}
 
 	return 0;
@@ -337,6 +341,16 @@ sdw_intel_startup_controller(struct sdw_intel_ctx *ctx)
 			continue;
 
 		intel_master_startup(link->pdev);
+
+		if (!link->clock_stop_quirks) {
+			/*
+			 * we need to prevent the parent PCI device
+			 * from entering pm_runtime suspend, so that
+			 * power rails to the SoundWire IP are not
+			 * turned off.
+			 */
+			pm_runtime_get_noresume(link->dev);
+		}
 	}
 
 	return 0;
-- 
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 11/13] soundwire: intel_init: handle power rail dependencies for clock stop mode
Date: Wed, 22 Jul 2020 04:37:21 +0800	[thread overview]
Message-ID: <20200721203723.18305-12-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>

When none of the clock stop quirks is specified, the Master IP will
assume the context is preserved and will not reset the Bus and restart
enumeration. Due to power rail dependencies, the HDaudio controller
needs to remain powered and prevented from executing its pm_runtime
suspend routine.

This choice of course has a power impact, and this mode should only be
selected when latency requirements are critical or the parent device
can enter D0ix modes.

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_init.c | 14 ++++++++++++++
 1 file changed, 14 insertions(+)

diff --git a/drivers/soundwire/intel_init.c b/drivers/soundwire/intel_init.c
index 96c9af15c308..c0fddf76a6dc 100644
--- a/drivers/soundwire/intel_init.c
+++ b/drivers/soundwire/intel_init.c
@@ -14,6 +14,7 @@
 #include <linux/module.h>
 #include <linux/platform_device.h>
 #include <linux/soundwire/sdw_intel.h>
+#include <linux/pm_runtime.h>
 #include "cadence_master.h"
 #include "intel.h"
 
@@ -72,6 +73,9 @@ static int sdw_intel_cleanup(struct sdw_intel_ctx *ctx)
 			pm_runtime_disable(&link->pdev->dev);
 			platform_device_unregister(link->pdev);
 		}
+
+		if (!link->clock_stop_quirks)
+			pm_runtime_put_noidle(link->dev);
 	}
 
 	return 0;
@@ -337,6 +341,16 @@ sdw_intel_startup_controller(struct sdw_intel_ctx *ctx)
 			continue;
 
 		intel_master_startup(link->pdev);
+
+		if (!link->clock_stop_quirks) {
+			/*
+			 * we need to prevent the parent PCI device
+			 * from entering pm_runtime suspend, so that
+			 * power rails to the SoundWire IP are not
+			 * turned off.
+			 */
+			pm_runtime_get_noresume(link->dev);
+		}
 	}
 
 	return 0;
-- 
2.17.1


  parent reply	other threads:[~2020-07-22  8:32 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 ` [PATCH 03/13] soundwire: intel: reset pm_runtime status during system resume Bard Liao
2020-07-21 20:37   ` 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 ` Bard Liao [this message]
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 ` [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-12-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: link
Be 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.