aboutsummaryrefslogtreecommitdiffstats
path: root/sound/soc/pxa/pxa2xx-ac97.c
diff options
context:
space:
mode:
Diffstat (limited to 'sound/soc/pxa/pxa2xx-ac97.c')
-rw-r--r--sound/soc/pxa/pxa2xx-ac97.c67
1 files changed, 34 insertions, 33 deletions
diff --git a/sound/soc/pxa/pxa2xx-ac97.c b/sound/soc/pxa/pxa2xx-ac97.c
index 1475515712e6..f1059d999de6 100644
--- a/sound/soc/pxa/pxa2xx-ac97.c
+++ b/sound/soc/pxa/pxa2xx-ac97.c
@@ -14,15 +14,16 @@
14#include <linux/io.h> 14#include <linux/io.h>
15#include <linux/module.h> 15#include <linux/module.h>
16#include <linux/platform_device.h> 16#include <linux/platform_device.h>
17#include <linux/dmaengine.h>
17 18
18#include <sound/core.h> 19#include <sound/core.h>
19#include <sound/ac97_codec.h> 20#include <sound/ac97_codec.h>
20#include <sound/soc.h> 21#include <sound/soc.h>
21#include <sound/pxa2xx-lib.h> 22#include <sound/pxa2xx-lib.h>
23#include <sound/dmaengine_pcm.h>
22 24
23#include <mach/hardware.h> 25#include <mach/hardware.h>
24#include <mach/regs-ac97.h> 26#include <mach/regs-ac97.h>
25#include <mach/dma.h>
26#include <mach/audio.h> 27#include <mach/audio.h>
27 28
28#include "pxa2xx-ac97.h" 29#include "pxa2xx-ac97.h"
@@ -48,44 +49,44 @@ static struct snd_ac97_bus_ops pxa2xx_ac97_ops = {
48 .reset = pxa2xx_ac97_cold_reset, 49 .reset = pxa2xx_ac97_cold_reset,
49}; 50};
50 51
51static struct pxa2xx_pcm_dma_params pxa2xx_ac97_pcm_stereo_out = { 52static unsigned long pxa2xx_ac97_pcm_stereo_in_req = 12;
52 .name = "AC97 PCM Stereo out", 53static struct snd_dmaengine_dai_dma_data pxa2xx_ac97_pcm_stereo_in = {
53 .dev_addr = __PREG(PCDR), 54 .addr = __PREG(PCDR),
54 .drcmr = &DRCMR(12), 55 .addr_width = DMA_SLAVE_BUSWIDTH_4_BYTES,
55 .dcmd = DCMD_INCSRCADDR | DCMD_FLOWTRG | 56 .maxburst = 32,
56 DCMD_BURST32 | DCMD_WIDTH4, 57 .filter_data = &pxa2xx_ac97_pcm_stereo_in_req,
57}; 58};
58 59
59static struct pxa2xx_pcm_dma_params pxa2xx_ac97_pcm_stereo_in = { 60static unsigned long pxa2xx_ac97_pcm_stereo_out_req = 11;
60 .name = "AC97 PCM Stereo in", 61static struct snd_dmaengine_dai_dma_data pxa2xx_ac97_pcm_stereo_out = {
61 .dev_addr = __PREG(PCDR), 62 .addr = __PREG(PCDR),
62 .drcmr = &DRCMR(11), 63 .addr_width = DMA_SLAVE_BUSWIDTH_4_BYTES,
63 .dcmd = DCMD_INCTRGADDR | DCMD_FLOWSRC | 64 .maxburst = 32,
64 DCMD_BURST32 | DCMD_WIDTH4, 65 .filter_data = &pxa2xx_ac97_pcm_stereo_out_req,
65}; 66};
66 67
67static struct pxa2xx_pcm_dma_params pxa2xx_ac97_pcm_aux_mono_out = { 68static unsigned long pxa2xx_ac97_pcm_aux_mono_out_req = 10;
68 .name = "AC97 Aux PCM (Slot 5) Mono out", 69static struct snd_dmaengine_dai_dma_data pxa2xx_ac97_pcm_aux_mono_out = {
69 .dev_addr = __PREG(MODR), 70 .addr = __PREG(MODR),
70 .drcmr = &DRCMR(10), 71 .addr_width = DMA_SLAVE_BUSWIDTH_2_BYTES,
71 .dcmd = DCMD_INCSRCADDR | DCMD_FLOWTRG | 72 .maxburst = 16,
72 DCMD_BURST16 | DCMD_WIDTH2, 73 .filter_data = &pxa2xx_ac97_pcm_aux_mono_out_req,
73}; 74};
74 75
75static struct pxa2xx_pcm_dma_params pxa2xx_ac97_pcm_aux_mono_in = { 76static unsigned long pxa2xx_ac97_pcm_aux_mono_in_req = 9;
76 .name = "AC97 Aux PCM (Slot 5) Mono in", 77static struct snd_dmaengine_dai_dma_data pxa2xx_ac97_pcm_aux_mono_in = {
77 .dev_addr = __PREG(MODR), 78 .addr = __PREG(MODR),
78 .drcmr = &DRCMR(9), 79 .addr_width = DMA_SLAVE_BUSWIDTH_2_BYTES,
79 .dcmd = DCMD_INCTRGADDR | DCMD_FLOWSRC | 80 .maxburst = 16,
80 DCMD_BURST16 | DCMD_WIDTH2, 81 .filter_data = &pxa2xx_ac97_pcm_aux_mono_in_req,
81}; 82};
82 83
83static struct pxa2xx_pcm_dma_params pxa2xx_ac97_pcm_mic_mono_in = { 84static unsigned long pxa2xx_ac97_pcm_aux_mic_mono_req = 8;
84 .name = "AC97 Mic PCM (Slot 6) Mono in", 85static struct snd_dmaengine_dai_dma_data pxa2xx_ac97_pcm_mic_mono_in = {
85 .dev_addr = __PREG(MCDR), 86 .addr = __PREG(MCDR),
86 .drcmr = &DRCMR(8), 87 .addr_width = DMA_SLAVE_BUSWIDTH_2_BYTES,
87 .dcmd = DCMD_INCTRGADDR | DCMD_FLOWSRC | 88 .maxburst = 16,
88 DCMD_BURST16 | DCMD_WIDTH2, 89 .filter_data = &pxa2xx_ac97_pcm_aux_mic_mono_req,
89}; 90};
90 91
91#ifdef CONFIG_PM 92#ifdef CONFIG_PM
@@ -119,7 +120,7 @@ static int pxa2xx_ac97_hw_params(struct snd_pcm_substream *substream,
119 struct snd_pcm_hw_params *params, 120 struct snd_pcm_hw_params *params,
120 struct snd_soc_dai *cpu_dai) 121 struct snd_soc_dai *cpu_dai)
121{ 122{
122 struct pxa2xx_pcm_dma_params *dma_data; 123 struct snd_dmaengine_dai_dma_data *dma_data;
123 124
124 if (substream->stream == SNDRV_PCM_STREAM_PLAYBACK) 125 if (substream->stream == SNDRV_PCM_STREAM_PLAYBACK)
125 dma_data = &pxa2xx_ac97_pcm_stereo_out; 126 dma_data = &pxa2xx_ac97_pcm_stereo_out;
@@ -135,7 +136,7 @@ static int pxa2xx_ac97_hw_aux_params(struct snd_pcm_substream *substream,
135 struct snd_pcm_hw_params *params, 136 struct snd_pcm_hw_params *params,
136 struct snd_soc_dai *cpu_dai) 137 struct snd_soc_dai *cpu_dai)
137{ 138{
138 struct pxa2xx_pcm_dma_params *dma_data; 139 struct snd_dmaengine_dai_dma_data *dma_data;
139 140
140 if (substream->stream == SNDRV_PCM_STREAM_PLAYBACK) 141 if (substream->stream == SNDRV_PCM_STREAM_PLAYBACK)
141 dma_data = &pxa2xx_ac97_pcm_aux_mono_out; 142 dma_data = &pxa2xx_ac97_pcm_aux_mono_out;