1 An OSS/Lite Driver for the ESS Maestro family of sound cards 2 3 Zach Brown, December 1999 4 5Driver Status and Availability 6------------------------------ 7 8The most recent version of this driver will hopefully always be available at 9 http://www.zabbo.net/maestro/ 10 11I will try and maintain the most recent stable version of the driver 12in both the stable and development kernel lines. 13 14ESS Maestro Chip Family 15----------------------- 16 17There are 3 main variants of the ESS Maestro PCI sound chip. The first 18is the Maestro 1. It was originally produced by Platform Tech as the 19'AGOGO'. It can be recognized by Platform Tech's PCI ID 0x1285 with 200x0100 as the device ID. It was put on some sound boards and a few laptops. 21ESS bought the design and cleaned it up as the Maestro 2. This starts 22their marking with the ESS vendor ID 0x125D and the 'year' device IDs. 23The Maestro 2 claims 0x1968 while the Maestro 2e has 0x1978. 24 25The various families of Maestro are mostly identical as far as this 26driver is concerned. It doesn't touch the DSP parts that differ (though 27it could for FM synthesis). 28 29Driver OSS Behavior 30-------------------- 31 32This OSS driver exports /dev/mixer and /dev/dsp to applications, which 33mostly adhere to the OSS spec. This driver doesn't register itself 34with /dev/sndstat, so don't expect information to appear there. 35 36The /dev/dsp device exported behaves almost as expected. Playback is 37supported in all the various lovely formats. 8/16bit stereo/mono from 388khz to 48khz, and mmap()ing for playback behaves. Capture/recording 39is limited due to oddities with the Maestro hardware. One can only 40record in 16bit stereo. For recording the maestro uses non interleaved 41stereo buffers so that mmap()ing the incoming data does not result in 42a ring buffer of LRLR data. mmap()ing of the read buffers is therefore 43disallowed until this can be cleaned up. 44 45/dev/mixer is an interface to the AC'97 codec on the Maestro. It is 46worth noting that there are a variety of AC'97s that can be wired to 47the Maestro. Which is used is entirely up to the hardware implementor. 48This should only be visible to the user by the presence, or lack, of 49'Bass' and 'Treble' sliders in the mixer. Not all AC'97s have them. 50 51The driver doesn't support MIDI or FM playback at the moment. Typically 52the Maestro is wired to an MPU MIDI chip, but some hardware implementations 53don't. We need to assemble a white list of hardware implementations that 54have MIDI wired properly before we can claim to support it safely. 55 56Compiling and Installing 57------------------------ 58 59With the drivers inclusion into the kernel, compiling and installing 60is the same as most OSS/Lite modular sound drivers. Compilation 61of the driver is enabled through the CONFIG_SOUND_MAESTRO variable 62in the config system. 63 64It may be modular or statically linked. If it is modular it should be 65installed with the rest of the modules for the kernel on the system. 66Typically this will be in /lib/modules/ somewhere. 'alias sound maestro' 67should also be added to your module configs (typically /etc/conf.modules) 68if you're using modular OSS/Lite sound and want to default to using a 69maestro chip. 70 71As this is a PCI device, the module does not need to be informed of 72any IO or IRQ resources it should use, it devines these from the 73system. Sometimes, on sucky PCs, the BIOS fails to allocated resources 74for the maestro. This will result in a message like: 75 maestro: PCI subsystem reports IRQ 0, this might not be correct. 76from the kernel. Should this happen the sound chip most likely will 77not operate correctly. To solve this one has to dig through their BIOS 78(typically entered by hitting a hot key at boot time) and figure out 79what magic needs to happen so that the BIOS will reward the maestro with 80an IRQ. This operation is incredibly system specific, so you're on your 81own. Sometimes the magic lies in 'PNP Capable Operating System' settings. 82 83There are very few options to the driver. One is 'debug' which will 84tell the driver to print minimal debugging information as it runs. This 85can be collected with 'dmesg' or through the klogd daemon. 86 87The other, more interesting option, is 'dsps_order'. Typically at 88install time the driver will only register one available /dev/dsp device 89for its use. The 'dsps_order' module parameter allows for more devices 90to be allocated, as a power of two. Up to 4 devices can be registered 91( dsps_order=2 ). These devices act as fully distinct units and use 92separate channels in the maestro. 93 94Power Management 95---------------- 96 97As of version 0.14, this driver has a minimal understanding of PCI 98Power Management. If it finds a valid power management capability 99on the PCI device it will attempt to use the power management 100functions of the maestro. It will only do this on Maestro 2Es and 101only on machines that are known to function well. You can 102force the use of power management by setting the 'use_pm' module 103option to 1, or can disable it entirely by setting it to 0. 104 105When using power management, the driver does a few things 106differently. It will keep the chip in a lower power mode 107when the module is inserted but /dev/dsp is not open. This 108allows the mixer to function but turns off the clocks 109on other parts of the chip. When /dev/dsp is opened the chip 110is brought into full power mode, and brought back down 111when it is closed. It also powers down the chip entirely 112when the module is removed or the machine is shutdown. This 113can have nonobvious consequences. CD audio may not work 114after a power managing driver is removed. Also, software that 115doesn't understand power management may not be able to talk 116to the powered down chip until the machine goes through a hard 117reboot to bring it back. 118 119.. more details .. 120------------------ 121 122drivers/sound/maestro.c contains comments that hopefully explain 123the maestro implementation. 124