linux/sound/soc
Alexander Sverdlin 98e1241c35
ASoC: cirrus: i2s: IRQ-based stream watchdog
I2S controller on EP93xx seems to have undocumented HW issue. According to
"EP93xx User’s Guide", controller can handle underflow and either transmit
last sample or zeroes in such case until FIFO is filled again. In reality
undeflow conditions seem to confuse internal state machine from time to
time and the whole stream gets shifted by one byte (as captured by logic
analyser on the I2S outputs). One could only hear noise instead of original
stream and this continues until the FIFO is disabled and enabled again.

Work this around by watching underflow interrupt and resetting I2S TX
channel + fill FIFO with zero samples until DMA catches up again. This is
a nasty workaround, but it works. Hence, Kconfig option to disable it in
case of problems.

Signed-off-by: Alexander Sverdlin <alexander.sverdlin@gmail.com>
Signed-off-by: Mark Brown <broonie@kernel.org>
2018-05-11 11:27:33 +09:00
..
adi
amd ASoC: amd: fix spelling mistake: "failer" -> "failure" 2018-05-02 05:52:37 +09:00
atmel ASoC: atmel: simplify getting .drvdata 2018-04-19 15:40:30 +01:00
au1x ASoC: au1x: dma: replace platform to component 2018-02-12 11:45:36 +00:00
bcm ASoC: Remove depends on HAS_DMA in case of platform dependency 2018-04-18 11:17:09 +01:00
cirrus ASoC: cirrus: i2s: IRQ-based stream watchdog 2018-05-11 11:27:33 +09:00
codecs ASoC: rt5645: Add platform-data for Lenovo Ideapad Mixx 320 2018-05-11 11:26:58 +09:00
davinci ASoC: davinci-mcasp: Convert to use the sdma-pcm instead of omap-pcm 2018-05-11 11:26:15 +09:00
dwc Merge remote-tracking branches 'asoc/topic/dwc', 'asoc/topic/es7134', 'asoc/topic/es8316', 'asoc/topic/es8328' and 'asoc/topic/fsl' into asoc-next 2018-03-28 10:29:36 +08:00
fsl ASoC: fsl_spdif: Switch to SPDX identifier 2018-05-03 10:29:14 +09:00
generic
hisilicon ASoC: hisilicon: remove duplicate includes 2017-12-06 17:48:23 +00:00
img ASoC: pistachio: replace codec to component 2018-02-12 11:08:03 +00:00
intel ASoC: Intel: bytcr_rt5640: Use device-property for differential mics 2018-05-11 11:24:01 +09:00
jz4740
kirkwood ASoC: Remove depends on HAS_DMA in case of platform dependency 2018-04-18 11:17:09 +01:00
mediatek ASoC: mediatek: add the .probe() callback in mt2701_afe_pcm_dai_component 2018-05-02 05:52:32 +09:00
mxs Merge remote-tracking branches 'asoc/topic/mtk', 'asoc/topic/mxs', 'asoc/topic/mxs-sgtl5000', 'asoc/topic/nau8540' and 'asoc/topic/nau8824' into asoc-next 2018-01-26 15:27:22 +00:00
nuc900 ASoC: nuc900-pcm: replace platform to component 2018-02-12 11:45:37 +00:00
omap ASoC: omap: Delete the obsolete omap-pcm 2018-05-11 11:26:25 +09:00
pxa ASoC: Remove depends on HAS_DMA in case of platform dependency 2018-04-18 11:17:09 +01:00
qcom ASoC: Remove depends on HAS_DMA in case of platform dependency 2018-04-18 11:17:09 +01:00
rockchip Merge remote-tracking branches 'asoc/topic/rt5645', 'asoc/topic/rt5651', 'asoc/topic/rt5659' and 'asoc/topic/rt5660' into asoc-next 2018-03-28 10:30:29 +08:00
samsung Merge remote-tracking branches 'asoc/topic/wm8991', 'asoc/topic/wm8994', 'asoc/topic/wm8995', 'asoc/topic/wm8996' and 'asoc/topic/wm9081' into asoc-next 2018-03-28 10:31:54 +08:00
sh ASoC: sh: Update menu title and platform dependency 2018-04-20 17:52:49 +01:00
sirf ASoC: sirf: remove duplicated bit-wise or of USP_RXFIFO_THD_INT 2018-02-26 10:19:20 +00:00
spear
sti
stm ASoC: stm32: sai: Add support of S/PDIF playback 2018-02-26 11:19:04 +00:00
sunxi Merge remote-tracking branches 'asoc/topic/sta529', 'asoc/topic/sti-sas', 'asoc/topic/stm32', 'asoc/topic/sun4i' and 'asoc/topic/sun8i' into asoc-next 2018-03-28 10:30:49 +08:00
tegra ASoC: wm8903: replace codec to component 2018-02-12 09:41:37 +00:00
txx9 ASoC: txx9aclc: replace platform to component 2018-02-12 11:45:38 +00:00
uniphier ASoC: uniphier: add digital output volume for UniPhier sound system 2018-05-09 18:40:39 +09:00
ux500 ASoC: ux500: add MODULE_LICENSE tag 2018-01-10 16:42:10 +00:00
xtensa ASoC: xtfpga-i2s: replace platform to component 2018-02-12 11:45:32 +00:00
zte ASoC: zx-i2s: fix spelling mistake: "timeing" -> "timing" 2018-05-11 11:05:01 +09:00
Kconfig ASoC: remove blackfin drivers 2018-03-14 09:35:29 -07:00
Makefile ASoC: remove codec reg_cache 2018-05-09 18:38:23 +09:00
soc-ac97.c ASoC: ac97: replace codec to component 2018-02-12 09:37:29 +00:00
soc-acpi.c ASoC: Intel - Convert to use acpi_dev_get_first_match_name() 2018-01-12 21:20:29 +00:00
soc-compress.c ASoC: compress: Add helper functions for component open/free 2018-04-26 12:24:48 +01:00
soc-core.c ASoC: soc-core: remove legacy_dai_naming from snd_soc_register_dais() 2018-05-09 18:40:09 +09:00
soc-dapm.c Merge remote-tracking branches 'asoc/topic/sirf-audio', 'asoc/topic/sn95031', 'asoc/topic/soc-dapm', 'asoc/topic/spdif_receiver' and 'asoc/topic/spdif_transmitter' into asoc-next 2018-03-28 10:30:40 +08:00
soc-devres.c ASoC: Remove platform code now everything is componentised 2018-04-26 12:24:43 +01:00
soc-generic-dmaengine-pcm.c ASoC: Revert "ASoC: soc-generic-dmaengine-pcm: Fix error handling" 2018-02-26 19:59:31 +00:00
soc-io.c ASoC: remove Codec related code 2018-05-09 18:39:07 +09:00
soc-jack.c ASoC: remove Codec related code 2018-05-09 18:39:07 +09:00
soc-ops.c ASoC: change mask in snd_soc_get/put_volsw_sx to unsigned int 2018-01-03 12:32:04 +00:00
soc-pcm.c ASoC: remove Codec related code 2018-05-09 18:39:07 +09:00
soc-topology.c Merge branch 'asoc-4.17' into asoc-4.18 for compress dependencies 2018-04-26 12:24:28 +01:00
soc-utils.c ASoC: soc-utils: replace codec to component 2018-02-12 11:46:14 +00:00