[PATCH bisect 2/2] ASoC: fsl_sai: Separately enable interrupts for Tx and Rx streams

Nicolin Chen Guangyu.Chen at freescale.com
Tue Apr 1 14:14:10 EST 2014


On Tue, Apr 01, 2014 at 11:25:02AM +0800, Wang Dongsheng-B40534 wrote:
> > Subject: [PATCH bisect 2/2] ASoC: fsl_sai: Separately enable interrupts for Tx
> > and Rx streams
> > 
> > We only enable one side interrupt for each stream since over/underrun
> > on the opposite stream would be resulted from what we previously did,
> > enabling TERE but remaining FRDE disabled, even though the xrun on the
> > opposite direction will not break the current stream.
> > 
> > Signed-off-by: Nicolin Chen <Guangyu.Chen at freescale.com>
> > Acked-by: Xiubo Li <Li.Xiubo at freescale.com>
> > ---
> >  sound/soc/fsl/fsl_sai.c | 8 ++++++--
> >  sound/soc/fsl/fsl_sai.h | 1 +
> >  2 files changed, 7 insertions(+), 2 deletions(-)
> > 
> > diff --git a/sound/soc/fsl/fsl_sai.c b/sound/soc/fsl/fsl_sai.c
> > index bdfd497..d64c33f 100644
> > --- a/sound/soc/fsl/fsl_sai.c
> > +++ b/sound/soc/fsl/fsl_sai.c
> > @@ -397,4 +397,6 @@ static int fsl_sai_trigger(struct snd_pcm_substream
> > *substream, int cmd,
> > 
> >  		regmap_update_bits(sai->regmap, FSL_SAI_xCSR(tx),
> > +				   FSL_SAI_CSR_xIE_MASK, FSL_SAI_FLAGS);
> > +		regmap_update_bits(sai->regmap, FSL_SAI_xCSR(tx),
> >  				   FSL_SAI_CSR_FRDE, FSL_SAI_CSR_FRDE);
> >  		break;
> > @@ -404,4 +406,6 @@ static int fsl_sai_trigger(struct snd_pcm_substream
> > *substream, int cmd,
> >  		regmap_update_bits(sai->regmap, FSL_SAI_xCSR(tx),
> >  				   FSL_SAI_CSR_FRDE, 0);
> > +		regmap_update_bits(sai->regmap, FSL_SAI_xCSR(tx),
> > +				   FSL_SAI_CSR_xIE_MASK, 0);
> > 
> >  		if (!(tcsr & FSL_SAI_CSR_FRDE || rcsr & FSL_SAI_CSR_FRDE)) {
> > @@ -464,6 +468,6 @@ static int fsl_sai_dai_probe(struct snd_soc_dai *cpu_dai)
> >  	struct fsl_sai *sai = dev_get_drvdata(cpu_dai->dev);
> > 
> > -	regmap_update_bits(sai->regmap, FSL_SAI_TCSR, 0xffffffff, FSL_SAI_FLAGS);
> > -	regmap_update_bits(sai->regmap, FSL_SAI_RCSR, 0xffffffff, FSL_SAI_FLAGS);
> > +	regmap_update_bits(sai->regmap, FSL_SAI_TCSR, 0xffffffff, 0x0);
> > +	regmap_update_bits(sai->regmap, FSL_SAI_RCSR, 0xffffffff, 0x0);
> 
> Why are you remove this macro? Don't use magic number.

It's pretty clear that the so-called magic number is to clear the settings
in the registers for driver init as what this driver did at the first place
-- no offense but I don't think you would ask this if you check the git-log
of the driver.

Thank you,
Nicolin Chen



More information about the Linuxppc-dev mailing list