mirror of
https://github.com/openwrt/openwrt.git
synced 2024-12-24 07:46:48 +00:00
40 lines
1.4 KiB
Diff
40 lines
1.4 KiB
Diff
|
From 2a7fa96feddb63d36d64336a994dc4132e8a5cd4 Mon Sep 17 00:00:00 2001
|
||
|
From: Shengjiu Wang <shengjiu.wang@freescale.com>
|
||
|
Date: Mon, 29 Dec 2014 13:40:08 +0800
|
||
|
Subject: [PATCH] MLK-9974: ASoC: fsl_sai: There is underrun detected in the
|
||
|
beginning sometimes
|
||
|
|
||
|
Write initial words to SAI FIFO to reduce underrun error
|
||
|
|
||
|
Signed-off-by: Shengjiu Wang <shengjiu.wang@freescale.com>
|
||
|
(cherry picked from commit 7ba8ae883d84540fac5ed4147d124399537bc0b3)
|
||
|
(cherry picked from commit f4435f35aa2a97551d2c4a12ca316c354a880f85)
|
||
|
---
|
||
|
sound/soc/fsl/fsl_sai.c | 7 +++++++
|
||
|
1 file changed, 7 insertions(+)
|
||
|
|
||
|
--- a/sound/soc/fsl/fsl_sai.c
|
||
|
+++ b/sound/soc/fsl/fsl_sai.c
|
||
|
@@ -506,7 +506,9 @@ static int fsl_sai_trigger(struct snd_pc
|
||
|
{
|
||
|
struct fsl_sai *sai = snd_soc_dai_get_drvdata(cpu_dai);
|
||
|
bool tx = substream->stream == SNDRV_PCM_STREAM_PLAYBACK;
|
||
|
+ u8 channels = substream->runtime->channels;
|
||
|
u32 xcsr, count = 100;
|
||
|
+ int i;
|
||
|
|
||
|
/*
|
||
|
* Asynchronous mode: Clear SYNC for both Tx and Rx.
|
||
|
@@ -529,6 +531,11 @@ static int fsl_sai_trigger(struct snd_pc
|
||
|
regmap_update_bits(sai->regmap, FSL_SAI_xCSR(tx),
|
||
|
FSL_SAI_CSR_FRDE, FSL_SAI_CSR_FRDE);
|
||
|
|
||
|
+ for (i = 0; tx && i < channels; i++)
|
||
|
+ regmap_write(sai->regmap, FSL_SAI_TDR, 0x0);
|
||
|
+ if (tx)
|
||
|
+ udelay(10);
|
||
|
+
|
||
|
regmap_update_bits(sai->regmap, FSL_SAI_RCSR,
|
||
|
FSL_SAI_CSR_TERE, FSL_SAI_CSR_TERE);
|
||
|
regmap_update_bits(sai->regmap, FSL_SAI_TCSR,
|