ASoC: rsnd: add rsnd_dai_stream_quit()
authorKuninori Morimoto <kuninori.morimoto.gx@renesas.com>
Thu, 21 May 2015 03:49:54 +0000 (03:49 +0000)
committerMark Brown <broonie@kernel.org>
Thu, 21 May 2015 10:58:48 +0000 (11:58 +0100)
Current Renesas R-Car sound driver calls rsnd_dai_stream_init() when
start, but it didn't call paired function. This patch adds
rsnd_dai_stream_quit() for it. This is prepare for interrupt error
status check feature support.

Signed-off-by: Kuninori Morimoto <kuninori.morimoto.gx@renesas.com>
Tested-by: Keita Kobayashi <keita.kobayashi.ym@renesas.com>
Tested by: Cao Minh Hiep <cm-hiep@jinso.co.jp>
Signed-off-by: Mark Brown <broonie@kernel.org>
sound/soc/sh/rcar/core.c

index 405cacdbedfb382ccbabbb9071b2fd38bf86a211..2b7323c92994a6c4eb60b48ae474210f538c8bf3 100644 (file)
@@ -315,7 +315,7 @@ void rsnd_dai_pointer_update(struct rsnd_dai_stream *io, int byte)
        }
 }
 
-static int rsnd_dai_stream_init(struct rsnd_dai_stream *io,
+static void rsnd_dai_stream_init(struct rsnd_dai_stream *io,
                                struct snd_pcm_substream *substream)
 {
        struct snd_pcm_runtime *runtime = substream->runtime;
@@ -327,8 +327,11 @@ static int rsnd_dai_stream_init(struct rsnd_dai_stream *io,
                                  runtime->channels *
                                  samples_to_bytes(runtime, 1);
        io->next_period_byte    = io->byte_per_period;
+}
 
-       return 0;
+static void rsnd_dai_stream_quit(struct rsnd_dai_stream *io)
+{
+       io->substream           = NULL;
 }
 
 static
@@ -363,9 +366,7 @@ static int rsnd_soc_dai_trigger(struct snd_pcm_substream *substream, int cmd,
 
        switch (cmd) {
        case SNDRV_PCM_TRIGGER_START:
-               ret = rsnd_dai_stream_init(io, substream);
-               if (ret < 0)
-                       goto dai_trigger_end;
+               rsnd_dai_stream_init(io, substream);
 
                ret = rsnd_platform_call(priv, dai, start, ssi_id);
                if (ret < 0)
@@ -391,6 +392,8 @@ static int rsnd_soc_dai_trigger(struct snd_pcm_substream *substream, int cmd,
                ret = rsnd_platform_call(priv, dai, stop, ssi_id);
                if (ret < 0)
                        goto dai_trigger_end;
+
+               rsnd_dai_stream_quit(io);
                break;
        default:
                ret = -EINVAL;