diff options
-rw-r--r-- | sound/soc/sh/rcar/ssi.c | 3 |
1 files changed, 2 insertions, 1 deletions
diff --git a/sound/soc/sh/rcar/ssi.c b/sound/soc/sh/rcar/ssi.c index d26634bde908..4b646124ab8a 100644 --- a/sound/soc/sh/rcar/ssi.c +++ b/sound/soc/sh/rcar/ssi.c | |||
@@ -384,13 +384,14 @@ static irqreturn_t rsnd_ssi_interrupt(int irq, void *data) | |||
384 | struct rsnd_mod *mod = &ssi->mod; | 384 | struct rsnd_mod *mod = &ssi->mod; |
385 | struct rsnd_priv *priv = rsnd_mod_to_priv(mod); | 385 | struct rsnd_priv *priv = rsnd_mod_to_priv(mod); |
386 | struct rsnd_dai_stream *io = rsnd_mod_to_io(mod); | 386 | struct rsnd_dai_stream *io = rsnd_mod_to_io(mod); |
387 | int is_dma = rsnd_ssi_is_dma_mode(mod); | ||
387 | u32 status = rsnd_mod_read(mod, SSISR); | 388 | u32 status = rsnd_mod_read(mod, SSISR); |
388 | 389 | ||
389 | if (!io) | 390 | if (!io) |
390 | return IRQ_NONE; | 391 | return IRQ_NONE; |
391 | 392 | ||
392 | /* PIO only */ | 393 | /* PIO only */ |
393 | if (status & DIRQ) { | 394 | if (!is_dma && (status & DIRQ)) { |
394 | struct snd_pcm_runtime *runtime = rsnd_io_to_runtime(io); | 395 | struct snd_pcm_runtime *runtime = rsnd_io_to_runtime(io); |
395 | u32 *buf = (u32 *)(runtime->dma_area + | 396 | u32 *buf = (u32 *)(runtime->dma_area + |
396 | rsnd_dai_pointer_offset(io, 0)); | 397 | rsnd_dai_pointer_offset(io, 0)); |