OSDN Git Service

ASoC: amd: Handle ACP3x I2S-SP Interrupts.
authorRavulapati Vishnu vardhan rao <Vishnuvardhanrao.Ravulapati@amd.com>
Sat, 28 Dec 2019 13:40:58 +0000 (19:10 +0530)
committerMark Brown <broonie@kernel.org>
Tue, 31 Dec 2019 00:22:59 +0000 (00:22 +0000)
Enabled support for I2S-SP interrupt handling.
Previous to this implementation, driver supports only interrupts
on BT instance.

Signed-off-by: Ravulapati Vishnu vardhan rao <Vishnuvardhanrao.Ravulapati@amd.com>
Link: https://lore.kernel.org/r/1577540460-21438-5-git-send-email-Vishnuvardhanrao.Ravulapati@amd.com
Signed-off-by: Mark Brown <broonie@kernel.org>
sound/soc/amd/raven/acp3x-pcm-dma.c

index 040a8be..c5d7f35 100644 (file)
@@ -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;