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

[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
Loading
Loading
Loading
Loading
+6 −1
Original line number Diff line number Diff line
@@ -125,7 +125,7 @@ static int at91_pcm_hw_params(struct snd_pcm_substream *substream,
	snd_pcm_set_runtime_buffer(substream, &substream->dma_buffer);
	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->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,
	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);
	return 0;
}
#else
#define at91_pcm_suspend	NULL
#define at91_pcm_resume		NULL
#endif

struct snd_soc_platform at91_soc_platform = {
	.name		= "at91-audio",
+5 −4
Original line number Diff line number Diff line
@@ -16,6 +16,9 @@
 * published by the Free Software Foundation.
 */

#ifndef _AT91_PCM_H
#define _AT91_PCM_H

#include <asm/arch/hardware.h>

struct at91_ssc_periph {
@@ -23,7 +26,6 @@ struct at91_ssc_periph {
	u32		pid;
};


/*
 * 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 */
};


/*
 * This structure, shared between the PCM driver and the interface,
 * 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 *);
};

extern struct snd_soc_cpu_dai at91_i2s_dai[3];
extern struct snd_soc_platform at91_soc_platform;


#define at91_ssc_read(a)	((unsigned long) __raw_readl(a))
#define at91_ssc_write(a,v)	__raw_writel((v),(a))

#endif /* _AT91_PCM_H */