Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit dc8a4f3f authored by Takashi Iwai's avatar Takashi Iwai
Browse files

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
Loading
Loading
Loading
Loading
+3 −3
Original line number Diff line number Diff line
@@ -33,7 +33,7 @@ config SND_SOC_MPC5200_I2S
config SND_SOC_MPC5200_AC97
	tristate "Freescale MPC5200 PSC in AC97 mode driver"
	depends on PPC_MPC52xx && PPC_BESTCOMM
	select AC97_BUS
	select SND_SOC_AC97_BUS
	select SND_MPC52xx_DMA
	select PPC_BESTCOMM_GEN_BD
	help
@@ -41,7 +41,7 @@ config SND_SOC_MPC5200_AC97

config SND_MPC52xx_SOC_PCM030
	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_WM9712
	help
@@ -50,7 +50,7 @@ config SND_MPC52xx_SOC_PCM030

config SND_MPC52xx_SOC_EFIKA
	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_STAC9766
	help
+7 −4
Original line number Diff line number Diff line
@@ -216,12 +216,15 @@ static snd_pcm_uframes_t omap_pcm_pointer(struct snd_pcm_substream *substream)
	dma_addr_t ptr;
	snd_pcm_uframes_t offset;

	if (substream->stream == SNDRV_PCM_STREAM_PLAYBACK)
		ptr = omap_get_dma_src_pos(prtd->dma_ch);
	else
	if (substream->stream == SNDRV_PCM_STREAM_CAPTURE) {
		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;

	if (offset >= runtime->buffer_size)
		offset = 0;

+6 −1
Original line number Diff line number Diff line
@@ -167,6 +167,7 @@ static int pxa2xx_i2s_hw_params(struct snd_pcm_substream *substream,

	BUG_ON(IS_ERR(clk_i2s));
	clk_enable(clk_i2s);
	dai->private_data = dai;
	pxa_i2s_wait();

	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)) {
		SACR0 &= ~SACR0_ENB;
		pxa_i2s_wait();
		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);

	pxa_i2s_dai.dev = &dev->dev;
	pxa_i2s_dai.private_data = NULL;
	ret = snd_soc_register_dai(&pxa_i2s_dai);
	if (ret != 0)
		clk_put(clk_i2s);