Message ID | 1396322227-482-3-git-send-email-Guangyu.Chen@freescale.com (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
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@freescale.com> > > Acked-by: Xiubo Li <Li.Xiubo@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
On Tue, Apr 01, 2014 at 11:48:16AM +0800, Wang Dongsheng-B40534 wrote: > > > > -----Original Message----- > > From: Nicolin Chen [mailto:Guangyu.Chen@freescale.com] > > Sent: Tuesday, April 01, 2014 11:14 AM > > To: Wang Dongsheng-B40534 > > Cc: broonie@kernel.org; alsa-devel@alsa-project.org; Xiubo Li-B47053; linuxppc- > > dev@lists.ozlabs.org; linux-kernel@vger.kernel.org; timur@tabi.org > > Subject: Re: [PATCH bisect 2/2] ASoC: fsl_sai: Separately enable interrupts for > > Tx and Rx streams > > > > 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@freescale.com> > > > > Acked-by: Xiubo Li <Li.Xiubo@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. > > > ~FSL_SAI_MASK is better than 0x0. And you also replace 0xffffffff. I would later send a patch to reset SAI for a true init instead of these lines but not within this patch as it's focusing on the interrupts enabling. So please don't grasp the mask here. Just let me continue. Thank you, Nicolin Chen
On Tue, Apr 01, 2014 at 11:17:07AM +0800, Nicolin Chen wrote: > 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. This still doesn't apply against fsl-sai (nor for-next).
On Tue, Apr 01, 2014 at 01:07:15PM +0100, Mark Brown wrote: > On Tue, Apr 01, 2014 at 11:17:07AM +0800, Nicolin Chen wrote: > > 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. > > This still doesn't apply against fsl-sai (nor for-next). Sir, I just rebased my for-next branch again and found that it's missing two applied patches: "ASoC: fsl_sai: Add isr to deal with error flag" and "ASoC: fsl_sai: Improve fsl_sai_isr()", so that's why this PATCH-2 could not be applied against it as it needs the macro that's included in the patch "ASoC: fsl_sai: Add isr to deal with error flag". What should I do now? Thank you, Nicolin
On Tue, Apr 01, 2014 at 09:21:57PM +0800, Nicolin Chen wrote: > Sir, I just rebased my for-next branch again and found that it's missing > two applied patches: "ASoC: fsl_sai: Add isr to deal with error flag" and > "ASoC: fsl_sai: Improve fsl_sai_isr()", so that's why this PATCH-2 could > not be applied against it as it needs the macro that's included in the > patch "ASoC: fsl_sai: Add isr to deal with error flag". Ah, those dropped out of -next due to the merge window. I've applied your new patch now.
On Tue, Apr 01, 2014 at 05:42:54PM +0100, Mark Brown wrote: > On Tue, Apr 01, 2014 at 09:21:57PM +0800, Nicolin Chen wrote: > > > Sir, I just rebased my for-next branch again and found that it's missing > > two applied patches: "ASoC: fsl_sai: Add isr to deal with error flag" and > > "ASoC: fsl_sai: Improve fsl_sai_isr()", so that's why this PATCH-2 could > > not be applied against it as it needs the macro that's included in the > > patch "ASoC: fsl_sai: Add isr to deal with error flag". > > Ah, those dropped out of -next due to the merge window. I've applied > your new patch now. I can find them on the fsl-sai topic now. Thank you.
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); regmap_update_bits(sai->regmap, FSL_SAI_TCR1, FSL_SAI_CR1_RFW_MASK, FSL_SAI_MAXBURST_TX * 2); diff --git a/sound/soc/fsl/fsl_sai.h b/sound/soc/fsl/fsl_sai.h index 64b6fe7..be26d46 100644 --- a/sound/soc/fsl/fsl_sai.h +++ b/sound/soc/fsl/fsl_sai.h @@ -59,4 +59,5 @@ #define FSL_SAI_CSR_FRF BIT(16) #define FSL_SAI_CSR_xIE_SHIFT 8 +#define FSL_SAI_CSR_xIE_MASK (0x1f << FSL_SAI_CSR_xIE_SHIFT) #define FSL_SAI_CSR_WSIE BIT(12) #define FSL_SAI_CSR_SEIE BIT(11)