ESS Maestro 3/Allegro
This driver is a work in progress and aims to support the ESS
Maestro 3 and Allegro sound cards. It is based on Darrell Anderson's 4.2-STABLE
maestro3 driver found
here,
which in turn is based on Zach Brown's Linux driver found
here. This driver now works on
5.0-CURRENT and 4-STABLE.
Background
The Maestro3 and Allegro cards contain an AC97 compliant mixer and
programmable DSP. What makes this card magic is that pcm functions
are performed by firmware that is loaded into the dsp core. Unfortunately,
ESS has not released any programming specs on the DSP and has only provided
firmware images for the dsp kernel and a simple sample-rate-converter.
The firmware images also seems to be GPL'd at this time; I
hope to have them re-licensed before final release.
Fun fact: I've discovered that the Maestro3 can play up to 32 channels
simulateously (the Allegro can only do 16). /dev/dsp0.[0-31] anyone?
Status
I now consider this done, with the exception of maintenance/bug fixes.
Four play and one record channels are enabled and the mixer works, though I
can't figure out the magic for the volume buttons found on many laptops with
these chips. The headers may or may not ever be
re-written/re-licensed to a BSD license. Still, good luck, have fun with this,
please let me know of your success/failure, and don't blame me when
your computer catches fire.
UPDATE Mar 4, 2001
A couple of weeks ago the pcm framework was fixed in -STABLE to allow sound
hardware drivers to be loaded as modules (thanks Cameron). As a result, I
have checked in the maestro3 driver to -STABLE in preparation for the release
of FreeBSD 4.3. Thanks once again to Darrell and Cameron for everything they
did to make this happen.
UPDATE Feb 9, 2001
No changes, just wanted to let people know that neither mine nor Darrell's driver will work in -STABLE right now. We are working on resolving this.
UPDATE Feb 1, 2001
The driver has made it into 5.0-CURRENT. I will put it into the 4-STABLE branch
once it has had a little shake-out time. Until then, head over to Darrell's
page
and get his 4-STABLE version of the driver.
UPDATE Jan 31, 2001
Did some more cleanups in preparation for committing the driver.
UPDATE Jan 27, 2001
Cleanup has been done, and a few small things tweaked. I'm hoping to get this
checked in to -current soon. Unfortunately, it seems that re-licensing the
headers has stalled, so this driver will not be part of the GENERIC kernel.
UPDATE Jan 5, 2001
Recording seems to work. I'm not having much luck with the built-in mike on my
system, but recording from the CD channel works. So I have enabled one
recording channel. Yah! I am also trying to get the hardware volume control
buttons to work; they appear to be fairly simple, yet there is something I'm
missing. Please let me know if they work for you.
UPDATE Dec 31, 2000
I have merged with Darrell Anderson's driver and adapted it for 5.0-CURRENT.
As an added bonus, this driver also suspends/resumes correctly.
Bugs
- Initializing the mixer funks up the level settings of the various channels.
- Suspend/resume doesn't re-init the mixer, due to (1).
- When allocating the DMA buffer, no check is made that the buffer was actually
allocated. Darrell has this fixed, I've just been to lazy to do the same.
- Locking is desperately needed. I'm kinda scared to find out if the driver
works on SMP or not.
Files
/sys/modules/sound/driver/maestro3/Makefile
/sys/dev/sound/pci/maestro3.c
/sys/gnu/dev/sound/pci/maestro3_reg.h
/sys/gnu/dev/sound/pci/maestro3_dsp.h
/sys/dev/sound/pcm/ac97.c.diff patch for existing ac97.c (optional, not needed for operation)
Authors
Scott Long
Darrel Anderson