[alsa-devel] [PATCH] ASoC: fsl_sai: fix no frame clk in master mode

Nicolin Chen nicoleotsuka at gmail.com
Wed Aug 12 05:53:25 CEST 2015


On Wed, Aug 12, 2015 at 10:25:45AM +0800, Zidan Wang wrote:
> After several open/close sai test with ctrl+c, there will be I/O error.
> The SAI can't work anymore, can't recover. There will be no frame clock.
> With adding the software reset in trigger stop, the issue can be fixed.

It doesn't look like a decent fix to me. Is it the only fix that
IC team suggests? And why put this reset in the trigger function.
Your MEGA fast patch has already included a software reset in the
PM runtime functions. When dealing with CTRL+C test cases, that
software reset should have worked as well.

Nicolin

> Signed-off-by: Zidan Wang <zidan.wang at freescale.com>
> ---
>  sound/soc/fsl/fsl_sai.c | 7 +++++++
>  1 file changed, 7 insertions(+)
> 
> diff --git a/sound/soc/fsl/fsl_sai.c b/sound/soc/fsl/fsl_sai.c
> index 5c737f1..6a947dc 100644
> --- a/sound/soc/fsl/fsl_sai.c
> +++ b/sound/soc/fsl/fsl_sai.c
> @@ -504,6 +504,13 @@ static int fsl_sai_trigger(struct snd_pcm_substream *substream, int cmd,
>  					   FSL_SAI_CSR_FR, FSL_SAI_CSR_FR);
>  			regmap_update_bits(sai->regmap, FSL_SAI_RCSR,
>  					   FSL_SAI_CSR_FR, FSL_SAI_CSR_FR);
> +
> +			/* Software Reset for both Tx and Rx */
> +			regmap_write(sai->regmap, FSL_SAI_TCSR, FSL_SAI_CSR_SR);
> +			regmap_write(sai->regmap, FSL_SAI_RCSR, FSL_SAI_CSR_SR);
> +			/* Clear SR bit to finish the reset */
> +			regmap_write(sai->regmap, FSL_SAI_TCSR, 0);
> +			regmap_write(sai->regmap, FSL_SAI_RCSR, 0);
>  		}
>  		break;
>  	default:
> -- 
> 1.9.1
> 


More information about the Alsa-devel mailing list