Message ID | 1573133093-28208-6-git-send-email-Vishnuvardhanrao.Ravulapati@amd.com (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
Series | [v3,1/6] ASoC: amd:Create multiple I2S platform device endpoints | expand |
On 11/7/19 7:24 AM, Ravulapati Vishnu vardhan rao wrote: > whenever audio data equal to I2S-SP fifo watermark level is > produced/consumed, interrupt is generated. > > Signed-off-by: Ravulapati Vishnu vardhan rao <Vishnuvardhanrao.Ravulapati@amd.com> > --- > sound/soc/amd/raven/acp3x-pcm-dma.c | 14 ++++++++++++++ > 1 file changed, 14 insertions(+) > > diff --git a/sound/soc/amd/raven/acp3x-pcm-dma.c b/sound/soc/amd/raven/acp3x-pcm-dma.c > index 8fab505..629a32f 100644 > --- a/sound/soc/amd/raven/acp3x-pcm-dma.c > +++ b/sound/soc/amd/raven/acp3x-pcm-dma.c > @@ -176,6 +176,13 @@ static irqreturn_t i2s_irq_handler(int irq, void *dev_id) > snd_pcm_period_elapsed(rv_i2s_data->play_stream); > play_flag = 1; > } > + if ((val & BIT(I2S_TX_THRESHOLD)) && > + rv_i2s_data->i2ssp_play_stream) { > + rv_writel(BIT(I2S_TX_THRESHOLD), > + rv_i2s_data->acp3x_base + mmACP_EXTERNAL_INTR_STAT); > + snd_pcm_period_elapsed(rv_i2s_data->i2ssp_play_stream); The commit message looks odd. If you have a DMA and signal a period elapsed, is this really a case where the FIFO level reaches a watermark? Usually the FIFOs are somewhat small and there are multiple DMA transfers per period?
diff --git a/sound/soc/amd/raven/acp3x-pcm-dma.c b/sound/soc/amd/raven/acp3x-pcm-dma.c index 8fab505..629a32f 100644 --- a/sound/soc/amd/raven/acp3x-pcm-dma.c +++ b/sound/soc/amd/raven/acp3x-pcm-dma.c @@ -176,6 +176,13 @@ static irqreturn_t i2s_irq_handler(int irq, void *dev_id) snd_pcm_period_elapsed(rv_i2s_data->play_stream); play_flag = 1; } + if ((val & BIT(I2S_TX_THRESHOLD)) && + rv_i2s_data->i2ssp_play_stream) { + rv_writel(BIT(I2S_TX_THRESHOLD), + rv_i2s_data->acp3x_base + mmACP_EXTERNAL_INTR_STAT); + snd_pcm_period_elapsed(rv_i2s_data->i2ssp_play_stream); + play_flag = 1; + } if ((val & BIT(BT_RX_THRESHOLD)) && rv_i2s_data->capture_stream) { rv_writel(BIT(BT_RX_THRESHOLD), rv_i2s_data->acp3x_base + @@ -183,6 +190,13 @@ static irqreturn_t i2s_irq_handler(int irq, void *dev_id) snd_pcm_period_elapsed(rv_i2s_data->capture_stream); cap_flag = 1; } + if ((val & BIT(I2S_RX_THRESHOLD)) && + rv_i2s_data->i2ssp_capture_stream) { + rv_writel(BIT(I2S_RX_THRESHOLD), + rv_i2s_data->acp3x_base + mmACP_EXTERNAL_INTR_STAT); + snd_pcm_period_elapsed(rv_i2s_data->i2ssp_capture_stream); + cap_flag = 1; + } if (play_flag | cap_flag) return IRQ_HANDLED;
whenever audio data equal to I2S-SP fifo watermark level is produced/consumed, interrupt is generated. Signed-off-by: Ravulapati Vishnu vardhan rao <Vishnuvardhanrao.Ravulapati@amd.com> --- sound/soc/amd/raven/acp3x-pcm-dma.c | 14 ++++++++++++++ 1 file changed, 14 insertions(+)