Linus Torvalds | 1da177e | 2005-04-16 15:20:36 -0700 | [diff] [blame] | 1 | An OSS/Lite Driver for the ESS Maestro3 family of sound chips |
| 2 | |
| 3 | Zach Brown, January 2001 |
| 4 | |
| 5 | Driver Status and Availability |
| 6 | ------------------------------ |
| 7 | |
| 8 | The most recent version of this driver will hopefully always be available at |
| 9 | http://www.zabbo.net/maestro3/ |
| 10 | |
| 11 | I will try and maintain the most recent stable version of the driver |
| 12 | in both the stable and development kernel lines. |
| 13 | |
| 14 | Historically I've sucked pretty hard at actually doing that, however. |
| 15 | |
| 16 | ESS Maestro3 Chip Family |
| 17 | ----------------------- |
| 18 | |
| 19 | The 'Maestro3' is much like the Maestro2 chip. The noted improvement |
| 20 | is the removal of the silicon in the '2' that did PCM mixing. All that |
| 21 | work is now done through a custom DSP called the ASSP, the Asynchronus |
| 22 | Specific Signal Processor. |
| 23 | |
| 24 | The 'Allegro' is a baby version of the Maestro3. I'm not entirely clear |
| 25 | on the extent of the differences, but the driver supports them both :) |
| 26 | |
| 27 | The 'Allegro' shows up as PCI ID 0x1988 and the Maestro3 as 0x1998, |
| 28 | both under ESS's vendor ID of 0x125D. The Maestro3 can also show up as |
| 29 | 0x199a when hardware strapping is used. |
| 30 | |
| 31 | The chip can also act as a multi function device. The modem IDs follow |
| 32 | the audio multimedia device IDs. (so the modem part of an Allegro shows |
| 33 | up as 0x1989) |
| 34 | |
| 35 | Driver OSS Behavior |
| 36 | -------------------- |
| 37 | |
| 38 | This OSS driver exports /dev/mixer and /dev/dsp to applications, which |
| 39 | mostly adhere to the OSS spec. This driver doesn't register itself |
| 40 | with /dev/sndstat, so don't expect information to appear there. |
| 41 | |
| 42 | The /dev/dsp device exported behaves as expected. Playback is |
| 43 | supported in all the various lovely formats. 8/16bit stereo/mono from |
| 44 | 8khz to 48khz, with both read()/write(), and mmap(). |
| 45 | |
| 46 | /dev/mixer is an interface to the AC'97 codec on the Maestro3. It is |
| 47 | worth noting that there are a variety of AC'97s that can be wired to |
| 48 | the Maestro3. Which is used is entirely up to the hardware implementor. |
| 49 | This should only be visible to the user by the presence, or lack, of |
| 50 | 'Bass' and 'Treble' sliders in the mixer. Not all AC'97s have them. |
| 51 | The Allegro has an onchip AC'97. |
| 52 | |
| 53 | The driver doesn't support MIDI or FM playback at the moment. |
| 54 | |
| 55 | Compiling and Installing |
| 56 | ------------------------ |
| 57 | |
| 58 | With the drivers inclusion into the kernel, compiling and installing |
| 59 | is the same as most OSS/Lite modular sound drivers. Compilation |
| 60 | of the driver is enabled through the CONFIG_SOUND_MAESTRO3 variable |
| 61 | in the config system. |
| 62 | |
| 63 | It may be modular or statically linked. If it is modular it should be |
| 64 | installed with the rest of the modules for the kernel on the system. |
| 65 | Typically this will be in /lib/modules/ somewhere. 'alias sound-slot-0 |
| 66 | maestro3' should also be added to your module configs (typically |
| 67 | /etc/modprobe.conf) if you're using modular OSS/Lite sound and want to |
| 68 | default to using a maestro3 chip. |
| 69 | |
| 70 | There are very few options to the driver. One is 'debug' which will |
| 71 | tell the driver to print minimal debugging information as it runs. This |
| 72 | can be collected with 'dmesg' or through the klogd daemon. |
| 73 | |
| 74 | One is 'external_amp', which tells the driver to attempt to enable |
| 75 | an external amplifier. This defaults to '1', you can tell the driver |
| 76 | not to bother enabling such an amplifier by setting it to '0'. |
| 77 | |
| 78 | And the last is 'gpio_pin', which tells the driver which GPIO pin number |
| 79 | the external amp uses (0-15), The Allegro uses 8 by default, all others 1. |
| 80 | If everything loads correctly and seems to be working but you get no sound, |
| 81 | try tweaking this value. |
| 82 | |
| 83 | Systems known to need a different value |
| 84 | Panasonic ToughBook CF-72: gpio_pin=13 |
| 85 | |
| 86 | Power Management |
| 87 | ---------------- |
| 88 | |
| 89 | This driver has a minimal understanding of PCI Power Management. It will |
| 90 | try and power down the chip when the system is suspended, and power |
| 91 | it up with it is resumed. It will also try and power down the chip |
| 92 | when the machine is shut down. |