diff mbox series

[4/8] ASoC: soc-pcm: add dpcm_fe_dai_clean()

Message ID 878skp97in.wl-kuninori.morimoto.gx@renesas.com (mailing list archive)
State New, archived
Headers show
Series ASoC: soc-pcm cleanup step5 | expand

Commit Message

Kuninori Morimoto Feb. 26, 2020, 6:40 a.m. UTC
From: Kuninori Morimoto <kuninori.morimoto.gx@renesas.com>

dpcm_fe_dai_close() and error case of dpcm_fe_dai_open()
need to do same cleanup operation.
To avoid duplicate code, this patch adds dpcm_fe_dai_clean()
and use it.

Signed-off-by: Kuninori Morimoto <kuninori.morimoto.gx@renesas.com>
---
 sound/soc/soc-pcm.c | 30 ++++++++++++++++--------------
 1 file changed, 16 insertions(+), 14 deletions(-)

Comments

Ranjani Sridharan Feb. 26, 2020, 5:49 p.m. UTC | #1
On Wed, 2020-02-26 at 15:40 +0900, Kuninori Morimoto wrote:
> From: Kuninori Morimoto <kuninori.morimoto.gx@renesas.com>
> 
> dpcm_fe_dai_close() and error case of dpcm_fe_dai_open()
> need to do same cleanup operation.
> To avoid duplicate code, this patch adds dpcm_fe_dai_clean()
> and use it.
> 
> Signed-off-by: Kuninori Morimoto <kuninori.morimoto.gx@renesas.com>
> ---
>  sound/soc/soc-pcm.c | 30 ++++++++++++++++--------------
>  1 file changed, 16 insertions(+), 14 deletions(-)
> 
> diff --git a/sound/soc/soc-pcm.c b/sound/soc/soc-pcm.c
> index 3686dda097e2..d578dbdfa846 100644
> --- a/sound/soc/soc-pcm.c
> +++ b/sound/soc/soc-pcm.c
> @@ -2978,14 +2978,11 @@ int soc_dpcm_runtime_update(struct
> snd_soc_card *card)
>  	return ret;
>  }
>  
> -static int dpcm_fe_dai_close(struct snd_pcm_substream *fe_substream)
> +static void dpcm_fe_dai_clean(struct snd_pcm_substream
> *fe_substream)
The series looks good to me, Morimoto-san. But a minor suggestion if
you're doing a v2 to address other comments. Could you please change
the name of the function above to dpcm_fe_dai_cleanup() instead?

Reviewed-by: Ranjani Sridharan <ranjani.sridharan@linux.intel.com>

Thanks,
Ranjani
Kuninori Morimoto Feb. 27, 2020, 12:13 a.m. UTC | #2
Hi Ranjani

Thank you for your review

> > diff --git a/sound/soc/soc-pcm.c b/sound/soc/soc-pcm.c
> > index 3686dda097e2..d578dbdfa846 100644
> > --- a/sound/soc/soc-pcm.c
> > +++ b/sound/soc/soc-pcm.c
> > @@ -2978,14 +2978,11 @@ int soc_dpcm_runtime_update(struct
> > snd_soc_card *card)
> >  	return ret;
> >  }
> >  
> > -static int dpcm_fe_dai_close(struct snd_pcm_substream *fe_substream)
> > +static void dpcm_fe_dai_clean(struct snd_pcm_substream
> > *fe_substream)
> The series looks good to me, Morimoto-san. But a minor suggestion if
> you're doing a v2 to address other comments. Could you please change
> the name of the function above to dpcm_fe_dai_cleanup() instead?

Yeah, will do.
Thanks

> Reviewed-by: Ranjani Sridharan <ranjani.sridharan@linux.intel.com>

Thank you for your help !!
Best regards
---
Kuninori Morimoto
diff mbox series

Patch

diff --git a/sound/soc/soc-pcm.c b/sound/soc/soc-pcm.c
index 3686dda097e2..d578dbdfa846 100644
--- a/sound/soc/soc-pcm.c
+++ b/sound/soc/soc-pcm.c
@@ -2978,14 +2978,11 @@  int soc_dpcm_runtime_update(struct snd_soc_card *card)
 	return ret;
 }
 
-static int dpcm_fe_dai_close(struct snd_pcm_substream *fe_substream)
+static void dpcm_fe_dai_clean(struct snd_pcm_substream *fe_substream)
 {
 	struct snd_soc_pcm_runtime *fe = fe_substream->private_data;
 	struct snd_soc_dpcm *dpcm;
-	int stream = fe_substream->stream, ret;
-
-	mutex_lock_nested(&fe->card->mutex, SND_SOC_CARD_CLASS_RUNTIME);
-	ret = dpcm_fe_dai_shutdown(fe_substream);
+	int stream = fe_substream->stream;
 
 	/* mark FE's links ready to prune */
 	for_each_dpcm_be(fe, stream, dpcm)
@@ -2994,6 +2991,18 @@  static int dpcm_fe_dai_close(struct snd_pcm_substream *fe_substream)
 	dpcm_be_disconnect(fe, stream);
 
 	fe->dpcm[stream].runtime = NULL;
+}
+
+static int dpcm_fe_dai_close(struct snd_pcm_substream *fe_substream)
+{
+	struct snd_soc_pcm_runtime *fe = fe_substream->private_data;
+	int ret;
+
+	mutex_lock_nested(&fe->card->mutex, SND_SOC_CARD_CLASS_RUNTIME);
+	ret = dpcm_fe_dai_shutdown(fe_substream);
+
+	dpcm_fe_dai_clean(fe_substream);
+
 	mutex_unlock(&fe->card->mutex);
 	return ret;
 }
@@ -3001,7 +3010,6 @@  static int dpcm_fe_dai_close(struct snd_pcm_substream *fe_substream)
 static int dpcm_fe_dai_open(struct snd_pcm_substream *fe_substream)
 {
 	struct snd_soc_pcm_runtime *fe = fe_substream->private_data;
-	struct snd_soc_dpcm *dpcm;
 	struct snd_soc_dapm_widget_list *list;
 	int ret;
 	int stream = fe_substream->stream;
@@ -3021,14 +3029,8 @@  static int dpcm_fe_dai_open(struct snd_pcm_substream *fe_substream)
 	dpcm_process_paths(fe, stream, &list, 1);
 
 	ret = dpcm_fe_dai_startup(fe_substream);
-	if (ret < 0) {
-		/* clean up all links */
-		for_each_dpcm_be(fe, stream, dpcm)
-			dpcm->state = SND_SOC_DPCM_LINK_STATE_FREE;
-
-		dpcm_be_disconnect(fe, stream);
-		fe->dpcm[stream].runtime = NULL;
-	}
+	if (ret < 0)
+		dpcm_fe_dai_clean(fe_substream);
 
 	dpcm_clear_pending_state(fe, stream);
 	dpcm_path_put(&list);