Maestro
上传用户:jlfgdled
上传日期:2013-04-10
资源大小:33168k
文件大小:6k
- An OSS/Lite Driver for the ESS Maestro family of sound cards
- Zach Brown, December 1999
- Driver Status and Availability
- ------------------------------
- The most recent version of this driver will hopefully always be available at
- http://www.zabbo.net/maestro/
- I will try and maintain the most recent stable version of the driver
- in both the stable and development kernel lines.
- ESS Maestro Chip Family
- -----------------------
- There are 3 main variants of the ESS Maestro PCI sound chip. The first
- is the Maestro 1. It was originally produced by Platform Tech as the
- 'AGOGO'. It can be recognized by Platform Tech's PCI ID 0x1285 with
- 0x0100 as the device ID. It was put on some sound boards and a few laptops.
- ESS bought the design and cleaned it up as the Maestro 2. This starts
- their marking with the ESS vendor ID 0x125D and the 'year' device IDs.
- The Maestro 2 claims 0x1968 while the Maestro 2e has 0x1978.
- The various families of Maestro are mostly identical as far as this
- driver is concerned. It doesn't touch the DSP parts that differ (though
- it could for FM synthesis).
- 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 almost as expected. Playback is
- supported in all the various lovely formats. 8/16bit stereo/mono from
- 8khz to 48khz, and mmap()ing for playback behaves. Capture/recording
- is limited due to oddities with the Maestro hardware. One can only
- record in 16bit stereo. For recording the maestro uses non interleaved
- stereo buffers so that mmap()ing the incoming data does not result in
- a ring buffer of LRLR data. mmap()ing of the read buffers is therefore
- disallowed until this can be cleaned up.
- /dev/mixer is an interface to the AC'97 codec on the Maestro. It is
- worth noting that there are a variety of AC'97s that can be wired to
- the Maestro. 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 driver doesn't support MIDI or FM playback at the moment. Typically
- the Maestro is wired to an MPU MIDI chip, but some hardware implementations
- don't. We need to assemble a white list of hardware implementations that
- have MIDI wired properly before we can claim to support it safely.
- 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_MAESTRO 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 maestro'
- should also be added to your module configs (typically /etc/conf.modules)
- if you're using modular OSS/Lite sound and want to default to using a
- maestro chip.
- As this is a PCI device, the module does not need to be informed of
- any IO or IRQ resources it should use, it devines these from the
- system. Sometimes, on sucky PCs, the BIOS fails to allocated resources
- for the maestro. This will result in a message like:
- maestro: PCI subsystem reports IRQ 0, this might not be correct.
- from the kernel. Should this happen the sound chip most likely will
- not operate correctly. To solve this one has to dig through their BIOS
- (typically entered by hitting a hot key at boot time) and figure out
- what magic needs to happen so that the BIOS will reward the maestro with
- an IRQ. This operation is incredibly system specific, so you're on your
- own. Sometimes the magic lies in 'PNP Capable Operating System' settings.
- 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.
- The other, more interesting option, is 'dsps_order'. Typically at
- install time the driver will only register one available /dev/dsp device
- for its use. The 'dsps_order' module parameter allows for more devices
- to be allocated, as a power of two. Up to 4 devices can be registered
- ( dsps_order=2 ). These devices act as fully distinct units and use
- separate channels in the maestro.
- Power Management
- ----------------
- As of version 0.14, this driver has a minimal understanding of PCI
- Power Management. If it finds a valid power management capability
- on the PCI device it will attempt to use the power management
- functions of the maestro. It will only do this on Maestro 2Es and
- only on machines that are known to function well. You can
- force the use of power management by setting the 'use_pm' module
- option to 1, or can disable it entirely by setting it to 0.
- When using power management, the driver does a few things
- differently. It will keep the chip in a lower power mode
- when the module is inserted but /dev/dsp is not open. This
- allows the mixer to function but turns off the clocks
- on other parts of the chip. When /dev/dsp is opened the chip
- is brought into full power mode, and brought back down
- when it is closed. It also powers down the chip entirely
- when the module is removed or the machine is shutdown. This
- can have nonobvious consequences. CD audio may not work
- after a power managing driver is removed. Also, software that
- doesn't understand power management may not be able to talk
- to the powered down chip until the machine goes through a hard
- reboot to bring it back.
- .. more details ..
- ------------------
- drivers/sound/maestro.c contains comments that hopefully explain
- the maestro implementation.