summaryrefslogtreecommitdiff
path: root/drivers/soundwire
diff options
context:
space:
mode:
authorVijendar Mukunda <Vijendar.Mukunda@amd.com>2025-05-30 11:13:40 +0530
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>2025-08-28 16:28:28 +0200
commit1e36975785675b808bf57f04e16c63fac0ead75a (patch)
tree17f2f2764574acba2c2f1a88f4740a242b649186 /drivers/soundwire
parentd2974cfd4fa6ba034447e0ebde76f036d87bb20e (diff)
downloadlinux-1e36975785675b808bf57f04e16c63fac0ead75a.tar.gz
linux-1e36975785675b808bf57f04e16c63fac0ead75a.tar.bz2
linux-1e36975785675b808bf57f04e16c63fac0ead75a.zip
soundwire: amd: serialize amd manager resume sequence during pm_prepare
[ Upstream commit 03837341790039d6f1cbf7a1ae7dfa2cb77ef0a4 ] During pm_prepare callback, pm_request_resume() delays SoundWire manager D0 entry sequence. Synchronize runtime resume sequence for amd_manager instance prior to invoking child devices resume sequence for both the amd power modes(ClockStop Mode and Power off mode). Change the power_mode_mask check and use pm_runtime_resume() in amd_pm_prepare() callback. Signed-off-by: Vijendar Mukunda <Vijendar.Mukunda@amd.com> Link: https://lore.kernel.org/r/20250530054447.1645807-3-Vijendar.Mukunda@amd.com Signed-off-by: Vinod Koul <vkoul@kernel.org> Signed-off-by: Sasha Levin <sashal@kernel.org>
Diffstat (limited to 'drivers/soundwire')
-rw-r--r--drivers/soundwire/amd_manager.c6
1 files changed, 3 insertions, 3 deletions
diff --git a/drivers/soundwire/amd_manager.c b/drivers/soundwire/amd_manager.c
index b89f8067e6cd..3d8937245c18 100644
--- a/drivers/soundwire/amd_manager.c
+++ b/drivers/soundwire/amd_manager.c
@@ -1104,10 +1104,10 @@ static int __maybe_unused amd_pm_prepare(struct device *dev)
* device is not in runtime suspend state, observed that device alerts are missing
* without pm_prepare on AMD platforms in clockstop mode0.
*/
- if (amd_manager->power_mode_mask & AMD_SDW_CLK_STOP_MODE) {
- ret = pm_request_resume(dev);
+ if (amd_manager->power_mode_mask) {
+ ret = pm_runtime_resume(dev);
if (ret < 0) {
- dev_err(bus->dev, "pm_request_resume failed: %d\n", ret);
+ dev_err(bus->dev, "pm_runtime_resume failed: %d\n", ret);
return 0;
}
}