diff options
| -rw-r--r-- | sound/aoa/core/gpio-feature.c | 7 | ||||
| -rw-r--r-- | sound/aoa/core/gpio-pmf.c | 7 | ||||
| -rw-r--r-- | sound/i2c/other/ak4113.c | 5 | ||||
| -rw-r--r-- | sound/i2c/other/ak4114.c | 5 | ||||
| -rw-r--r-- | sound/pci/ac97/ac97_codec.c | 6 | ||||
| -rw-r--r-- | sound/pci/hda/patch_via.c | 3 | ||||
| -rw-r--r-- | sound/pci/oxygen/oxygen_lib.c | 6 | ||||
| -rw-r--r-- | sound/soc/codecs/wm8350.c | 9 | ||||
| -rw-r--r-- | sound/soc/codecs/wm8753.c | 21 | ||||
| -rw-r--r-- | sound/soc/soc-core.c | 25 | 
10 files changed, 22 insertions, 72 deletions
diff --git a/sound/aoa/core/gpio-feature.c b/sound/aoa/core/gpio-feature.c index de8e03afa97..faa31749054 100644 --- a/sound/aoa/core/gpio-feature.c +++ b/sound/aoa/core/gpio-feature.c @@ -287,10 +287,9 @@ static void ftr_gpio_exit(struct gpio_runtime *rt)  		free_irq(linein_detect_irq, &rt->line_in_notify);  	if (rt->line_out_notify.gpio_private)  		free_irq(lineout_detect_irq, &rt->line_out_notify); -	cancel_delayed_work(&rt->headphone_notify.work); -	cancel_delayed_work(&rt->line_in_notify.work); -	cancel_delayed_work(&rt->line_out_notify.work); -	flush_scheduled_work(); +	cancel_delayed_work_sync(&rt->headphone_notify.work); +	cancel_delayed_work_sync(&rt->line_in_notify.work); +	cancel_delayed_work_sync(&rt->line_out_notify.work);  	mutex_destroy(&rt->headphone_notify.mutex);  	mutex_destroy(&rt->line_in_notify.mutex);  	mutex_destroy(&rt->line_out_notify.mutex); diff --git a/sound/aoa/core/gpio-pmf.c b/sound/aoa/core/gpio-pmf.c index 7e267c9379b..c8d8a1a6f96 100644 --- a/sound/aoa/core/gpio-pmf.c +++ b/sound/aoa/core/gpio-pmf.c @@ -107,10 +107,9 @@ static void pmf_gpio_exit(struct gpio_runtime *rt)  	/* make sure no work is pending before freeing  	 * all things */ -	cancel_delayed_work(&rt->headphone_notify.work); -	cancel_delayed_work(&rt->line_in_notify.work); -	cancel_delayed_work(&rt->line_out_notify.work); -	flush_scheduled_work(); +	cancel_delayed_work_sync(&rt->headphone_notify.work); +	cancel_delayed_work_sync(&rt->line_in_notify.work); +	cancel_delayed_work_sync(&rt->line_out_notify.work);  	mutex_destroy(&rt->headphone_notify.mutex);  	mutex_destroy(&rt->line_in_notify.mutex); diff --git a/sound/i2c/other/ak4113.c b/sound/i2c/other/ak4113.c index 971a84a4fa7..c424d329f80 100644 --- a/sound/i2c/other/ak4113.c +++ b/sound/i2c/other/ak4113.c @@ -57,8 +57,7 @@ static void snd_ak4113_free(struct ak4113 *chip)  {  	chip->init = 1;	/* don't schedule new work */  	mb(); -	cancel_delayed_work(&chip->work); -	flush_scheduled_work(); +	cancel_delayed_work_sync(&chip->work);  	kfree(chip);  } @@ -141,7 +140,7 @@ void snd_ak4113_reinit(struct ak4113 *chip)  {  	chip->init = 1;  	mb(); -	flush_scheduled_work(); +	flush_delayed_work_sync(&chip->work);  	ak4113_init_regs(chip);  	/* bring up statistics / event queing */  	chip->init = 0; diff --git a/sound/i2c/other/ak4114.c b/sound/i2c/other/ak4114.c index 0341451f814..d9fb537b0b9 100644 --- a/sound/i2c/other/ak4114.c +++ b/sound/i2c/other/ak4114.c @@ -67,8 +67,7 @@ static void snd_ak4114_free(struct ak4114 *chip)  {  	chip->init = 1;	/* don't schedule new work */  	mb(); -	cancel_delayed_work(&chip->work); -	flush_scheduled_work(); +	cancel_delayed_work_sync(&chip->work);  	kfree(chip);  } @@ -154,7 +153,7 @@ void snd_ak4114_reinit(struct ak4114 *chip)  {  	chip->init = 1;  	mb(); -	flush_scheduled_work(); +	flush_delayed_work_sync(&chip->work);  	ak4114_init_regs(chip);  	/* bring up statistics / event queing */  	chip->init = 0; diff --git a/sound/pci/ac97/ac97_codec.c b/sound/pci/ac97/ac97_codec.c index a7630e9edf8..0fc614ce16c 100644 --- a/sound/pci/ac97/ac97_codec.c +++ b/sound/pci/ac97/ac97_codec.c @@ -1014,8 +1014,7 @@ static int snd_ac97_free(struct snd_ac97 *ac97)  {  	if (ac97) {  #ifdef CONFIG_SND_AC97_POWER_SAVE -		cancel_delayed_work(&ac97->power_work); -		flush_scheduled_work(); +		cancel_delayed_work_sync(&ac97->power_work);  #endif  		snd_ac97_proc_done(ac97);  		if (ac97->bus) @@ -2456,8 +2455,7 @@ void snd_ac97_suspend(struct snd_ac97 *ac97)  	if (ac97->build_ops->suspend)  		ac97->build_ops->suspend(ac97);  #ifdef CONFIG_SND_AC97_POWER_SAVE -	cancel_delayed_work(&ac97->power_work); -	flush_scheduled_work(); +	cancel_delayed_work_sync(&ac97->power_work);  #endif  	snd_ac97_powerdown(ac97);  } diff --git a/sound/pci/hda/patch_via.c b/sound/pci/hda/patch_via.c index d1c3f8defc4..7f4852a478a 100644 --- a/sound/pci/hda/patch_via.c +++ b/sound/pci/hda/patch_via.c @@ -263,8 +263,7 @@ static void vt1708_stop_hp_work(struct via_spec *spec)  		return;  	snd_hda_codec_write(spec->codec, 0x1, 0, 0xf81,  			    !spec->vt1708_jack_detectect); -	cancel_delayed_work(&spec->vt1708_hp_work); -	flush_scheduled_work(); +	cancel_delayed_work_sync(&spec->vt1708_hp_work);  } diff --git a/sound/pci/oxygen/oxygen_lib.c b/sound/pci/oxygen/oxygen_lib.c index e5ebe56fb0c..969605fbcb7 100644 --- a/sound/pci/oxygen/oxygen_lib.c +++ b/sound/pci/oxygen/oxygen_lib.c @@ -557,7 +557,8 @@ static void oxygen_card_free(struct snd_card *card)  	oxygen_shutdown(chip);  	if (chip->irq >= 0)  		free_irq(chip->irq, chip); -	flush_scheduled_work(); +	flush_work_sync(&chip->spdif_input_bits_work); +	flush_work_sync(&chip->gpio_work);  	chip->model.cleanup(chip);  	kfree(chip->model_data);  	mutex_destroy(&chip->mutex); @@ -733,7 +734,8 @@ int oxygen_pci_suspend(struct pci_dev *pci, pm_message_t state)  	spin_unlock_irq(&chip->reg_lock);  	synchronize_irq(chip->irq); -	flush_scheduled_work(); +	flush_work_sync(&chip->spdif_input_bits_work); +	flush_work_sync(&chip->gpio_work);  	chip->interrupt_mask = saved_interrupt_mask;  	pci_disable_device(pci); diff --git a/sound/soc/codecs/wm8350.c b/sound/soc/codecs/wm8350.c index 7611add7f8c..b3e9fac172e 100644 --- a/sound/soc/codecs/wm8350.c +++ b/sound/soc/codecs/wm8350.c @@ -1626,7 +1626,6 @@ static int  wm8350_codec_remove(struct snd_soc_codec *codec)  {  	struct wm8350_data *priv = snd_soc_codec_get_drvdata(codec);  	struct wm8350 *wm8350 = dev_get_platdata(codec->dev); -	int ret;  	wm8350_clear_bits(wm8350, WM8350_JACK_DETECT,  			  WM8350_JDL_ENA | WM8350_JDR_ENA); @@ -1641,15 +1640,9 @@ static int  wm8350_codec_remove(struct snd_soc_codec *codec)  	priv->hpr.jack = NULL;  	priv->mic.jack = NULL; -	/* cancel any work waiting to be queued. */ -	ret = cancel_delayed_work(&codec->delayed_work); -  	/* if there was any work waiting then we run it now and  	 * wait for its completion */ -	if (ret) { -		schedule_delayed_work(&codec->delayed_work, 0); -		flush_scheduled_work(); -	} +	flush_delayed_work_sync(&codec->delayed_work);  	wm8350_set_bias_level(codec, SND_SOC_BIAS_OFF); diff --git a/sound/soc/codecs/wm8753.c b/sound/soc/codecs/wm8753.c index 8f679a13f2b..84a23675cba 100644 --- a/sound/soc/codecs/wm8753.c +++ b/sound/soc/codecs/wm8753.c @@ -1526,25 +1526,6 @@ static int wm8753_resume(struct snd_soc_codec *codec)  	return 0;  } -/* - * This function forces any delayed work to be queued and run. - */ -static int run_delayed_work(struct delayed_work *dwork) -{ -	int ret; - -	/* cancel any work waiting to be queued. */ -	ret = cancel_delayed_work(dwork); - -	/* if there was any work waiting then we run it now and -	 * wait for it's completion */ -	if (ret) { -		schedule_delayed_work(dwork, 0); -		flush_scheduled_work(); -	} -	return ret; -} -  static int wm8753_probe(struct snd_soc_codec *codec)  {  	struct wm8753_priv *wm8753 = snd_soc_codec_get_drvdata(codec); @@ -1604,7 +1585,7 @@ static int wm8753_probe(struct snd_soc_codec *codec)  /* power down chip */  static int wm8753_remove(struct snd_soc_codec *codec)  { -	run_delayed_work(&codec->delayed_work); +	flush_delayed_work_sync(&codec->delayed_work);  	wm8753_set_bias_level(codec, SND_SOC_BIAS_OFF);  	return 0; diff --git a/sound/soc/soc-core.c b/sound/soc/soc-core.c index 441285ade02..b54ea9a0a1d 100644 --- a/sound/soc/soc-core.c +++ b/sound/soc/soc-core.c @@ -67,25 +67,6 @@ static int pmdown_time = 5000;  module_param(pmdown_time, int, 0);  MODULE_PARM_DESC(pmdown_time, "DAPM stream powerdown time (msecs)"); -/* - * This function forces any delayed work to be queued and run. - */ -static int run_delayed_work(struct delayed_work *dwork) -{ -	int ret; - -	/* cancel any work waiting to be queued. */ -	ret = cancel_delayed_work(dwork); - -	/* if there was any work waiting then we run it now and -	 * wait for it's completion */ -	if (ret) { -		schedule_delayed_work(dwork, 0); -		flush_scheduled_work(); -	} -	return ret; -} -  /* codec register dump */  static ssize_t soc_codec_reg_show(struct snd_soc_codec *codec, char *buf)  { @@ -1016,7 +997,7 @@ static int soc_suspend(struct device *dev)  	/* close any waiting streams and save state */  	for (i = 0; i < card->num_rtd; i++) { -		run_delayed_work(&card->rtd[i].delayed_work); +		flush_delayed_work_sync(&card->rtd[i].delayed_work);  		card->rtd[i].codec->suspend_bias_level = card->rtd[i].codec->bias_level;  	} @@ -1687,7 +1668,7 @@ static int soc_remove(struct platform_device *pdev)  		/* make sure any delayed work runs */  		for (i = 0; i < card->num_rtd; i++) {  			struct snd_soc_pcm_runtime *rtd = &card->rtd[i]; -			run_delayed_work(&rtd->delayed_work); +			flush_delayed_work_sync(&rtd->delayed_work);  		}  		/* remove and free each DAI */ @@ -1718,7 +1699,7 @@ static int soc_poweroff(struct device *dev)  	 * now, we're shutting down so no imminent restart. */  	for (i = 0; i < card->num_rtd; i++) {  		struct snd_soc_pcm_runtime *rtd = &card->rtd[i]; -		run_delayed_work(&rtd->delayed_work); +		flush_delayed_work_sync(&rtd->delayed_work);  	}  	snd_soc_dapm_shutdown(card);  |