mirror of
https://mirrors.bfsu.edu.cn/git/linux.git
synced 2024-11-11 12:28:41 +08:00
Merge branch 'fix/asoc' of git://git.kernel.org/pub/scm/linux/kernel/git/tiwai/sound
* 'fix/asoc' of git://git.kernel.org/pub/scm/linux/kernel/git/tiwai/sound: ASoC: Wait for WM8993 FLL to stabilise ASoC: core - Free platform DAPM context at platform removal. ASoC: dapm - Fix check for codec context in dapm_power_widgets(). ASoC: sgtl5000: update author email address ASoC: Fix DMA channel leak in imx-pcm-dma-mx2 driver.
This commit is contained in:
commit
9278e634b4
@ -1457,5 +1457,5 @@ static void __exit sgtl5000_exit(void)
|
|||||||
module_exit(sgtl5000_exit);
|
module_exit(sgtl5000_exit);
|
||||||
|
|
||||||
MODULE_DESCRIPTION("Freescale SGTL5000 ALSA SoC Codec Driver");
|
MODULE_DESCRIPTION("Freescale SGTL5000 ALSA SoC Codec Driver");
|
||||||
MODULE_AUTHOR("Zeng Zhaoming <zhaoming.zeng@freescale.com>");
|
MODULE_AUTHOR("Zeng Zhaoming <zengzm.kernel@gmail.com>");
|
||||||
MODULE_LICENSE("GPL");
|
MODULE_LICENSE("GPL");
|
||||||
|
@ -444,6 +444,12 @@ static int _wm8993_set_fll(struct snd_soc_codec *codec, int fll_id, int source,
|
|||||||
/* Enable the FLL */
|
/* Enable the FLL */
|
||||||
snd_soc_write(codec, WM8993_FLL_CONTROL_1, reg1 | WM8993_FLL_ENA);
|
snd_soc_write(codec, WM8993_FLL_CONTROL_1, reg1 | WM8993_FLL_ENA);
|
||||||
|
|
||||||
|
/* Both overestimates */
|
||||||
|
if (Fref < 1000000)
|
||||||
|
msleep(3);
|
||||||
|
else
|
||||||
|
msleep(1);
|
||||||
|
|
||||||
dev_dbg(codec->dev, "FLL enabled at %dHz->%dHz\n", Fref, Fout);
|
dev_dbg(codec->dev, "FLL enabled at %dHz->%dHz\n", Fref, Fout);
|
||||||
|
|
||||||
wm8993->fll_fref = Fref;
|
wm8993->fll_fref = Fref;
|
||||||
|
@ -88,11 +88,13 @@ static int imx_ssi_dma_alloc(struct snd_pcm_substream *substream,
|
|||||||
iprtd->dma_data.dma_request = dma_params->dma;
|
iprtd->dma_data.dma_request = dma_params->dma;
|
||||||
|
|
||||||
/* Try to grab a DMA channel */
|
/* Try to grab a DMA channel */
|
||||||
dma_cap_zero(mask);
|
if (!iprtd->dma_chan) {
|
||||||
dma_cap_set(DMA_SLAVE, mask);
|
dma_cap_zero(mask);
|
||||||
iprtd->dma_chan = dma_request_channel(mask, filter, iprtd);
|
dma_cap_set(DMA_SLAVE, mask);
|
||||||
if (!iprtd->dma_chan)
|
iprtd->dma_chan = dma_request_channel(mask, filter, iprtd);
|
||||||
return -EINVAL;
|
if (!iprtd->dma_chan)
|
||||||
|
return -EINVAL;
|
||||||
|
}
|
||||||
|
|
||||||
switch (params_format(params)) {
|
switch (params_format(params)) {
|
||||||
case SNDRV_PCM_FORMAT_S16_LE:
|
case SNDRV_PCM_FORMAT_S16_LE:
|
||||||
|
@ -907,6 +907,10 @@ static void soc_remove_dai_link(struct snd_soc_card *card, int num, int order)
|
|||||||
if (err < 0)
|
if (err < 0)
|
||||||
printk(KERN_ERR "asoc: failed to remove %s\n", platform->name);
|
printk(KERN_ERR "asoc: failed to remove %s\n", platform->name);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* Make sure all DAPM widgets are freed */
|
||||||
|
snd_soc_dapm_free(&platform->dapm);
|
||||||
|
|
||||||
platform->probed = 0;
|
platform->probed = 0;
|
||||||
list_del(&platform->card_list);
|
list_del(&platform->card_list);
|
||||||
module_put(platform->dev->driver->owner);
|
module_put(platform->dev->driver->owner);
|
||||||
|
@ -1426,7 +1426,7 @@ static int dapm_power_widgets(struct snd_soc_dapm_context *dapm, int event)
|
|||||||
dapm->target_bias_level = SND_SOC_BIAS_ON;
|
dapm->target_bias_level = SND_SOC_BIAS_ON;
|
||||||
break;
|
break;
|
||||||
case SND_SOC_DAPM_STREAM_STOP:
|
case SND_SOC_DAPM_STREAM_STOP:
|
||||||
if (dapm->codec->active)
|
if (dapm->codec && dapm->codec->active)
|
||||||
dapm->target_bias_level = SND_SOC_BIAS_ON;
|
dapm->target_bias_level = SND_SOC_BIAS_ON;
|
||||||
else
|
else
|
||||||
dapm->target_bias_level = SND_SOC_BIAS_STANDBY;
|
dapm->target_bias_level = SND_SOC_BIAS_STANDBY;
|
||||||
|
Loading…
Reference in New Issue
Block a user