linux/drivers/soundwire
Bard Liao 4a98a6b2fa soundwire: intel/cadence: merge Soundwire interrupt handlers/threads
The existing code uses one pair of interrupt handler/thread per link
but at the hardware level the interrupt is shared. This works fine for
legacy PCI interrupts, but leads to timeouts in MSI (Message-Signaled
Interrupt) mode, likely due to edges being lost.

This patch unifies interrupt handling for all links. The dedicated
handler is removed since we use a common one for all shared interrupt
sources, and the thread function takes care of dealing with interrupt
sources. This partition follows the model used for the SOF IPC on
HDaudio platforms, where similar timeout issues were noticed and doing
all the interrupt handling/clearing in the thread improved
reliability/stability.

Validation results with 4 links active in parallel show a night-and-day
improvement with no timeouts noticed even during stress tests. Latency
and quality of service are not affected by the change - mostly because
events on a SoundWire link are throttled by the bus frame rate
(typically 8..48kHz).

Signed-off-by: Bard Liao <yung-chuan.liao@linux.intel.com>
Signed-off-by: Pierre-Louis Bossart <pierre-louis.bossart@linux.intel.com>
Link: https://lore.kernel.org/r/20200716150947.22119-8-yung-chuan.liao@linux.intel.com
Signed-off-by: Vinod Koul <vkoul@kernel.org>
2020-07-21 16:05:41 +05:30
..
bus_type.c soundwire: extend SDW_SLAVE_ENTRY 2020-06-30 21:26:17 +05:30
bus.c soundwire: bus: initialize bus clock base and scale registers 2020-06-30 21:26:17 +05:30
bus.h soundwire: add Slave sysfs support 2020-05-20 17:22:41 +05:30
cadence_master.c soundwire: intel/cadence: merge Soundwire interrupt handlers/threads 2020-07-21 16:05:41 +05:30
cadence_master.h soundwire: intel/cadence: merge Soundwire interrupt handlers/threads 2020-07-21 16:05:41 +05:30
debugfs.c soundwire: debugfs: clarify SDPX license with GPL-2.0-only 2020-05-05 08:51:44 +05:30
intel_init.c soundwire: intel/cadence: merge Soundwire interrupt handlers/threads 2020-07-21 16:05:41 +05:30
intel.c soundwire: intel/cadence: merge Soundwire interrupt handlers/threads 2020-07-21 16:05:41 +05:30
intel.h soundwire: intel/cadence: merge Soundwire interrupt handlers/threads 2020-07-21 16:05:41 +05:30
Kconfig soundwire: qcom: add support for SoundWire controller 2020-01-14 11:57:47 +05:30
Makefile soundwire: Replace 'objs' by 'y' 2020-06-22 17:06:08 +05:30
master.c soundwire: master: add sysfs support 2020-05-20 17:22:36 +05:30
mipi_disco.c soundwire: disco: s/ch/channels/ 2020-05-20 17:22:30 +05:30
qcom.c soundwire: qcom: Constify static structs 2020-06-22 17:28:10 +05:30
slave.c soundwire: bus_type: introduce sdw_slave_type and sdw_master_type 2020-05-19 12:44:34 +05:30
stream.c soundwire: fix the kernel-doc comment 2020-07-16 09:37:43 +05:30
sysfs_local.h soundwire: add Slave sysfs support 2020-05-20 17:22:41 +05:30
sysfs_slave_dpn.c soundwire: fix spelling mistake 2020-05-20 17:29:37 +05:30
sysfs_slave.c soundwire: fix trailing line in sysfs_slave.c 2020-05-20 17:27:45 +05:30