Message ID | 20230323025228.1537107-1-yung-chuan.liao@linux.intel.com (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
Series | soundwire: intel_auxdevice: improve pm_prepare step | expand |
On 23-03-23, 10:52, Bard Liao wrote: > From: Pierre-Louis Bossart <pierre-louis.bossart@linux.intel.com> > > In the case where multiple peripherals are attached on the same link, > it's possible that they are in different pm_runtime states. > > The device_for_each_child() loop to resume all devices before a system > suspend would not work if one peripheral was active and others > suspended. pm_runtime_resume() returns 1 in the former case, which is > taken as a error. As a result, a pm_runtime suspended device might be > skipped if the first device was active. > > This patch changes the behavior of the helper function to only return > zero or a negative error. A Fixes tag is not provided since there are > no existing configurations on Intel platforms with different types of > devices on the same link. Amplifiers may be used on the same link, but > they are used by the same dailink so their pm_runtime state is always > matching. This assumption may not be true in the future, so we should > improve the behavior and align with AMD. Applied, thanks
diff --git a/drivers/soundwire/intel_auxdevice.c b/drivers/soundwire/intel_auxdevice.c index 5021be0f4158..b21e86084f7b 100644 --- a/drivers/soundwire/intel_auxdevice.c +++ b/drivers/soundwire/intel_auxdevice.c @@ -358,10 +358,12 @@ static int intel_resume_child_device(struct device *dev, void *data) } ret = pm_request_resume(dev); - if (ret < 0) + if (ret < 0) { dev_err(dev, "%s: pm_request_resume failed: %d\n", __func__, ret); + return ret; + } - return ret; + return 0; } static int __maybe_unused intel_pm_prepare(struct device *dev)