| 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. |