But there is more justification. On the Prometheus Aria 16, I found it necessary to configure the sound card via MSDOS on each cold boot. (Yes, the soft jumper settings are forgotten each time.) So purging my system of any Microsoft was a primary objective in writing this driver. (Yes, there is no more Microsoft on my drive..)
So far I have been able to play and record on the sound card in all those modes that I wanted. Sometimes I can record and play at the same time. (Though I have not yet chased down what causes the 'sometimes' part.)
I have begun the mixer interface. Not finished, but a decent amount is. It mutes monitoring of the inputs, and changes most of the levels effectively...
What I haven't done:
And on that note, I shall mention that it has only been tested on an Aria 16, produced by Prometheus. The resetting of the irq and iobase, etc should not interfere with other cards, but who knows. I will eventually put a config flag in to not try to do it, for those lucky souls who have hard jumpers...
In the configuration file it is necessary to specify the port and the irq, since I have not coded any auto recognition. (For my card the first thing that I do is tell the card where it is, and if I don't tell it then it doesn't respond...)
Another note is that to test the mixer device nicely you could get ftp://sipb.mit.edu/pub/netbsd/GUS/xmixer.i386.gz , by John T. Kohl. It is what I am using to test the driver.
If you wish to have a look at the code, here it is:
If you want to try the code, you must put these two files in sys/dev/isa, and append this:# Soundcards based on Sierra's Aria chipset. # Such as the Prometheus Aria 16 or the Diamond # sonic sound. device aria at isa: audio, mulaw file dev/isa/aria.cto the end of sys/dev/isa/files.isa
These files were last modified on the 19th of November.
The code can also be obtained from ftp.imrryr.org
The configuration options are:
aria0 at isa? port 0x280 irq 12
The allowable ports are:
The allowable irqs are:
Well, this is a horrible section to have to write about my own code, but here goes...
I am only going to consider the bugs in what I am trying to accomplish so far, not stylistic ones, or things like the lack of features. :) A good approach, I think. If nothing else it makes the description shorter.
I have only found one bug, and it is elusive: under certain conditions that I have not yet determined the audio drops out and sometimes the entire card dies (including the external input from my CD player that is just played onto the speakers.) I am in the process of completely rewriting how the commands are sent so that it is condensed and so that the conditions are easier to find...