93 lines
		
	
	
	
		
			3.7 KiB
			
		
	
	
	
		
			Text
		
	
	
	
	
	
		
		
			
		
	
	
			93 lines
		
	
	
	
		
			3.7 KiB
			
		
	
	
	
		
			Text
		
	
	
	
	
	
|   | 	An OSS/Lite Driver for the ESS Maestro3 family of sound chips | ||
|  | 
 | ||
|  | 			Zach Brown, January 2001 | ||
|  | 
 | ||
|  | Driver Status and Availability | ||
|  | ------------------------------ | ||
|  | 
 | ||
|  | The most recent version of this driver will hopefully always be available at | ||
|  | 	http://www.zabbo.net/maestro3/ | ||
|  | 
 | ||
|  | I will try and maintain the most recent stable version of the driver | ||
|  | in both the stable and development kernel lines. | ||
|  | 
 | ||
|  | Historically I've sucked pretty hard at actually doing that, however. | ||
|  | 
 | ||
|  | ESS Maestro3 Chip Family | ||
|  | ----------------------- | ||
|  | 
 | ||
|  | The 'Maestro3' is much like the Maestro2 chip.  The noted improvement | ||
|  | is the removal of the silicon in the '2' that did PCM mixing.  All that | ||
|  | work is now done through a custom DSP called the ASSP, the Asynchronus | ||
|  | Specific Signal Processor. | ||
|  | 
 | ||
|  | The 'Allegro' is a baby version of the Maestro3.  I'm not entirely clear | ||
|  | on the extent of the differences, but the driver supports them both :) | ||
|  | 
 | ||
|  | The 'Allegro' shows up as PCI ID 0x1988 and the Maestro3 as 0x1998, | ||
|  | both under ESS's vendor ID of 0x125D.  The Maestro3 can also show up as | ||
|  | 0x199a when hardware strapping is used. | ||
|  | 
 | ||
|  | The chip can also act as a multi function device.  The modem IDs follow | ||
|  | the audio multimedia device IDs.  (so the modem part of an Allegro shows | ||
|  | up as 0x1989) | ||
|  | 
 | ||
|  | Driver OSS Behavior | ||
|  | -------------------- | ||
|  | 
 | ||
|  | This OSS driver exports /dev/mixer and /dev/dsp to applications, which | ||
|  | mostly adhere to the OSS spec.   This driver doesn't register itself | ||
|  | with /dev/sndstat, so don't expect information to appear there. | ||
|  | 
 | ||
|  | The /dev/dsp device exported behaves as expected.  Playback is | ||
|  | supported in all the various lovely formats.  8/16bit stereo/mono from | ||
|  | 8khz to 48khz, with both read()/write(), and mmap(). | ||
|  | 
 | ||
|  | /dev/mixer is an interface to the AC'97 codec on the Maestro3.  It is | ||
|  | worth noting that there are a variety of AC'97s that can be wired to | ||
|  | the Maestro3.  Which is used is entirely up to the hardware implementor. | ||
|  | This should only be visible to the user by the presence, or lack, of | ||
|  | 'Bass' and 'Treble' sliders in the mixer.  Not all AC'97s have them. | ||
|  | The Allegro has an onchip AC'97. | ||
|  | 
 | ||
|  | The driver doesn't support MIDI or FM playback at the moment. | ||
|  | 
 | ||
|  | Compiling and Installing | ||
|  | ------------------------ | ||
|  | 
 | ||
|  | With the drivers inclusion into the kernel, compiling and installing | ||
|  | is the same as most OSS/Lite modular sound drivers.  Compilation | ||
|  | of the driver is enabled through the CONFIG_SOUND_MAESTRO3 variable | ||
|  | in the config system.   | ||
|  | 
 | ||
|  | It may be modular or statically linked.  If it is modular it should be | ||
|  | installed with the rest of the modules for the kernel on the system. | ||
|  | Typically this will be in /lib/modules/ somewhere.  'alias sound-slot-0 | ||
|  | maestro3' should also be added to your module configs (typically | ||
|  | /etc/modprobe.conf) if you're using modular OSS/Lite sound and want to | ||
|  | default to using a maestro3 chip. | ||
|  | 
 | ||
|  | There are very few options to the driver.  One is 'debug' which will  | ||
|  | tell the driver to print minimal debugging information as it runs.  This | ||
|  | can be collected with 'dmesg' or through the klogd daemon. | ||
|  | 
 | ||
|  | One is 'external_amp', which tells the driver to attempt to enable | ||
|  | an external amplifier.  This defaults to '1', you can tell the driver | ||
|  | not to bother enabling such an amplifier by setting it to '0'. | ||
|  | 
 | ||
|  | And the last is 'gpio_pin', which tells the driver which GPIO pin number | ||
|  | the external amp uses (0-15), The Allegro uses 8 by default, all others 1. | ||
|  | If everything loads correctly and seems to be working but you get no sound,  | ||
|  | try tweaking this value.  | ||
|  | 
 | ||
|  | Systems known to need a different value | ||
|  |         Panasonic ToughBook CF-72: gpio_pin=13  | ||
|  | 
 | ||
|  | Power Management | ||
|  | ---------------- | ||
|  | 
 | ||
|  | This driver has a minimal understanding of PCI Power Management.  It will | ||
|  | try and power down the chip when the system is suspended, and power | ||
|  | it up with it is resumed.  It will also try and power down the chip | ||
|  | when the machine is shut down. |