ASoC: soc-core: add new snd_soc_flush_all_delayed_work()
authorKuninori Morimoto <kuninori.morimoto.gx@renesas.com>
Mon, 21 Jan 2019 00:32:37 +0000 (09:32 +0900)
committerMark Brown <broonie@kernel.org>
Mon, 21 Jan 2019 18:13:04 +0000 (18:13 +0000)
soc-core is calling flush_delayed_work() many times for same purpose.
Same code in many places makes code un-understandable.
This patch adds new snd_soc_flush_all_delayed_work() for it.

Signed-off-by: Kuninori Morimoto <kuninori.morimoto.gx@renesas.com>
Signed-off-by: Mark Brown <broonie@kernel.org>
sound/soc/soc-core.c

index 2c63921..eeb794d 100644 (file)
@@ -425,6 +425,14 @@ struct snd_soc_pcm_runtime *snd_soc_get_pcm_runtime(struct snd_soc_card *card,
 }
 EXPORT_SYMBOL_GPL(snd_soc_get_pcm_runtime);
 
+static void snd_soc_flush_all_delayed_work(struct snd_soc_card *card)
+{
+       struct snd_soc_pcm_runtime *rtd;
+
+       for_each_card_rtds(card, rtd)
+               flush_delayed_work(&rtd->delayed_work);
+}
+
 static void codec2codec_close_delayed_work(struct work_struct *work)
 {
        /*
@@ -494,8 +502,7 @@ int snd_soc_suspend(struct device *dev)
        }
 
        /* close any waiting streams */
-       for_each_card_rtds(card, rtd)
-               flush_delayed_work(&rtd->delayed_work);
+       snd_soc_flush_all_delayed_work(card);
 
        for_each_card_rtds(card, rtd) {
 
@@ -2228,11 +2235,8 @@ static int soc_probe(struct platform_device *pdev)
 
 static int soc_cleanup_card_resources(struct snd_soc_card *card)
 {
-       struct snd_soc_pcm_runtime *rtd;
-
        /* make sure any delayed work runs */
-       for_each_card_rtds(card, rtd)
-               flush_delayed_work(&rtd->delayed_work);
+       snd_soc_flush_all_delayed_work(card);
 
        /* free the ALSA card at first; this syncs with pending operations */
        snd_card_free(card->snd_card);
@@ -2275,8 +2279,7 @@ int snd_soc_poweroff(struct device *dev)
         * Flush out pmdown_time work - we actually do want to run it
         * now, we're shutting down so no imminent restart.
         */
-       for_each_card_rtds(card, rtd)
-               flush_delayed_work(&rtd->delayed_work);
+       snd_soc_flush_all_delayed_work(card);
 
        snd_soc_dapm_shutdown(card);