linux-next/drivers/soundwire
Pierre-Louis Bossart 5aedb8d833 soundwire: intel_bus_common: enable interrupts before exiting reset
The existing code enables the Cadence IP interrupts after the bus
reset sequence. The problem with this sequence is that it might be
pre-empted, giving SoundWire devices time to sync and report as
ATTACHED before the interrupts are enabled. In that case, the Cadence
IP will not detect a state change and will not throw an interrupt to
proceed with the enumeration of a Device0.

In our overnight stress tests, we observed that a slight
sub-millisecond delay in enabling interrupts after the reset was
correlated with detection failures. This problem is more prevalent on
the LunarLake silicon, likely due to SOC integration changes, but it
was observed on earlier generations as well.

This patch reverts the sequence, with the interrupts enabled before
performing the bus reset. This removes the race condition and makes
sure the Cadence IP is able to detect the presence of a Device0 in all
cases.

Signed-off-by: Pierre-Louis Bossart <pierre-louis.bossart@linux.intel.com>
Signed-off-by: Bard Liao <yung-chuan.liao@linux.intel.com>
Link: https://lore.kernel.org/r/20240805115003.88035-1-yung-chuan.liao@linux.intel.com
Signed-off-by: Vinod Koul <vkoul@kernel.org>
2024-08-18 12:14:53 +05:30
..
amd_init.c soundwire: amd_init: simplify with cleanup.h 2024-07-09 19:12:49 +05:30
amd_init.h soundwire: amd: use inline function for register update 2024-03-28 23:39:50 +05:30
amd_manager.c soundwire updates for 6.11 2024-07-24 13:04:43 -07:00
amd_manager.h soundwire: amd: fix for wake interrupt handling for clockstop mode 2024-03-28 23:40:33 +05:30
bus_type.c soundwire: bus: clean up probe warnings 2024-07-31 12:27:45 +05:30
bus.c soundwire: bus: simplify by using local slave->prop 2024-06-21 15:26:58 +05:30
bus.h soundwire: export sdw_compute_slave_ports() function 2023-04-12 15:30:35 +05:30
cadence_master.c soundwire: cadence: re-check Peripheral status with delayed_work 2024-08-18 12:14:24 +05:30
cadence_master.h soundwire: cadence: re-check Peripheral status with delayed_work 2024-08-18 12:14:24 +05:30
debugfs.c soundwire: debugfs: simplify with cleanup.h 2024-07-09 19:12:49 +05:30
dmi-quirks.c ASoC: Intel: common: DMI remap for rebranded Intel NUC M15 (LAPRC710) laptops 2024-02-08 21:23:19 +00:00
generic_bandwidth_allocation.c soundwire: generic_bandwidth_allocation: change port_bo parameter to pointer 2024-06-21 15:26:26 +05:30
intel_ace2x_debugfs.c soundwire: Intel: clarify Copyright information 2024-06-21 15:26:02 +05:30
intel_ace2x.c soundwire: intel_ace2x: simplify with cleanup.h 2024-07-09 19:12:49 +05:30
intel_auxdevice.c soundwire: cadence: re-check Peripheral status with delayed_work 2024-08-18 12:14:24 +05:30
intel_auxdevice.h soundwire: intel: export intel_resume_child_device 2024-04-11 22:52:51 +05:30
intel_bus_common.c soundwire: intel_bus_common: enable interrupts before exiting reset 2024-08-18 12:14:53 +05:30
intel_init.c soundwire: intel_init: resume all devices on exit. 2024-04-11 22:52:51 +05:30
intel.c soundwire: intel: simplify with cleanup.h 2024-07-09 19:12:49 +05:30
intel.h soundwire: cadence: re-check Peripheral status with delayed_work 2024-08-18 12:14:24 +05:30
irq.c soundwire: bus: Make IRQ handling conditionally built 2023-09-21 11:31:33 +02:00
irq.h soundwire: bus: Make IRQ handling conditionally built 2023-09-21 11:31:33 +02:00
Kconfig soundwire: intel_ace2x: fix SND_SOC_SOF_HDA_MLINK dependency 2023-06-21 16:19:44 +05:30
Makefile soundwire: amd: refactor amd soundwire manager device node creation 2024-01-30 16:06:34 +00:00
master.c soundwire: constify the struct device_type usage 2024-03-03 19:28:06 +05:30
mipi_disco.c soundwire: fix usages of device_get_named_child_node() 2024-06-03 17:35:24 +05:30
qcom.c drivers:soundwire: qcom: cleanup port maask calculations 2024-07-02 16:49:56 +05:30
slave.c soundwire: slave: simplify code with acpi_get_local_u64_address() 2024-06-10 12:48:20 +01:00
stream.c soundwire: bus: add stream refcount 2024-06-03 17:40:23 +05:30
sysfs_local.h soundwire: sysfs: remove sdw_slave_sysfs_init() 2024-03-28 23:38:47 +05:30
sysfs_slave_dpn.c soundwire: sysfs: remove sdw_slave_sysfs_init() 2024-03-28 23:38:47 +05:30
sysfs_slave.c soundwire: sysfs: remove unneeded ATTRIBUTE_GROUPS() comments 2024-03-28 23:38:47 +05:30