kirkwood-i2s.c (af64d7341ab51335eeb03453180cf200b120ec43) kirkwood-i2s.c (db43b16fa0e913582b63c971848e08151d50d952)
1/*
2 * kirkwood-i2s.c
3 *
4 * (c) 2010 Arnaud Patard <apatard@mandriva.com>
5 * (c) 2010 Arnaud Patard <arnaud.patard@rtp-net.org>
6 *
7 * This program is free software; you can redistribute it and/or modify it
8 * under the terms of the GNU General Public License as published by the

--- 184 unchanged lines hidden (view full) ---

193
194 if (substream->stream == SNDRV_PCM_STREAM_PLAYBACK) {
195 if (params_channels(params) == 1)
196 ctl_play |= KIRKWOOD_PLAYCTL_MONO_BOTH;
197 else
198 ctl_play |= KIRKWOOD_PLAYCTL_MONO_OFF;
199
200 priv->ctl_play &= ~(KIRKWOOD_PLAYCTL_MONO_MASK |
1/*
2 * kirkwood-i2s.c
3 *
4 * (c) 2010 Arnaud Patard <apatard@mandriva.com>
5 * (c) 2010 Arnaud Patard <arnaud.patard@rtp-net.org>
6 *
7 * This program is free software; you can redistribute it and/or modify it
8 * under the terms of the GNU General Public License as published by the

--- 184 unchanged lines hidden (view full) ---

193
194 if (substream->stream == SNDRV_PCM_STREAM_PLAYBACK) {
195 if (params_channels(params) == 1)
196 ctl_play |= KIRKWOOD_PLAYCTL_MONO_BOTH;
197 else
198 ctl_play |= KIRKWOOD_PLAYCTL_MONO_OFF;
199
200 priv->ctl_play &= ~(KIRKWOOD_PLAYCTL_MONO_MASK |
201 KIRKWOOD_PLAYCTL_I2S_EN |
202 KIRKWOOD_PLAYCTL_SPDIF_EN |
201 KIRKWOOD_PLAYCTL_ENABLE_MASK |
203 KIRKWOOD_PLAYCTL_SIZE_MASK);
204 priv->ctl_play |= ctl_play;
205 } else {
206 priv->ctl_rec &= ~KIRKWOOD_RECCTL_SIZE_MASK;
207 priv->ctl_rec |= ctl_rec;
208 }
209
210 writel(i2s_value, priv->io+i2s_reg);

--- 27 unchanged lines hidden (view full) ---

238 dev_notice(dai->dev, "timed out waiting for busy to deassert: %08x\n",
239 ctl);
240 }
241
242 switch (cmd) {
243 case SNDRV_PCM_TRIGGER_START:
244 /* configure */
245 ctl = priv->ctl_play;
202 KIRKWOOD_PLAYCTL_SIZE_MASK);
203 priv->ctl_play |= ctl_play;
204 } else {
205 priv->ctl_rec &= ~KIRKWOOD_RECCTL_SIZE_MASK;
206 priv->ctl_rec |= ctl_rec;
207 }
208
209 writel(i2s_value, priv->io+i2s_reg);

--- 27 unchanged lines hidden (view full) ---

