Message ID | 006301d0fac4$94eb5890$bec209b0$@tangramtek.com (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
On Tue, Sep 29, 2015 at 10:39:00PM +0800, yitian wrote: > from Designware I2S datasheet, irq is cleared by reading from > TOR/ROR registers, rather than by writing into them. This doesn't apply against current code, please check and resend.
> From: linux-arm-kernel > [mailto:linux-arm-kernel-bounces@lists.infradead.org] On Behalf Of Mark > Brown > Sent: Thursday, October 1, 2015 2:18 AM > To: yitian <yitian.bu@tangramtek.com> > Cc: alsa-devel@alsa-project.org; wsa@the-dreams.de; > linux-kernel@vger.kernel.org; Andrew.Jackson@arm.com; tiwai@suse.com; > lgirdwood@gmail.com; perex@perex.cz; > linux-arm-kernel@lists.infradead.org > Subject: Re: [RESEND PATCH 1/1] ASoC: dwc: correct irq clear method > > On Tue, Sep 29, 2015 at 10:39:00PM +0800, yitian wrote: > > from Designware I2S datasheet, irq is cleared by reading from > > TOR/ROR registers, rather than by writing into them. > > This doesn't apply against current code, please check and resend. Hi Mark: Thanks for your comments. Maybe I misunderstand your meaning. Please correct me. I synced up to latest kernel branch, the code is the same as what this patch was generated. I checked designware I2S spec "version 1.08a June 2014", it specified that the TOR and ROR registers are read only and reading the last bit will clear tx/rx overrun irq. Also I have checked this register by writing its last bit, the overrun irq is not cleared. But if I read the last bit, the overrun irq is cleared. That means the spec is correct. Can you please let me know what else I should double check? Thanks.
On Thu, Oct 01, 2015 at 10:39:09AM +0800, yitian wrote: > > This doesn't apply against current code, please check and resend. > I synced up to latest kernel branch, the code is the same as what this patch > was > generated. The "latest kernel branch" was neither v4.3-rc1 nor my for-next branch, at least as far as git am was concerned, so I couldn't apply the patch.
Hi Mark: > From: alsa-devel-bounces@alsa-project.org > [mailto:alsa-devel-bounces@alsa-project.org] On Behalf Of Mark Brown > Sent: Thursday, October 1, 2015 6:04 PM > To: yitian <yitian.bu@tangramtek.com> > Cc: alsa-devel@alsa-project.org; wsa@the-dreams.de; > linux-kernel@vger.kernel.org; Andrew.Jackson@arm.com; > lgirdwood@gmail.com; tiwai@suse.com; > linux-arm-kernel@lists.infradead.org > Subject: Re: [alsa-devel] [RESEND PATCH 1/1] ASoC: dwc: correct irq clear > method > > On Thu, Oct 01, 2015 at 10:39:09AM +0800, yitian wrote: > > > > This doesn't apply against current code, please check and resend. > > > I synced up to latest kernel branch, the code is the same as what this > patch > > was > > generated. > > The "latest kernel branch" was neither v4.3-rc1 nor my for-next > branch, at least as far as git am was concerned, so I couldn't apply the > patch. I am sorry. I used Linux v4.3-rc3 to generate the patch, and I assumed that was the same as v4.3-rc1. I generated new patch based on next-20151001, please review it again, thanks.
diff --git a/sound/soc/dwc/designware_i2s.c b/sound/soc/dwc/designware_i2s.c index a3e97b4..0d28e3b 100644 --- a/sound/soc/dwc/designware_i2s.c +++ b/sound/soc/dwc/designware_i2s.c @@ -131,10 +131,10 @@ static inline void i2s_clear_irqs(struct dw_i2s_dev *dev, u32 stream) if (stream == SNDRV_PCM_STREAM_PLAYBACK) { for (i = 0; i < 4; i++) - i2s_write_reg(dev->i2s_base, TOR(i), 0); + i2s_read_reg(dev->i2s_base, TOR(i)); } else { for (i = 0; i < 4; i++) - i2s_write_reg(dev->i2s_base, ROR(i), 0); + i2s_read_reg(dev->i2s_base, ROR(i)); } }
from Designware I2S datasheet, irq is cleared by reading from TOR/ROR registers, rather than by writing into them. Signed-off-by: Yitian Bu <yitian.bu@tangramtek.com> --- sound/soc/dwc/designware_i2s.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-)