Subject: Complex Sound Card
To: None <firstname.lastname@example.org>
From: Rene Hexel <email@example.com>
Date: 08/09/1999 19:26:21
I am currently considering writing a NetBSD audio driver for the Terratec
EWS 64XL audio card. This card consists of several interconnected units that
are grouped around a DSP chip with 64 independent audio channels, 1 external
MIDI interface, a MIDI synthesizer, etc. The other units consist of a couple
of mixers, a Windows Sound System compatible CoDec, an additional MIDI
interface, a MOD interface, and some digital I/O circuits.
My biggest problem at the moment (apart from getting decent documentation
for that board) is that this card registers as several different PnP devices,
wss0 at isapnp0 port 0x534/4,0x388/4,0x220/16 irq 5 drq 1,0
wss0: AudioSystem EWS64 CoDec: CS4236/CS4236B
audio0 at wss0: full duplex
joy0 at isapnp0 port 0x201/1
joy0: AudioSystem EWS64 Game Port
joy0: joystick not connected
isapnp0: <AudioSystem EWS64, CSCA810, , CTRL> port 0x538/8 not configured
isapnp0: <AudioSystem EWS64, CSCA803, , MIDI-2> port 0x340/2 not configured
isapnp0: <AudioSystem EWS64, CSC9407, , Synth> port 0x330/4 not configured
isapnp0: <AudioSystem EWS64, CSCA805, , Digital CTRL> port 0x100/1 not configured
Now, here are my questions:
* what is the recommended way of supporting multiple audio channels? The
only possibility I currently see is
audio1 at ...
audio2 at ...
audio3 at ...
With the current numbering scheme (minor device numbers) this limits the
maximum number of possible channels to 16. Is there any other (better)
way of handling this?
* The mixer device(s) are "above" the audio devices, i.e., they control
the volume of all audio devices. There are currently two ways of
- add the mixer as another, fake, "audioN" device (yuck!), further
reducing the number of available 'real' audio channels, or
- let the mixer device seek out the existing audio devices and extend
their /dev/mixer capabilities. In this case, what is the recommended
practice for one device to find another device on the same physical
* What about card-specific features, like uploading the firmware (which,
unfortunately, is proprietary), uploading MIDI sound sets, etc.? Should
they be handled through private ioctls, standard ioctls (which?), or an
additional device like /dev/ews?
Any recommendations to do TRT would be welcome ...