aboutsummaryrefslogtreecommitdiffstats
path: root/sound
diff options
context:
space:
mode:
Diffstat (limited to 'sound')
-rw-r--r--sound/soc/codecs/sgtl5000.c2
-rw-r--r--sound/soc/codecs/wm8993.c6
-rw-r--r--sound/soc/imx/imx-pcm-dma-mx2.c12
-rw-r--r--sound/soc/soc-core.c4
-rw-r--r--sound/soc/soc-dapm.c2
5 files changed, 19 insertions, 7 deletions
diff --git a/sound/soc/codecs/sgtl5000.c b/sound/soc/codecs/sgtl5000.c
index d7bd91831611..f8863ebb4304 100644
--- a/sound/soc/codecs/sgtl5000.c
+++ b/sound/soc/codecs/sgtl5000.c
@@ -1457,5 +1457,5 @@ static void __exit sgtl5000_exit(void)
1457module_exit(sgtl5000_exit); 1457module_exit(sgtl5000_exit);
1458 1458
1459MODULE_DESCRIPTION("Freescale SGTL5000 ALSA SoC Codec Driver"); 1459MODULE_DESCRIPTION("Freescale SGTL5000 ALSA SoC Codec Driver");
1460MODULE_AUTHOR("Zeng Zhaoming <zhaoming.zeng@freescale.com>"); 1460MODULE_AUTHOR("Zeng Zhaoming <zengzm.kernel@gmail.com>");
1461MODULE_LICENSE("GPL"); 1461MODULE_LICENSE("GPL");
diff --git a/sound/soc/codecs/wm8993.c b/sound/soc/codecs/wm8993.c
index 2b40c93601ed..7c7fd925db8d 100644
--- a/sound/soc/codecs/wm8993.c
+++ b/sound/soc/codecs/wm8993.c
@@ -444,6 +444,12 @@ static int _wm8993_set_fll(struct snd_soc_codec *codec, int fll_id, int source,
444 /* Enable the FLL */ 444 /* Enable the FLL */
445 snd_soc_write(codec, WM8993_FLL_CONTROL_1, reg1 | WM8993_FLL_ENA); 445 snd_soc_write(codec, WM8993_FLL_CONTROL_1, reg1 | WM8993_FLL_ENA);
446 446
447 /* Both overestimates */
448 if (Fref < 1000000)
449 msleep(3);
450 else
451 msleep(1);
452
447 dev_dbg(codec->dev, "FLL enabled at %dHz->%dHz\n", Fref, Fout); 453 dev_dbg(codec->dev, "FLL enabled at %dHz->%dHz\n", Fref, Fout);
448 454
449 wm8993->fll_fref = Fref; 455 wm8993->fll_fref = Fref;
diff --git a/sound/soc/imx/imx-pcm-dma-mx2.c b/sound/soc/imx/imx-pcm-dma-mx2.c
index aecdba9f65a1..5780c9b9d569 100644
--- a/sound/soc/imx/imx-pcm-dma-mx2.c
+++ b/sound/soc/imx/imx-pcm-dma-mx2.c
@@ -88,11 +88,13 @@ static int imx_ssi_dma_alloc(struct snd_pcm_substream *substream,
88 iprtd->dma_data.dma_request = dma_params->dma; 88 iprtd->dma_data.dma_request = dma_params->dma;
89 89
90 /* Try to grab a DMA channel */ 90 /* Try to grab a DMA channel */
91 dma_cap_zero(mask); 91 if (!iprtd->dma_chan) {
92 dma_cap_set(DMA_SLAVE, mask); 92 dma_cap_zero(mask);
93 iprtd->dma_chan = dma_request_channel(mask, filter, iprtd); 93 dma_cap_set(DMA_SLAVE, mask);
94 if (!iprtd->dma_chan) 94 iprtd->dma_chan = dma_request_channel(mask, filter, iprtd);
95 return -EINVAL; 95 if (!iprtd->dma_chan)
96 return -EINVAL;
97 }
96 98
97 switch (params_format(params)) { 99 switch (params_format(params)) {
98 case SNDRV_PCM_FORMAT_S16_LE: 100 case SNDRV_PCM_FORMAT_S16_LE:
diff --git a/sound/soc/soc-core.c b/sound/soc/soc-core.c
index 3986520b4677..b5ecf6d23214 100644
--- a/sound/soc/soc-core.c
+++ b/sound/soc/soc-core.c
@@ -907,6 +907,10 @@ static void soc_remove_dai_link(struct snd_soc_card *card, int num, int order)
907 if (err < 0) 907 if (err < 0)
908 printk(KERN_ERR "asoc: failed to remove %s\n", platform->name); 908 printk(KERN_ERR "asoc: failed to remove %s\n", platform->name);
909 } 909 }
910
911 /* Make sure all DAPM widgets are freed */
912 snd_soc_dapm_free(&platform->dapm);
913
910 platform->probed = 0; 914 platform->probed = 0;
911 list_del(&platform->card_list); 915 list_del(&platform->card_list);
912 module_put(platform->dev->driver->owner); 916 module_put(platform->dev->driver->owner);
diff --git a/sound/soc/soc-dapm.c b/sound/soc/soc-dapm.c
index 3ad1f59b8028..1f55ded4047f 100644
--- a/sound/soc/soc-dapm.c
+++ b/sound/soc/soc-dapm.c
@@ -1426,7 +1426,7 @@ static int dapm_power_widgets(struct snd_soc_dapm_context *dapm, int event)
1426 dapm->target_bias_level = SND_SOC_BIAS_ON; 1426 dapm->target_bias_level = SND_SOC_BIAS_ON;
1427 break; 1427 break;
1428 case SND_SOC_DAPM_STREAM_STOP: 1428 case SND_SOC_DAPM_STREAM_STOP:
1429 if (dapm->codec->active) 1429 if (dapm->codec && dapm->codec->active)
1430 dapm->target_bias_level = SND_SOC_BIAS_ON; 1430 dapm->target_bias_level = SND_SOC_BIAS_ON;
1431 else 1431 else
1432 dapm->target_bias_level = SND_SOC_BIAS_STANDBY; 1432 dapm->target_bias_level = SND_SOC_BIAS_STANDBY;