linux/sound/soc
Bard Liao 7c11af9fcd
ASoC: SOF: Intel: hda: solve MSI issues by merging ipc and stream irq handlers
The existing code uses two handlers for a shared edge-based MSI interrupts.
In corner cases, interrupts are lost, leading to IPC timeouts. Those
timeouts do not appear in legacy mode.

This patch merges the two handlers and threads into a single one, and
simplifies the mask/unmask operations by using a single top-level mask
(Global Interrupt Enable). The handler only checks for interrupt
sources using the Global Interrupt Status (GIS) field, and all the
actual work happens in the thread. This also enables us to remove the
use of spin locks. Stream events are prioritized over IPC ones.

This patch was tested with HDaudio and SoundWire platforms, and all
known IPC timeout issues are solved in MSI mode. The
SoundWire-specific patches will be provided in follow-up patches,
where the SoundWire interrupts are handled in the same thread as IPC
and stream interrupts.

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/20191204212859.13239-1-pierre-louis.bossart@linux.intel.com
Signed-off-by: Mark Brown <broonie@kernel.org>
2019-12-09 18:35:56 +00:00
..
adi
amd ASoC: amd: acp-pcm-dma: remove snd_pcm_ops 2019-10-08 13:42:38 +01:00
atmel ASoC: atmel: atmel-pcm-pdc: remove snd_pcm_ops 2019-10-08 13:42:57 +01:00
au1x ASoC: Remove superfluous snd_dma_continuous_data() 2019-11-09 18:02:52 +01:00
bcm ASoC: bcm: cygnus-pcm: remove snd_pcm_ops 2019-10-08 13:49:12 +01:00
cirrus sound: Fix Kconfig indentation 2019-10-07 03:53:03 +02:00
codecs ASoC: cs42l51: add dac mux widget in codec routes 2019-12-09 18:35:19 +00:00
dwc ASoC: Remove superfluous snd_dma_continuous_data() 2019-11-09 18:02:52 +01:00
fsl ASoC: fsl_sai: add IRQF_SHARED 2019-12-09 18:34:04 +00:00
generic ASoC: audio-graph: fixup graph_dai_link_of_dpcm() comment 2019-10-15 10:13:29 +01:00
hisilicon
img
intel ASoC: Intel: boards: make common HDMI driver the default for SOF 2019-12-09 18:32:52 +00:00
jz4740 ASoC: jz4740: Remove unused match variable 2019-10-09 10:58:01 +01:00
kirkwood Merge branch 'for-5.4' of https://git.kernel.org/pub/scm/linux/kernel/git/broonie/sound into asoc-5.5 2019-11-06 16:29:34 +00:00
mediatek ASoC: mediatek: common: refine hw_params and hw_prepare 2019-12-09 18:33:34 +00:00
meson ASoC: meson: remove snd_pcm_ops 2019-10-08 13:47:40 +01:00
mxs
pxa sound updates for 5.5-rc1 2019-11-26 20:04:35 -08:00
qcom ASoC: More updates for v5.5 2019-11-25 14:27:41 +01:00
rockchip ASoC: Fixes for v5.4 2019-11-07 13:52:17 +01:00
samsung sound updates for 5.5-rc1 2019-11-26 20:04:35 -08:00
sh ASoC: rsnd: Calculate DALIGN inversion at run-time 2019-12-09 18:35:00 +00:00
sirf
sof ASoC: SOF: Intel: hda: solve MSI issues by merging ipc and stream irq handlers 2019-12-09 18:35:56 +00:00
spear
sprd ASoC: sprd: sprd-pcm-dma: remove snd_pcm_ops 2019-10-08 13:44:40 +01:00
sti
stm Merge branch 'for-5.4' of https://git.kernel.org/pub/scm/linux/kernel/git/broonie/sound into asoc-5.5 2019-11-06 16:29:34 +00:00
sunxi ASoC: sunxi: sun4i-codec: remove unneeded semicolon 2019-10-28 13:12:39 +00:00
tegra ASoC: tegra: disable rx_fifo after disable stream 2019-10-25 11:07:33 +01:00
ti ASoC: ti: davinci-mcasp: Improve the sysclk selection 2019-12-09 18:35:37 +00:00
txx9 ASoC: txx9: txx9aclc: remove snd_pcm_ops 2019-10-08 13:44:23 +01:00
uniphier ASoC: uniphier: aio-dma: remove snd_pcm_ops 2019-10-08 13:44:05 +01:00
ux500 ASoC: ux500: Remove redundant variable "status" 2019-11-04 13:22:25 +00:00
xilinx ASoC: Updates for v5.5 2019-11-07 14:12:30 +01:00
xtensa ASoC: xtensa: xtfpga-i2s: remove snd_pcm_ops 2019-10-08 13:43:25 +01:00
zte sound: Fix Kconfig indentation 2019-10-07 03:53:03 +02:00
Kconfig ASoC: remove w90x900/nuc900 platform drivers 2019-08-12 14:00:29 +01:00
Makefile ASoC: remove w90x900/nuc900 platform drivers 2019-08-12 14:00:29 +01:00
soc-ac97.c
soc-acpi.c
soc-component.c ASoC: More updates for v5.5 2019-11-25 14:27:41 +01:00
soc-compress.c ASoC: soc-core: add for_each_rtd_components() and replace 2019-10-23 17:44:24 +01:00
soc-core.c ASoC: DMI long name - avoid to add board name if matches with product name 2019-11-22 19:54:50 +00:00
soc-dai.c
soc-dapm.c ASoC: soc-core: add snd_soc_dapm_init() 2019-09-02 13:21:20 +01:00
soc-devres.c
soc-generic-dmaengine-pcm.c ASoC: dmaengine: Use dma_request_chan() directly for channel request 2019-11-15 12:02:58 +00:00
soc-io.c
soc-jack.c ASoC: Jack: Fix NULL pointer dereference in snd_soc_jack_report 2019-11-12 17:12:56 +00:00
soc-ops.c ASoC: soc-ops: use snd_soc_card_get_kcontrol() at snd_soc_limit_volume() 2019-10-03 14:37:20 +01:00
soc-pcm.c ASoC: More updates for v5.5 2019-11-25 14:27:41 +01:00
soc-topology.c ASoC: soc-core: don't call snd_soc_dapm_new_dai_widgets() at snd_soc_register_dai() 2019-11-05 23:50:49 +00:00
soc-utils.c ASoC: soc-utils: remove snd_pcm_ops 2019-10-08 13:50:43 +01:00