Commit dc8a4f3f authored by Takashi Iwai's avatar Takashi Iwai

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
parents 9ea5ca75 da9ff1f7
...@@ -33,7 +33,7 @@ config SND_SOC_MPC5200_I2S ...@@ -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 ...@@ -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 ...@@ -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) ...@@ -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, ...@@ -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, ...@@ -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) ...@@ -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);
......
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