Commit 62970276 authored by Frank Mandarino's avatar Frank Mandarino Committed by Jaroslav Kysela

[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: default avatarFrank Mandarino <fmandarino@endrelia.com>
Signed-off-by: default avatarLiam Girdwood <lg@opensource.wolfsonmicro.com>
Signed-off-by: default avatarTakashi Iwai <tiwai@suse.de>
Signed-off-by: default avatarJaroslav Kysela <perex@suse.cz>
parent 171eb8f8
...@@ -125,7 +125,7 @@ static int at91_pcm_hw_params(struct snd_pcm_substream *substream, ...@@ -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) ...@@ -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, ...@@ -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",
......
...@@ -16,6 +16,9 @@ ...@@ -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 { ...@@ -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 { ...@@ -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 { ...@@ -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 */
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