From dbcc34756234596993a3b1304636f032e66d401f Mon Sep 17 00:00:00 2001 From: Jon Smirl Date: Tue, 26 May 2009 08:34:08 -0400 Subject: ASoC: Main rewite of the mpc5200 audio DMA code Rewrite the mpc5200 audio DMA code to support both I2S and AC97. Signed-off-by: Jon Smirl Acked-by: Grant Likely Signed-off-by: Mark Brown --- sound/soc/fsl/mpc5200_dma.h | 33 ++++++++++++++++----------------- 1 file changed, 16 insertions(+), 17 deletions(-) (limited to 'sound/soc/fsl/mpc5200_dma.h') diff --git a/sound/soc/fsl/mpc5200_dma.h b/sound/soc/fsl/mpc5200_dma.h index a33232c..2000803 100644 --- a/sound/soc/fsl/mpc5200_dma.h +++ b/sound/soc/fsl/mpc5200_dma.h @@ -5,8 +5,10 @@ #ifndef __SOUND_SOC_FSL_MPC5200_DMA_H__ #define __SOUND_SOC_FSL_MPC5200_DMA_H__ +#define PSC_STREAM_NAME_LEN 32 + /** - * psc_dma_stream - Data specific to a single stream (playback or capture) + * psc_ac97_stream - Data specific to a single stream (playback or capture) * @active: flag indicating if the stream is active * @psc_dma: pointer back to parent psc_dma data structure * @bcom_task: bestcomm task structure @@ -17,6 +19,9 @@ * @period_bytes: size of DMA period in bytes */ struct psc_dma_stream { + struct snd_pcm_runtime *runtime; + snd_pcm_uframes_t appl_ptr; + int active; struct psc_dma *psc_dma; struct bcom_task *bcom_task; @@ -27,6 +32,7 @@ struct psc_dma_stream { dma_addr_t period_next_pt; dma_addr_t period_current_pt; int period_bytes; + int period_size; }; /** @@ -48,9 +54,12 @@ struct psc_dma { struct mpc52xx_psc_fifo __iomem *fifo_regs; unsigned int irq; struct device *dev; - struct snd_soc_dai dai; spinlock_t lock; u32 sicr; + uint sysclk; + int imr; + int id; + unsigned int slots; /* per-stream data */ struct psc_dma_stream playback; @@ -58,24 +67,14 @@ struct psc_dma { /* Statistics */ struct { - int overrun_count; - int underrun_count; + unsigned long overrun_count; + unsigned long underrun_count; } stats; }; +int mpc5200_audio_dma_create(struct of_device *op); +int mpc5200_audio_dma_destroy(struct of_device *op); -int psc_dma_startup(struct snd_pcm_substream *substream, - struct snd_soc_dai *dai); - -int psc_dma_hw_free(struct snd_pcm_substream *substream, - struct snd_soc_dai *dai); - -void psc_dma_shutdown(struct snd_pcm_substream *substream, - struct snd_soc_dai *dai); - -int psc_dma_trigger(struct snd_pcm_substream *substream, int cmd, - struct snd_soc_dai *dai); - -extern struct snd_soc_platform psc_dma_pcm_soc_platform; +extern struct snd_soc_platform mpc5200_audio_dma_platform; #endif /* __SOUND_SOC_FSL_MPC5200_DMA_H__ */ -- cgit v1.1