Commit 65462e44 authored by Kuninori Morimoto's avatar Kuninori Morimoto Committed by Mark Brown

ASoC: soc-core: add new snd_soc_flush_all_delayed_work()

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: default avatarKuninori Morimoto <kuninori.morimoto.gx@renesas.com>
Signed-off-by: default avatarMark Brown <broonie@kernel.org>
parent 910fdcab
...@@ -425,6 +425,14 @@ struct snd_soc_pcm_runtime *snd_soc_get_pcm_runtime(struct snd_soc_card *card, ...@@ -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); 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) static void codec2codec_close_delayed_work(struct work_struct *work)
{ {
/* /*
...@@ -494,8 +502,7 @@ int snd_soc_suspend(struct device *dev) ...@@ -494,8 +502,7 @@ int snd_soc_suspend(struct device *dev)
} }
/* close any waiting streams */ /* close any waiting streams */
for_each_card_rtds(card, rtd) snd_soc_flush_all_delayed_work(card);
flush_delayed_work(&rtd->delayed_work);
for_each_card_rtds(card, rtd) { for_each_card_rtds(card, rtd) {
...@@ -2228,11 +2235,8 @@ static int soc_probe(struct platform_device *pdev) ...@@ -2228,11 +2235,8 @@ static int soc_probe(struct platform_device *pdev)
static int soc_cleanup_card_resources(struct snd_soc_card *card) static int soc_cleanup_card_resources(struct snd_soc_card *card)
{ {
struct snd_soc_pcm_runtime *rtd;
/* make sure any delayed work runs */ /* make sure any delayed work runs */
for_each_card_rtds(card, rtd) snd_soc_flush_all_delayed_work(card);
flush_delayed_work(&rtd->delayed_work);
/* free the ALSA card at first; this syncs with pending operations */ /* free the ALSA card at first; this syncs with pending operations */
snd_card_free(card->snd_card); snd_card_free(card->snd_card);
...@@ -2275,8 +2279,7 @@ int snd_soc_poweroff(struct device *dev) ...@@ -2275,8 +2279,7 @@ int snd_soc_poweroff(struct device *dev)
* Flush out pmdown_time work - we actually do want to run it * Flush out pmdown_time work - we actually do want to run it
* now, we're shutting down so no imminent restart. * now, we're shutting down so no imminent restart.
*/ */
for_each_card_rtds(card, rtd) snd_soc_flush_all_delayed_work(card);
flush_delayed_work(&rtd->delayed_work);
snd_soc_dapm_shutdown(card); snd_soc_dapm_shutdown(card);
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment