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