Otherwise we may end up with shutting down I2S if shutdown() was called for capture substream, but playback is still running. Signed-off-by: Vasily Khoruzhick <anarsoul@xxxxxxxxx> --- sound/soc/sunxi/sun4i-i2s.c | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/sound/soc/sunxi/sun4i-i2s.c b/sound/soc/sunxi/sun4i-i2s.c index a9ea329dc046..787b67c4f845 100644 --- a/sound/soc/sunxi/sun4i-i2s.c +++ b/sound/soc/sunxi/sun4i-i2s.c @@ -649,6 +649,9 @@ static int sun4i_i2s_startup(struct snd_pcm_substream *substream, { struct sun4i_i2s *i2s = snd_soc_dai_get_drvdata(dai); + if (dai->active) + return 0; + /* Enable the whole hardware block */ regmap_update_bits(i2s->regmap, SUN4I_I2S_CTRL_REG, SUN4I_I2S_CTRL_GL_EN, SUN4I_I2S_CTRL_GL_EN); @@ -667,6 +670,9 @@ static void sun4i_i2s_shutdown(struct snd_pcm_substream *substream, { struct sun4i_i2s *i2s = snd_soc_dai_get_drvdata(dai); + if (dai->active) + return; + clk_disable_unprepare(i2s->mod_clk); /* Disable our output lines */ -- 2.19.0 _______________________________________________ Alsa-devel mailing list Alsa-devel@xxxxxxxxxxxxxxxx http://mailman.alsa-project.org/mailman/listinfo/alsa-devel