soundwire: intel_auxdevice: improve pm_prepare step
authorPierre-Louis Bossart <pierre-louis.bossart@linux.intel.com>
Thu, 23 Mar 2023 02:52:28 +0000 (10:52 +0800)
committerVinod Koul <vkoul@kernel.org>
Wed, 12 Apr 2023 10:06:55 +0000 (15:36 +0530)
commit67572c8dc64412880b81d4bbc2f354dd5eddaa7d
tree6ee20ee10c787af634006423f104d84a4a64bd99
parente9537962519e88969f5f69cd0571eb4f6984403c
soundwire: intel_auxdevice: improve pm_prepare step

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.

Reported-by: Mukunda,Vijendar <vijendar.mukunda@amd.com>
Link: https://lore.kernel.org/lkml/4cbbff8a-c596-e9cc-a6cf-6f8b66607505@amd.com/
Signed-off-by: Pierre-Louis Bossart <pierre-louis.bossart@linux.intel.com>
Reviewed-by: Rander Wang <rander.wang@intel.com>
Signed-off-by: Bard Liao <yung-chuan.liao@linux.intel.com>
Link: https://lore.kernel.org/r/20230323025228.1537107-1-yung-chuan.liao@linux.intel.com
Signed-off-by: Vinod Koul <vkoul@kernel.org>
drivers/soundwire/intel_auxdevice.c