Merge branch 'fix/asoc' into for-linus
* fix/asoc: ASoC: Only disable pxa2xx-i2s clocks if we enabled them ASoC: OMAP: fix OMAP1510 broken PCM pointer callback ASoC: remove BROKEN from Efika and pcm030 fabric drivers ASoC: Fix typo in MPC5200 PSC AC97 driver Kconfig
This commit is contained in:
commit
dc8a4f3fc3
@ -33,7 +33,7 @@ config SND_SOC_MPC5200_I2S
|
|||||||
config SND_SOC_MPC5200_AC97
|
config SND_SOC_MPC5200_AC97
|
||||||
tristate "Freescale MPC5200 PSC in AC97 mode driver"
|
tristate "Freescale MPC5200 PSC in AC97 mode driver"
|
||||||
depends on PPC_MPC52xx && PPC_BESTCOMM
|
depends on PPC_MPC52xx && PPC_BESTCOMM
|
||||||
select AC97_BUS
|
select SND_SOC_AC97_BUS
|
||||||
select SND_MPC52xx_DMA
|
select SND_MPC52xx_DMA
|
||||||
select PPC_BESTCOMM_GEN_BD
|
select PPC_BESTCOMM_GEN_BD
|
||||||
help
|
help
|
||||||
@ -41,7 +41,7 @@ config SND_SOC_MPC5200_AC97
|
|||||||
|
|
||||||
config SND_MPC52xx_SOC_PCM030
|
config SND_MPC52xx_SOC_PCM030
|
||||||
tristate "SoC AC97 Audio support for Phytec pcm030 and WM9712"
|
tristate "SoC AC97 Audio support for Phytec pcm030 and WM9712"
|
||||||
depends on PPC_MPC5200_SIMPLE && BROKEN
|
depends on PPC_MPC5200_SIMPLE
|
||||||
select SND_SOC_MPC5200_AC97
|
select SND_SOC_MPC5200_AC97
|
||||||
select SND_SOC_WM9712
|
select SND_SOC_WM9712
|
||||||
help
|
help
|
||||||
@ -50,7 +50,7 @@ config SND_MPC52xx_SOC_PCM030
|
|||||||
|
|
||||||
config SND_MPC52xx_SOC_EFIKA
|
config SND_MPC52xx_SOC_EFIKA
|
||||||
tristate "SoC AC97 Audio support for bbplan Efika and STAC9766"
|
tristate "SoC AC97 Audio support for bbplan Efika and STAC9766"
|
||||||
depends on PPC_EFIKA && BROKEN
|
depends on PPC_EFIKA
|
||||||
select SND_SOC_MPC5200_AC97
|
select SND_SOC_MPC5200_AC97
|
||||||
select SND_SOC_STAC9766
|
select SND_SOC_STAC9766
|
||||||
help
|
help
|
||||||
|
@ -216,12 +216,15 @@ static snd_pcm_uframes_t omap_pcm_pointer(struct snd_pcm_substream *substream)
|
|||||||
dma_addr_t ptr;
|
dma_addr_t ptr;
|
||||||
snd_pcm_uframes_t offset;
|
snd_pcm_uframes_t offset;
|
||||||
|
|
||||||
if (substream->stream == SNDRV_PCM_STREAM_PLAYBACK)
|
if (substream->stream == SNDRV_PCM_STREAM_CAPTURE) {
|
||||||
ptr = omap_get_dma_src_pos(prtd->dma_ch);
|
|
||||||
else
|
|
||||||
ptr = omap_get_dma_dst_pos(prtd->dma_ch);
|
ptr = omap_get_dma_dst_pos(prtd->dma_ch);
|
||||||
|
offset = bytes_to_frames(runtime, ptr - runtime->dma_addr);
|
||||||
|
} else if (!(cpu_is_omap1510())) {
|
||||||
|
ptr = omap_get_dma_src_pos(prtd->dma_ch);
|
||||||
|
offset = bytes_to_frames(runtime, ptr - runtime->dma_addr);
|
||||||
|
} else
|
||||||
|
offset = prtd->period_index * runtime->period_size;
|
||||||
|
|
||||||
offset = bytes_to_frames(runtime, ptr - runtime->dma_addr);
|
|
||||||
if (offset >= runtime->buffer_size)
|
if (offset >= runtime->buffer_size)
|
||||||
offset = 0;
|
offset = 0;
|
||||||
|
|
||||||
|
@ -167,6 +167,7 @@ static int pxa2xx_i2s_hw_params(struct snd_pcm_substream *substream,
|
|||||||
|
|
||||||
BUG_ON(IS_ERR(clk_i2s));
|
BUG_ON(IS_ERR(clk_i2s));
|
||||||
clk_enable(clk_i2s);
|
clk_enable(clk_i2s);
|
||||||
|
dai->private_data = dai;
|
||||||
pxa_i2s_wait();
|
pxa_i2s_wait();
|
||||||
|
|
||||||
if (substream->stream == SNDRV_PCM_STREAM_PLAYBACK)
|
if (substream->stream == SNDRV_PCM_STREAM_PLAYBACK)
|
||||||
@ -255,7 +256,10 @@ static void pxa2xx_i2s_shutdown(struct snd_pcm_substream *substream,
|
|||||||
if ((SACR1 & (SACR1_DREC | SACR1_DRPL)) == (SACR1_DREC | SACR1_DRPL)) {
|
if ((SACR1 & (SACR1_DREC | SACR1_DRPL)) == (SACR1_DREC | SACR1_DRPL)) {
|
||||||
SACR0 &= ~SACR0_ENB;
|
SACR0 &= ~SACR0_ENB;
|
||||||
pxa_i2s_wait();
|
pxa_i2s_wait();
|
||||||
clk_disable(clk_i2s);
|
if (dai->private_data != NULL) {
|
||||||
|
clk_disable(clk_i2s);
|
||||||
|
dai->private_data = NULL;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -336,6 +340,7 @@ static int pxa2xx_i2s_probe(struct platform_device *dev)
|
|||||||
return PTR_ERR(clk_i2s);
|
return PTR_ERR(clk_i2s);
|
||||||
|
|
||||||
pxa_i2s_dai.dev = &dev->dev;
|
pxa_i2s_dai.dev = &dev->dev;
|
||||||
|
pxa_i2s_dai.private_data = NULL;
|
||||||
ret = snd_soc_register_dai(&pxa_i2s_dai);
|
ret = snd_soc_register_dai(&pxa_i2s_dai);
|
||||||
if (ret != 0)
|
if (ret != 0)
|
||||||
clk_put(clk_i2s);
|
clk_put(clk_i2s);
|
||||||
|
Loading…
Reference in New Issue
Block a user