Re: Reg: Sound Card Duplex

From: Christoph Hellwig (chhellwig@gmx.net)
Date: Wed Apr 05 2000 - 23:31:54 EST


On Thu, Apr 06, 2000 at 04:28:21AM +0200, Zoran Davidovac wrote:
>
> DarkThree:/usr/src/linux/drivers/sound# grep DSP_CAP_DUPLEX *
> audio.c: val |= DSP_CAP_DUPLEX;
^^^^^^^^^^^
audio.c is part of the OSS code ...

> [...]
>
> AND I was talking about OSS drivers AND JUST OSS !
>
> So the answer was and is:
> The oss drivers in kernel src do half duplex in 2.2.X series !!
> Unless if they are not comercial modules and pnp-tools!

I've only looked at 2.3 but there were not too many changes in the
OSS code between 2.2 and 2.2.
You have to grep the OSS source for DMA_DUPLEX, to see which card
can do full duplex:

sb:/usr/src/linux/drivers/sound# grep DMA_DUPLEX *
ad1816.c: devc->audio_mode=DMA_AUTOMODE|DMA_DUPLEX;
ad1848.c: if (audio_devs[dev]->flags & DMA_DUPLEX)
ad1848.c: if (devc->audio_flags & DMA_DUPLEX)
ad1848.c: devc->audio_flags &= ~DMA_DUPLEX;
ad1848.c: devc->audio_flags &= ~DMA_DUPLEX;
ad1848.c: devc->audio_flags |= DMA_DUPLEX;
audio.c: if (audio_devs[dev]->flags & DMA_DUPLEX)
audio.c: if ((audio_devs[dev]->audio_mode & AM_WRITE) && !(audio_devs[dev]->flags & DMA_DUPLEX))
audio.c: if (audio_devs[dev]->flags & DMA_DUPLEX)
audio.c: if ((audio_devs[dev]->audio_mode & AM_WRITE) && !(audio_devs[dev]->flags & DMA_DUPLEX))
audio.c: if ((audio_devs[dev]->audio_mode & AM_READ) && !(audio_devs[dev]->flags & DMA_DUPLEX))
audio.c: if (audio_devs[dev]->flags & DMA_DUPLEX &&
audio.c: return (audio_devs[dev]->flags & DMA_DUPLEX) ? 0 : -EIO;
audio.c: (audio_devs[dev]->flags & DMA_DUPLEX &&
audio.c: if (cmd == SNDCTL_DSP_GETISPACE && audio_devs[dev]->flags & DMA
dev_table.h:#define DMA_DUPLEX 0x04
dmabuf.c: if (!(adev->flags & DMA_DUPLEX))
dmabuf.c: adev->flags &= ~DMA_DUPLEX;
dmabuf.c: if (mode == OPEN_READ || (mode != OPEN_WRITE && (adev->flags & DMA_DUPLEX))) {
dmabuf.c: if (!(adev->flags & DMA_DUPLEX) || !adev->d->halt_output)
dmabuf.c: if (!(adev->flags & DMA_DUPLEX) || !adev->d->halt_input)
dmabuf.c: (adev->flags & DMA_DUPLEX)))
dmabuf.c: if (adev->flags & DMA_DUPLEX) {
dmabuf.c: if (adev->flags & DMA_DUPLEX)
gus_wave.c: DMA_DUPLEX : 0),
sb_audio.c: audio_flags |= DMA_DUPLEX;
sb_ess.c: *audio_flags |= DMA_DUPLEX;
waveartist.c: devc->audio_flags |= DMA_DUPLEX;

As you can see the ad1816, ad1848, gus, sb and waveartist drivers can do full
duplex in 2.3.99pre4 and I bet in 2.2 too.

Christoph

-- 
Always remember that you are unique.  Just like everyone else.

- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.rutgers.edu Please read the FAQ at http://www.tux.org/lkml/



This archive was generated by hypermail 2b29 : Fri Apr 07 2000 - 21:00:16 EST