237 dev_notice(dai->dev, "timed out waiting for busy to deassert: %08x\n",
238 ctl);
239 }
240
241 switch (cmd) {
242 case SNDRV_PCM_TRIGGER_START:
243 /* configure */
244 ctl = priv->ctl_play;
246 value = ctl & ~(KIRKWOOD_PLAYCTL_I2S_EN |
247 KIRKWOOD_PLAYCTL_SPDIF_EN);
245 value = ctl & ~KIRKWOOD_PLAYCTL_ENABLE_MASK;
248 writel(value, priv->io + KIRKWOOD_PLAYCTL);
249
250 /* enable interrupts */
251 value = readl(priv->io + KIRKWOOD_INT_MASK);
252 value |= KIRKWOOD_INT_CAUSE_PLAY_BYTES;
253 writel(value, priv->io + KIRKWOOD_INT_MASK);
254
255 /* enable playback */

--- 5 unchanged lines hidden (view full) ---

261 ctl |= KIRKWOOD_PLAYCTL_PAUSE | KIRKWOOD_PLAYCTL_I2S_MUTE;
262 writel(ctl, priv->io + KIRKWOOD_PLAYCTL);
263
264 value = readl(priv->io + KIRKWOOD_INT_MASK);
265 value &= ~KIRKWOOD_INT_CAUSE_PLAY_BYTES;
266 writel(value, priv->io + KIRKWOOD_INT_MASK);
267
268 /* disable all playbacks */
246 writel(value, priv->io + KIRKWOOD_PLAYCTL);
247
248 /* enable interrupts */
249 value = readl(priv->io + KIRKWOOD_INT_MASK);
250 value |= KIRKWOOD_INT_CAUSE_PLAY_BYTES;
251 writel(value, priv->io + KIRKWOOD_INT_MASK);
252
253 /* enable playback */

--- 5 unchanged lines hidden (view full) ---

259 ctl |= KIRKWOOD_PLAYCTL_PAUSE | KIRKWOOD_PLAYCTL_I2S_MUTE;
260 writel(ctl, priv->io + KIRKWOOD_PLAYCTL);
261
262 value = readl(priv->io + KIRKWOOD_INT_MASK);
263 value &= ~KIRKWOOD_INT_CAUSE_PLAY_BYTES;
264 writel(value, priv->io + KIRKWOOD_INT_MASK);
265
266 /* disable all playbacks */
269 ctl &= ~(KIRKWOOD_PLAYCTL_I2S_EN | KIRKWOOD_PLAYCTL_SPDIF_EN);
267 ctl &= ~KIRKWOOD_PLAYCTL_ENABLE_MASK;
270 writel(ctl, priv->io + KIRKWOOD_PLAYCTL);
271 break;
272
273 case SNDRV_PCM_TRIGGER_PAUSE_PUSH:
274 case SNDRV_PCM_TRIGGER_SUSPEND:
275 ctl |= KIRKWOOD_PLAYCTL_PAUSE | KIRKWOOD_PLAYCTL_I2S_MUTE;
276 writel(ctl, priv->io + KIRKWOOD_PLAYCTL);
277 break;

--- 103 unchanged lines hidden (view full) ---

381
382 reg_data = readl(priv->io + 0x1200);
383 reg_data &= (~(0x333FF8));
384 reg_data |= 0x111D18;
385 writel(reg_data, priv->io + 0x1200);
386
387 /* disable playback/record */
388 value = readl(priv->io + KIRKWOOD_PLAYCTL);
268 writel(ctl, priv->io + KIRKWOOD_PLAYCTL);
269 break;
270
271 case SNDRV_PCM_TRIGGER_PAUSE_PUSH:
272 case SNDRV_PCM_TRIGGER_SUSPEND:
273 ctl |= KIRKWOOD_PLAYCTL_PAUSE | KIRKWOOD_PLAYCTL_I2S_MUTE;
274 writel(ctl, priv->io + KIRKWOOD_PLAYCTL);
275 break;

--- 103 unchanged lines hidden (view full) ---

379
380 reg_data = readl(priv->io + 0x1200);
381 reg_data &= (~(0x333FF8));
382 reg_data |= 0x111D18;
383 writel(reg_data, priv->io + 0x1200);
384
385 /* disable playback/record */
386 value = readl(priv->io + KIRKWOOD_PLAYCTL);
389 value &= ~(KIRKWOOD_PLAYCTL_I2S_EN|KIRKWOOD_PLAYCTL_SPDIF_EN);
387 value &= ~KIRKWOOD_PLAYCTL_ENABLE_MASK;
390 writel(value, priv->io + KIRKWOOD_PLAYCTL);
391
392 value = readl(priv->io + KIRKWOOD_RECCTL);
393 value &= ~(KIRKWOOD_RECCTL_I2S_EN | KIRKWOOD_RECCTL_SPDIF_EN);
394 writel(value, priv->io + KIRKWOOD_RECCTL);
395
396 return 0;
397

--- 164 unchanged lines hidden ---
388 writel(value, priv->io + KIRKWOOD_PLAYCTL);
389
390 value = readl(priv->io + KIRKWOOD_RECCTL);
391 value &= ~(KIRKWOOD_RECCTL_I2S_EN | KIRKWOOD_RECCTL_SPDIF_EN);
392 writel(value, priv->io + KIRKWOOD_RECCTL);
393
394 return 0;
395

--- 164 unchanged lines hidden ---