Browse Source

[ALSA] soc - ASoC 0.13 AT91xxxx DMA

This patch updates the AT91xxxx audio DMA driver to the new API in ASoC
0.13.
Changes:-
o Updated to use new 0.13 data structures.
o Suspend and Resume now conditionally compiled.
o #include guard around at91-pcm.h header.

Signed-off-by: Frank Mandarino <fmandarino@endrelia.com>
Signed-off-by: Liam Girdwood <lg@opensource.wolfsonmicro.com>
Signed-off-by: Takashi Iwai <tiwai@suse.de>
Signed-off-by: Jaroslav Kysela <perex@suse.cz>
Frank Mandarino 18 years ago
parent
commit
6297027629
2 changed files with 11 additions and 5 deletions
  1. 6 1
      sound/soc/at91/at91-pcm.c
  2. 5 4
      sound/soc/at91/at91-pcm.h

+ 6 - 1
sound/soc/at91/at91-pcm.c

@@ -125,7 +125,7 @@ static int at91_pcm_hw_params(struct snd_pcm_substream *substream,
 	snd_pcm_set_runtime_buffer(substream, &substream->dma_buffer);
 	snd_pcm_set_runtime_buffer(substream, &substream->dma_buffer);
 	runtime->dma_bytes = params_buffer_bytes(params);
 	runtime->dma_bytes = params_buffer_bytes(params);
 
 
-	prtd->params = rtd->cpu_dai->dma_data;
+	prtd->params = rtd->dai->cpu_dai->dma_data;
 	prtd->params->dma_intr_handler = at91_pcm_dma_irq;
 	prtd->params->dma_intr_handler = at91_pcm_dma_irq;
 
 
 	prtd->dma_buffer = runtime->dma_addr;
 	prtd->dma_buffer = runtime->dma_addr;
@@ -363,6 +363,7 @@ static void at91_pcm_free_dma_buffers(struct snd_pcm *pcm)
 	}
 	}
 }
 }
 
 
+#ifdef CONFIG_PM
 static int at91_pcm_suspend(struct platform_device *pdev,
 static int at91_pcm_suspend(struct platform_device *pdev,
 	struct snd_soc_cpu_dai *dai)
 	struct snd_soc_cpu_dai *dai)
 {
 {
@@ -410,6 +411,10 @@ static int at91_pcm_resume(struct platform_device *pdev,
 	at91_ssc_write(params->ssc_base + AT91_PDC_PTCR, params->mask->pdc_enable);
 	at91_ssc_write(params->ssc_base + AT91_PDC_PTCR, params->mask->pdc_enable);
 	return 0;
 	return 0;
 }
 }
+#else
+#define at91_pcm_suspend	NULL
+#define at91_pcm_resume		NULL
+#endif
 
 
 struct snd_soc_platform at91_soc_platform = {
 struct snd_soc_platform at91_soc_platform = {
 	.name		= "at91-audio",
 	.name		= "at91-audio",

+ 5 - 4
sound/soc/at91/at91-pcm.h

@@ -16,6 +16,9 @@
  * published by the Free Software Foundation.
  * published by the Free Software Foundation.
  */
  */
 
 
+#ifndef _AT91_PCM_H
+#define _AT91_PCM_H
+
 #include <asm/arch/hardware.h>
 #include <asm/arch/hardware.h>
 
 
 struct at91_ssc_periph {
 struct at91_ssc_periph {
@@ -23,7 +26,6 @@ struct at91_ssc_periph {
 	u32		pid;
 	u32		pid;
 };
 };
 
 
-
 /*
 /*
  * Registers and status bits that are required by the PCM driver.
  * Registers and status bits that are required by the PCM driver.
  */
  */
@@ -44,7 +46,6 @@ struct at91_ssc_mask {
 	u32	pdc_disable;		/* PDC recv/trans disable */
 	u32	pdc_disable;		/* PDC recv/trans disable */
 };
 };
 
 
-
 /*
 /*
  * This structure, shared between the PCM driver and the interface,
  * This structure, shared between the PCM driver and the interface,
  * contains all information required by the PCM driver to perform the
  * contains all information required by the PCM driver to perform the
@@ -63,9 +64,9 @@ struct at91_pcm_dma_params {
 	void (*dma_intr_handler)(u32, struct snd_pcm_substream *);
 	void (*dma_intr_handler)(u32, struct snd_pcm_substream *);
 };
 };
 
 
-extern struct snd_soc_cpu_dai at91_i2s_dai[3];
 extern struct snd_soc_platform at91_soc_platform;
 extern struct snd_soc_platform at91_soc_platform;
 
 
-
 #define at91_ssc_read(a)	((unsigned long) __raw_readl(a))
 #define at91_ssc_read(a)	((unsigned long) __raw_readl(a))
 #define at91_ssc_write(a,v)	__raw_writel((v),(a))
 #define at91_ssc_write(a,v)	__raw_writel((v),(a))
+
+#endif /* _AT91_PCM_H */