Commit eae0b60d authored by Bard Liao's avatar Bard Liao Committed by Vinod Koul

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: default avatarBard Liao <yung-chuan.liao@linux.intel.com>
Signed-off-by: default avatarPierre-Louis Bossart <pierre-louis.bossart@linux.intel.com>
Link: https://lore.kernel.org/r/20191212014507.28050-9-pierre-louis.bossart@linux.intel.comSigned-off-by: default avatarVinod Koul <vkoul@kernel.org>
parent 6cd1d670
...@@ -70,6 +70,7 @@ struct sdw_intel_link_res; ...@@ -70,6 +70,7 @@ struct sdw_intel_link_res;
* @handle: ACPI parent handle * @handle: ACPI parent handle
* @links: information for each link (controller-specific and kept * @links: information for each link (controller-specific and kept
* opaque here) * opaque here)
* @link_list: list to handle interrupts across all links
*/ */
struct sdw_intel_ctx { struct sdw_intel_ctx {
int count; int count;
...@@ -77,6 +78,7 @@ struct sdw_intel_ctx { ...@@ -77,6 +78,7 @@ struct sdw_intel_ctx {
u32 link_mask; u32 link_mask;
acpi_handle handle; acpi_handle handle;
struct sdw_intel_link_res *links; struct sdw_intel_link_res *links;
struct list_head link_list;
}; };
/** /**
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment