Skip to content

Commit e26387e

Browse files
morimotobroonie
authored andcommitted
ASoC: renesas: msiof: ignore 1st FSERR
Renesas have tried to minimize the occurrence of FSERR errors as much as possible, but unfortunately we cannot remove them completely, because MSIOF might setup its register during CLK/SYNC are inputed. It can be happen because MSIOF is working as Clock/Frame Consumer. Ignore 1st FSERR which we can do nothing Signed-off-by: Kuninori Morimoto <kuninori.morimoto.gx@renesas.com> Tested-by: Yusuke Goda <yusuke.goda.sx@renesas.com> Link: https://patch.msgid.link/874isryutg.wl-kuninori.morimoto.gx@renesas.com Signed-off-by: Mark Brown <broonie@kernel.org>
1 parent 8c363f6 commit e26387e

1 file changed

Lines changed: 26 additions & 2 deletions

File tree

sound/soc/renesas/rcar/msiof.c

Lines changed: 26 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -65,6 +65,16 @@
6565
* how Codec driver start it.
6666
*/
6767

68+
/*
69+
* [NOTE-FSERR]
70+
*
71+
* We can't remove all FSERR.
72+
*
73+
* Renesas have tried to minimize the occurrence of FSERR errors as much as possible, but
74+
* unfortunately we cannot remove them completely, because MSIOF might setup its register during
75+
* CLK/SYNC are inputed. It can be happen because MSIOF is working as Clock/Frame Consumer.
76+
*/
77+
6878
#include <linux/module.h>
6979
#include <linux/of.h>
7080
#include <linux/of_dma.h>
@@ -186,8 +196,13 @@ static int msiof_hw_start(struct snd_soc_component *component,
186196

187197
priv->count++;
188198

189-
/* reset errors */
190-
priv->err_syc[substream->stream] =
199+
/*
200+
* Reset errors. ignore 1st FSERR
201+
*
202+
* see
203+
* [NOTE-FSERR]
204+
*/
205+
priv->err_syc[substream->stream] = -1;
191206
priv->err_ovf[substream->stream] =
192207
priv->err_udf[substream->stream] = 0;
193208

@@ -279,6 +294,15 @@ static int msiof_hw_stop(struct snd_soc_component *component,
279294
/* Stop DMAC */
280295
snd_dmaengine_pcm_trigger(substream, cmd);
281296

297+
/*
298+
* Ignore 1st FSERR
299+
*
300+
* see
301+
* [NOTE-FSERR]
302+
*/
303+
if (priv->err_syc[substream->stream] < 0)
304+
priv->err_syc[substream->stream] = 0;
305+
282306
/* indicate error status if exist */
283307
if (priv->err_syc[substream->stream] ||
284308
priv->err_ovf[substream->stream] ||

0 commit comments

Comments
 (0)