ALSA: AC97: add full duplex support for atmel AT91 and AVR.
This patch add full duplex support on AT91 and AVR. It was a bug: we needed to check first if there are some chips opened so we could enable both reception and sending of the data. Signed-off-by: Sedji Gaouaou <sedji.gaouaou@atmel.com> Acked-by: Liam Girdwood <lrg@slimlogic.co.uk> Acked-by: Mark Brown <broonie@opensource.wolfsonmicro.com> Signed-off-by: Takashi Iwai <tiwai@suse.de>
This commit is contained in:
parent
7177395fdd
commit
ec2755a93d
|
@ -339,7 +339,11 @@ static int atmel_ac97c_playback_prepare(struct snd_pcm_substream *substream)
|
|||
ac97c_writel(chip, OCA, word);
|
||||
|
||||
/* configure sample format and size */
|
||||
word = ac97c_readl(chip, CAMR);
|
||||
if (chip->opened <= 1)
|
||||
word = AC97C_CMR_DMAEN | AC97C_CMR_SIZE_16;
|
||||
else
|
||||
word |= AC97C_CMR_DMAEN | AC97C_CMR_SIZE_16;
|
||||
|
||||
switch (runtime->format) {
|
||||
case SNDRV_PCM_FORMAT_S16_LE:
|
||||
|
@ -426,7 +430,11 @@ static int atmel_ac97c_capture_prepare(struct snd_pcm_substream *substream)
|
|||
ac97c_writel(chip, ICA, word);
|
||||
|
||||
/* configure sample format and size */
|
||||
word = ac97c_readl(chip, CAMR);
|
||||
if (chip->opened <= 1)
|
||||
word = AC97C_CMR_DMAEN | AC97C_CMR_SIZE_16;
|
||||
else
|
||||
word |= AC97C_CMR_DMAEN | AC97C_CMR_SIZE_16;
|
||||
|
||||
switch (runtime->format) {
|
||||
case SNDRV_PCM_FORMAT_S16_LE:
|
||||
|
@ -506,7 +514,7 @@ atmel_ac97c_playback_trigger(struct snd_pcm_substream *substream, int cmd)
|
|||
} else {
|
||||
ptcr = ATMEL_PDC_TXTEN;
|
||||
}
|
||||
camr |= AC97C_CMR_CENA;
|
||||
camr |= AC97C_CMR_CENA | AC97C_CSR_ENDTX;
|
||||
break;
|
||||
case SNDRV_PCM_TRIGGER_PAUSE_PUSH: /* fall through */
|
||||
case SNDRV_PCM_TRIGGER_SUSPEND: /* fall through */
|
||||
|
@ -551,7 +559,7 @@ atmel_ac97c_capture_trigger(struct snd_pcm_substream *substream, int cmd)
|
|||
} else {
|
||||
ptcr = ATMEL_PDC_RXTEN;
|
||||
}
|
||||
camr |= AC97C_CMR_CENA;
|
||||
camr |= AC97C_CMR_CENA | AC97C_CSR_ENDRX;
|
||||
break;
|
||||
case SNDRV_PCM_TRIGGER_PAUSE_PUSH: /* fall through */
|
||||
case SNDRV_PCM_TRIGGER_SUSPEND: /* fall through */
|
||||
|
|
Loading…
Reference in New Issue