summaryrefslogtreecommitdiffstats
path: root/sound/soc/rockchip/rockchip_spdif.c
diff options
context:
space:
mode:
authorSjoerd Simons <sjoerd.simons@collabora.co.uk>2015-12-11 09:45:33 +0100
committerMark Brown <broonie@kernel.org>2015-12-12 22:23:26 +0000
commit5042f936c6810d0e7153cc9e1794c6998590a930 (patch)
tree153561757eec41ace0f42e733ed1576aafe37330 /sound/soc/rockchip/rockchip_spdif.c
parent8005c49d9aea74d382f474ce11afbbc7d7130bec (diff)
downloadlinux-5042f936c6810d0e7153cc9e1794c6998590a930.tar.bz2
ASoC: rockchip: spdif: Set transmit data level to 16 samples
Explicitly set the transmit data level on the transceiver to 16 samples rather then the default 0. This matches both the level set in the vendor kernel and the (seemingly very similar) i2s engine. This fixes audio glitches when playing back at 192k rate. At the same time, fix a trivial typo in the TDL mask definition Signed-off-by: Sjoerd Simons <sjoerd.simons@collabora.co.uk> Signed-off-by: Mark Brown <broonie@kernel.org>
Diffstat (limited to 'sound/soc/rockchip/rockchip_spdif.c')
-rw-r--r--sound/soc/rockchip/rockchip_spdif.c6
1 files changed, 4 insertions, 2 deletions
diff --git a/sound/soc/rockchip/rockchip_spdif.c b/sound/soc/rockchip/rockchip_spdif.c
index a38a3029062c..bb09a071a320 100644
--- a/sound/soc/rockchip/rockchip_spdif.c
+++ b/sound/soc/rockchip/rockchip_spdif.c
@@ -152,8 +152,10 @@ static int rk_spdif_trigger(struct snd_pcm_substream *substream,
case SNDRV_PCM_TRIGGER_RESUME:
case SNDRV_PCM_TRIGGER_PAUSE_RELEASE:
ret = regmap_update_bits(spdif->regmap, SPDIF_DMACR,
- SPDIF_DMACR_TDE_ENABLE,
- SPDIF_DMACR_TDE_ENABLE);
+ SPDIF_DMACR_TDE_ENABLE |
+ SPDIF_DMACR_TDL_MASK,
+ SPDIF_DMACR_TDE_ENABLE |
+ SPDIF_DMACR_TDL(16));
if (ret != 0)
return ret;