aboutsummaryrefslogtreecommitdiffstats
path: root/sound/soc/nuc900
diff options
context:
space:
mode:
Diffstat (limited to 'sound/soc/nuc900')
-rw-r--r--sound/soc/nuc900/nuc900-ac97.c6
-rw-r--r--sound/soc/nuc900/nuc900-auido.h4
-rw-r--r--sound/soc/nuc900/nuc900-pcm.c18
3 files changed, 13 insertions, 15 deletions
diff --git a/sound/soc/nuc900/nuc900-ac97.c b/sound/soc/nuc900/nuc900-ac97.c
index f7b44e081420..e1634a2f1701 100644
--- a/sound/soc/nuc900/nuc900-ac97.c
+++ b/sound/soc/nuc900/nuc900-ac97.c
@@ -222,7 +222,7 @@ static int nuc900_ac97_trigger(struct snd_pcm_substream *substream,
222 int cmd, struct snd_soc_dai *dai) 222 int cmd, struct snd_soc_dai *dai)
223{ 223{
224 struct nuc900_audio *nuc900_audio = nuc900_ac97_data; 224 struct nuc900_audio *nuc900_audio = nuc900_ac97_data;
225 int ret, stype = SUBSTREAM_TYPE(substream); 225 int ret;
226 unsigned long val, tmp; 226 unsigned long val, tmp;
227 227
228 ret = 0; 228 ret = 0;
@@ -231,7 +231,7 @@ static int nuc900_ac97_trigger(struct snd_pcm_substream *substream,
231 case SNDRV_PCM_TRIGGER_START: 231 case SNDRV_PCM_TRIGGER_START:
232 case SNDRV_PCM_TRIGGER_RESUME: 232 case SNDRV_PCM_TRIGGER_RESUME:
233 val = AUDIO_READ(nuc900_audio->mmio + ACTL_RESET); 233 val = AUDIO_READ(nuc900_audio->mmio + ACTL_RESET);
234 if (PCM_TX == stype) { 234 if (substream->stream == SNDRV_PCM_STREAM_PLAYBACK) {
235 tmp = AUDIO_READ(nuc900_audio->mmio + ACTL_ACOS0); 235 tmp = AUDIO_READ(nuc900_audio->mmio + ACTL_ACOS0);
236 tmp |= (SLOT3_VALID | SLOT4_VALID | VALID_FRAME); 236 tmp |= (SLOT3_VALID | SLOT4_VALID | VALID_FRAME);
237 AUDIO_WRITE(nuc900_audio->mmio + ACTL_ACOS0, tmp); 237 AUDIO_WRITE(nuc900_audio->mmio + ACTL_ACOS0, tmp);
@@ -254,7 +254,7 @@ static int nuc900_ac97_trigger(struct snd_pcm_substream *substream,
254 case SNDRV_PCM_TRIGGER_STOP: 254 case SNDRV_PCM_TRIGGER_STOP:
255 case SNDRV_PCM_TRIGGER_SUSPEND: 255 case SNDRV_PCM_TRIGGER_SUSPEND:
256 val = AUDIO_READ(nuc900_audio->mmio + ACTL_RESET); 256 val = AUDIO_READ(nuc900_audio->mmio + ACTL_RESET);
257 if (PCM_TX == stype) { 257 if (substream->stream == SNDRV_PCM_STREAM_PLAYBACK) {
258 tmp = AUDIO_READ(nuc900_audio->mmio + ACTL_ACOS0); 258 tmp = AUDIO_READ(nuc900_audio->mmio + ACTL_ACOS0);
259 tmp &= ~(SLOT3_VALID | SLOT4_VALID); 259 tmp &= ~(SLOT3_VALID | SLOT4_VALID);
260 AUDIO_WRITE(nuc900_audio->mmio + ACTL_ACOS0, tmp); 260 AUDIO_WRITE(nuc900_audio->mmio + ACTL_ACOS0, tmp);
diff --git a/sound/soc/nuc900/nuc900-auido.h b/sound/soc/nuc900/nuc900-auido.h
index 95ac4ef2f353..3038f519729f 100644
--- a/sound/soc/nuc900/nuc900-auido.h
+++ b/sound/soc/nuc900/nuc900-auido.h
@@ -96,10 +96,6 @@
96#define RESET_PRSR 0x00 96#define RESET_PRSR 0x00
97#define AUDIO_WRITE(addr, val) __raw_writel(val, addr) 97#define AUDIO_WRITE(addr, val) __raw_writel(val, addr)
98#define AUDIO_READ(addr) __raw_readl(addr) 98#define AUDIO_READ(addr) __raw_readl(addr)
99#define PCM_TX 0
100#define PCM_RX 1
101#define SUBSTREAM_TYPE(substream) \
102 ((substream)->stream == SNDRV_PCM_STREAM_PLAYBACK ? PCM_TX : PCM_RX)
103 99
104struct nuc900_audio { 100struct nuc900_audio {
105 void __iomem *mmio; 101 void __iomem *mmio;
diff --git a/sound/soc/nuc900/nuc900-pcm.c b/sound/soc/nuc900/nuc900-pcm.c
index 32a503c1c4be..445a18011d8e 100644
--- a/sound/soc/nuc900/nuc900-pcm.c
+++ b/sound/soc/nuc900/nuc900-pcm.c
@@ -47,7 +47,7 @@ static int nuc900_dma_hw_params(struct snd_pcm_substream *substream,
47{ 47{
48 struct snd_pcm_runtime *runtime = substream->runtime; 48 struct snd_pcm_runtime *runtime = substream->runtime;
49 struct nuc900_audio *nuc900_audio = runtime->private_data; 49 struct nuc900_audio *nuc900_audio = runtime->private_data;
50 unsigned long flags, stype = SUBSTREAM_TYPE(substream); 50 unsigned long flags;
51 int ret = 0; 51 int ret = 0;
52 52
53 spin_lock_irqsave(&nuc900_audio->lock, flags); 53 spin_lock_irqsave(&nuc900_audio->lock, flags);
@@ -57,8 +57,9 @@ static int nuc900_dma_hw_params(struct snd_pcm_substream *substream,
57 return ret; 57 return ret;
58 58
59 nuc900_audio->substream = substream; 59 nuc900_audio->substream = substream;
60 nuc900_audio->dma_addr[stype] = runtime->dma_addr; 60 nuc900_audio->dma_addr[substream->stream] = runtime->dma_addr;
61 nuc900_audio->buffersize[stype] = params_buffer_bytes(params); 61 nuc900_audio->buffersize[substream->stream] =
62 params_buffer_bytes(params);
62 63
63 spin_unlock_irqrestore(&nuc900_audio->lock, flags); 64 spin_unlock_irqrestore(&nuc900_audio->lock, flags);
64 65
@@ -72,7 +73,7 @@ static void nuc900_update_dma_register(struct snd_pcm_substream *substream,
72 struct nuc900_audio *nuc900_audio = runtime->private_data; 73 struct nuc900_audio *nuc900_audio = runtime->private_data;
73 void __iomem *mmio_addr, *mmio_len; 74 void __iomem *mmio_addr, *mmio_len;
74 75
75 if (SUBSTREAM_TYPE(substream) == PCM_TX) { 76 if (substream->stream == SNDRV_PCM_STREAM_PLAYBACK) {
76 mmio_addr = nuc900_audio->mmio + ACTL_PDSTB; 77 mmio_addr = nuc900_audio->mmio + ACTL_PDSTB;
77 mmio_len = nuc900_audio->mmio + ACTL_PDST_LENGTH; 78 mmio_len = nuc900_audio->mmio + ACTL_PDST_LENGTH;
78 } else { 79 } else {
@@ -167,18 +168,19 @@ static int nuc900_dma_prepare(struct snd_pcm_substream *substream)
167{ 168{
168 struct snd_pcm_runtime *runtime = substream->runtime; 169 struct snd_pcm_runtime *runtime = substream->runtime;
169 struct nuc900_audio *nuc900_audio = runtime->private_data; 170 struct nuc900_audio *nuc900_audio = runtime->private_data;
170 unsigned long flags, val, stype = SUBSTREAM_TYPE(substream);; 171 unsigned long flags, val;
171 172
172 spin_lock_irqsave(&nuc900_audio->lock, flags); 173 spin_lock_irqsave(&nuc900_audio->lock, flags);
173 174
174 nuc900_update_dma_register(substream, 175 nuc900_update_dma_register(substream,
175 nuc900_audio->dma_addr[stype], nuc900_audio->buffersize[stype]); 176 nuc900_audio->dma_addr[substream->stream],
177 nuc900_audio->buffersize[substream->stream]);
176 178
177 val = AUDIO_READ(nuc900_audio->mmio + ACTL_RESET); 179 val = AUDIO_READ(nuc900_audio->mmio + ACTL_RESET);
178 180
179 switch (runtime->channels) { 181 switch (runtime->channels) {
180 case 1: 182 case 1:
181 if (PCM_TX == stype) { 183 if (substream->stream == SNDRV_PCM_STREAM_PLAYBACK) {
182 val &= ~(PLAY_LEFT_CHNNEL | PLAY_RIGHT_CHNNEL); 184 val &= ~(PLAY_LEFT_CHNNEL | PLAY_RIGHT_CHNNEL);
183 val |= PLAY_RIGHT_CHNNEL; 185 val |= PLAY_RIGHT_CHNNEL;
184 } else { 186 } else {
@@ -188,7 +190,7 @@ static int nuc900_dma_prepare(struct snd_pcm_substream *substream)
188 AUDIO_WRITE(nuc900_audio->mmio + ACTL_RESET, val); 190 AUDIO_WRITE(nuc900_audio->mmio + ACTL_RESET, val);
189 break; 191 break;
190 case 2: 192 case 2:
191 if (PCM_TX == stype) 193 if (substream->stream == SNDRV_PCM_STREAM_PLAYBACK)
192 val |= (PLAY_LEFT_CHNNEL | PLAY_RIGHT_CHNNEL); 194 val |= (PLAY_LEFT_CHNNEL | PLAY_RIGHT_CHNNEL);
193 else 195 else
194 val |= (RECORD_LEFT_CHNNEL | RECORD_RIGHT_CHNNEL); 196 val |= (RECORD_LEFT_CHNNEL | RECORD_RIGHT_CHNNEL);