[alsa-devel] [PATCH 06/13] ASoC: soc-core: merge soc_free_pcm_runtime() and soc_rtd_free()

Sridharan, Ranjani ranjani.sridharan at intel.com
Tue Sep 10 17:33:45 CEST 2019


On Mon, Sep 9, 2019 at 7:10 PM Kuninori Morimoto <
kuninori.morimoto.gx at renesas.com> wrote:

> From: Kuninori Morimoto <kuninori.morimoto.gx at renesas.com>
>
> "rtd"      is handled by soc_xxx_pcm_runtime(), and
> "rtd->dev" is handled by soc_rtd_xxx().
>
> There is no reason to separate these, and it makes code complex.
> We can free these in the same time.
>
> Here soc_rtd_free() (A) which frees rtd->dev is called from
> soc_remove_link_dais() many times (1).
> Then, it is using dev_registered flags to avoid multi kfree() (2).
> This is no longer needed if we can merge these functions.
>
>         static void soc_remove_link_dais(...)
>         {
>                 ...
> (1)             for_each_comp_order(order) {
> (1)                     for_each_card_rtds(card, rtd) {
>
> (A)                             soc_rtd_free(rtd);
>                                 ...
>                         }
>                 }
>         }
>
> (A)     static void soc_rtd_free(...)
>         {
> (2)             if (rtd->dev_registered) {
>                         /* we don't need to call kfree() for rtd->dev */
>                         device_unregister(rtd->dev);
> (2)                     rtd->dev_registered = 0;
>                 }
>         }
>
> This patch merges soc_rtd_free() into soc_free_pcm_runtime().
>
> Signed-off-by: Kuninori Morimoto <kuninori.morimoto.gx at renesas.com>
> ---
>  include/sound/soc.h  |  1 -
>  sound/soc/soc-core.c | 18 ++----------------
>  2 files changed, 2 insertions(+), 17 deletions(-)
>
> diff --git a/include/sound/soc.h b/include/sound/soc.h
> index f264c65..d93cb46 100644
> --- a/include/sound/soc.h
> +++ b/include/sound/soc.h
> @@ -1148,7 +1148,6 @@ struct snd_soc_pcm_runtime {
>         struct list_head component_list; /* list of connected components */
>
>         /* bit field */
> -       unsigned int dev_registered:1;
>         unsigned int pop_wait:1;
>         unsigned int fe_compr:1; /* for Dynamic PCM */
>  };
> diff --git a/sound/soc/soc-core.c b/sound/soc/soc-core.c
> index b550fa9..552f460 100644
> --- a/sound/soc/soc-core.c
> +++ b/sound/soc/soc-core.c
> @@ -368,6 +368,8 @@ static void soc_free_pcm_runtime(struct
> snd_soc_pcm_runtime *rtd)
>
>         kfree(rtd->codec_dais);
>         snd_soc_rtdcom_del_all(rtd);
> +       if (rtd->dev)
> +               device_unregister(rtd->dev); /* soc_release_rtd_dev */
>         list_del(&rtd->list);
>         kfree(rtd);
>  }
> @@ -434,8 +436,6 @@ static struct snd_soc_pcm_runtime *soc_new_pcm_runtime(
>         rtd->num = card->num_rtd;
>         card->num_rtd++;
>
> -       rtd->dev_registered = 1;
> -
>         return rtd;
>
>  free_rtd:
> @@ -1169,7 +1169,6 @@ static int soc_probe_dai(struct snd_soc_dai *dai,
> int order)
>         return 0;
>  }
>
> -static void soc_rtd_free(struct snd_soc_pcm_runtime *rtd); /* remove me */
>  static void soc_remove_link_dais(struct snd_soc_card *card)
>  {
>         int i;
> @@ -1179,10 +1178,6 @@ static void soc_remove_link_dais(struct
> snd_soc_card *card)
>
>         for_each_comp_order(order) {
>                 for_each_card_rtds(card, rtd) {
> -
> -                       /* finalize rtd device */
> -                       soc_rtd_free(rtd);
> -
>                         /* remove the CODEC DAI */
>                         for_each_rtd_codec_dai(rtd, i, codec_dai)
>                                 soc_remove_dai(codec_dai, order);
> @@ -1460,15 +1455,6 @@ void snd_soc_remove_dai_link(struct snd_soc_card
> *card,
>  }
>  EXPORT_SYMBOL_GPL(snd_soc_remove_dai_link);
>
> -static void soc_rtd_free(struct snd_soc_pcm_runtime *rtd)
> -{
> -       if (rtd->dev_registered) {
> -               /* we don't need to call kfree() for rtd->dev */
>
Morimoto-san,

I think it is useful to keep this comment when you move soc_rtd_free() to
soc_free_pcm_runtime().

Thanks,
Ranjani

> -               device_unregister(rtd->dev);
> -               rtd->dev_registered = 0;
> -       }
> -}
> -
>  static int soc_link_dai_pcm_new(struct snd_soc_dai **dais, int num_dais,
>                                 struct snd_soc_pcm_runtime *rtd)
>  {
> --
> 2.7.4
>
> _______________________________________________
> Alsa-devel mailing list
> Alsa-devel at alsa-project.org
> https://mailman.alsa-project.org/mailman/listinfo/alsa-devel
>


More information about the Alsa-devel mailing list