linux-stable/drivers/soundwire
Pierre-Louis Bossart 67572c8dc6 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>
2023-04-12 15:36:55 +05:30
..
Kconfig soundwire: amd: enable build for AMD SoundWire manager driver 2023-04-12 15:30:36 +05:30
Makefile soundwire: amd: enable build for AMD SoundWire manager driver 2023-04-12 15:30:36 +05:30
amd_manager.c soundwire: amd: add pm_prepare callback and pm ops support 2023-04-12 15:30:36 +05:30
amd_manager.h soundwire: amd: handle SoundWire wake enable interrupt 2023-04-12 15:30:36 +05:30
bus.c soundwire: bus: Fix unbalanced pm_runtime_put() causing usage count underflow 2023-04-12 15:34:40 +05:30
bus.h soundwire: export sdw_compute_slave_ports() function 2023-04-12 15:30:35 +05:30
bus_type.c soundwire updates for 6.3 2023-02-24 17:29:52 -08:00
cadence_master.c soundwire: cadence: change access to IP_MCP_CMD_BASE 2023-03-15 19:24:03 +05:30
cadence_master.h soundwire: intel: don't save hw_params for use in prepare 2023-04-12 15:32:57 +05:30
debugfs.c soundwire: debugfs: Switch to sdw_read_no_pm 2023-01-09 21:46:27 +05:30
dmi-quirks.c soundwire: dmi-quirks: add remapping for Intel 'Rooks County' NUC M15 2023-03-15 19:23:57 +05:30
generic_bandwidth_allocation.c soundwire: export sdw_compute_slave_ports() function 2023-04-12 15:30:35 +05:30
intel.c soundwire: intel: don't save hw_params for use in prepare 2023-04-12 15:32:57 +05:30
intel.h soundwire: intel: move bank switch routine to common intel_bus_common.c 2023-03-15 19:24:02 +05:30
intel_auxdevice.c soundwire: intel_auxdevice: improve pm_prepare step 2023-04-12 15:36:55 +05:30
intel_auxdevice.h soundwire: intel: split auxdevice to different file 2022-11-23 20:11:49 +05:30
intel_bus_common.c soundwire: intel: move bank switch routine to common intel_bus_common.c 2023-03-15 19:24:02 +05:30
intel_init.c soundwire updates for 6.2 2022-12-19 08:47:33 -06:00
master.c soundwire: master: use pm_runtime_set_active() on add 2020-12-02 12:49:34 +05:30
mipi_disco.c soundwire: fix port_ready[] dynamic allocation in mipi_disco 2020-09-03 16:02:29 +05:30
qcom.c soundwire: qcom: gracefully handle too many ports in DT 2023-04-12 15:30:35 +05:30
slave.c Char / Misc driver changes for 6.0-rc1 2022-08-04 11:05:48 -07:00
stream.c soundwire: stream: uniquify dev_err() logs 2023-04-12 15:30:36 +05:30
sysfs_local.h soundwire: sysfs: add slave status and device number before probe 2020-09-28 11:17:43 +05:30
sysfs_slave.c soundwire: sysfs: Constify static struct attribute_group 2021-01-19 20:21:20 +05:30
sysfs_slave_dpn.c soundwire: Fix DEBUG_LOCKS_WARN_ON for uninitialized attribute 2020-11-24 14:08:51 +05:30