aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/include/linux/soundwire
diff options
context:
space:
mode:
authorBard Liao <yung-chuan.liao@linux.intel.com>2019-12-11 19:45:04 -0600
committerVinod Koul <vkoul@kernel.org>2019-12-12 09:17:07 +0530
commiteae0b60d64834c75a460d96b1d1e0e187381e341 (patch)
tree97819f02ffdc7e42fe11a4dfc878b548c7f65f96 /include/linux/soundwire
parentsoundwire: intel: update headers for interrupts (diff)
downloadwireguard-linux-eae0b60d64834c75a460d96b1d1e0e187381e341.tar.xz
wireguard-linux-eae0b60d64834c75a460d96b1d1e0e187381e341.zip
soundwire: intel: add link_list to handle interrupts with a single thread
In MSI mode, the use of separate handlers and threads for the Intel IPC, stream and SoundWire shared interrupt leads to timeouts and lost interrupts. The solution is to merge all interrupt handling across all links with a single thread function. The use of a linked list enables this thread function to walk through all contexts and figure out which link needs attention. 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/20191212014507.28050-9-pierre-louis.bossart@linux.intel.com Signed-off-by: Vinod Koul <vkoul@kernel.org>
Diffstat (limited to 'include/linux/soundwire')
-rw-r--r--include/linux/soundwire/sdw_intel.h2
1 files changed, 2 insertions, 0 deletions
diff --git a/include/linux/soundwire/sdw_intel.h b/include/linux/soundwire/sdw_intel.h
index 2ce3e9ecc4b6..2a56180bc9dc 100644
--- a/include/linux/soundwire/sdw_intel.h
+++ b/include/linux/soundwire/sdw_intel.h
@@ -70,6 +70,7 @@ struct sdw_intel_link_res;
* @handle: ACPI parent handle
* @links: information for each link (controller-specific and kept
* opaque here)
+ * @link_list: list to handle interrupts across all links
*/
struct sdw_intel_ctx {
int count;
@@ -77,6 +78,7 @@ struct sdw_intel_ctx {
u32 link_mask;
acpi_handle handle;
struct sdw_intel_link_res *links;
+ struct list_head link_list;
};
/**