linux/Documentation/sound/alsa/CMIPCI.txt
<<
>>
Prefs
   1         Brief Notes on C-Media 8338/8738/8768/8770 Driver
   2         =================================================
   3
   4                   Takashi Iwai <tiwai@suse.de>
   5
   6
   7Front/Rear Multi-channel Playback
   8---------------------------------
   9
  10CM8x38 chip can use ADC as the second DAC so that two different stereo
  11channels can be used for front/rear playbacks.  Since there are two
  12DACs, both streams are handled independently unlike the 4/6ch multi-
  13channel playbacks in the section below.
  14
  15As default, ALSA driver assigns the first PCM device (i.e. hw:0,0 for
  16card#0) for front and 4/6ch playbacks, while the second PCM device
  17(hw:0,1) is assigned to the second DAC for rear playback.
  18
  19There are slight differences between the two DACs:
  20
  21- The first DAC supports U8 and S16LE formats, while the second DAC
  22  supports only S16LE.
  23- The second DAC supports only two channel stereo.
  24
  25Please note that the CM8x38 DAC doesn't support continuous playback
  26rate but only fixed rates: 5512, 8000, 11025, 16000, 22050, 32000,
  2744100 and 48000 Hz.
  28
  29The rear output can be heard only when "Four Channel Mode" switch is
  30disabled.  Otherwise no signal will be routed to the rear speakers.
  31As default it's turned on.
  32
  33*** WARNING ***
  34When "Four Channel Mode" switch is off, the output from rear speakers
  35will be FULL VOLUME regardless of Master and PCM volumes.
  36This might damage your audio equipment.  Please disconnect speakers
  37before your turn off this switch.
  38*** WARNING ***
  39
  40[ Well.. I once got the output with correct volume (i.e. same with the
  41  front one) and was so excited.  It was even with "Four Channel" bit
  42  on and "double DAC" mode.  Actually I could hear separate 4 channels
  43  from front and rear speakers!  But.. after reboot, all was gone.
  44  It's a very pity that I didn't save the register dump at that
  45  time..  Maybe there is an unknown register to achieve this... ]
  46
  47If your card has an extra output jack for the rear output, the rear
  48playback should be routed there as default.  If not, there is a
  49control switch in the driver "Line-In As Rear", which you can change
  50via alsamixer or somewhat else.  When this switch is on, line-in jack
  51is used as rear output.
  52
  53There are two more controls regarding to the rear output.
  54The "Exchange DAC" switch is used to exchange front and rear playback
  55routes, i.e. the 2nd DAC is output from front output.
  56
  57
  584/6 Multi-Channel Playback
  59--------------------------
  60
  61The recent CM8738 chips support for the 4/6 multi-channel playback
  62function.  This is useful especially for AC3 decoding.
  63
  64When the multi-channel is supported, the driver name has a suffix
  65"-MC" such like "CMI8738-MC6".  You can check this name from
  66/proc/asound/cards.
  67
  68When the 4/6-ch output is enabled, the second DAC accepts up to 6 (or
  694) channels.  While the dual DAC supports two different rates or
  70formats, the 4/6-ch playback supports only the same condition for all
  71channels.  Since the multi-channel playback mode uses both DACs, you
  72cannot operate with full-duplex.
  73
  74The 4.0 and 5.1 modes are defined as the pcm "surround40" and "surround51"
  75in alsa-lib.  For example, you can play a WAV file with 6 channels like
  76
  77        % aplay -Dsurround51 sixchannels.wav
  78
  79For programming the 4/6 channel playback, you need to specify the PCM
  80channels as you like and set the format S16LE.  For example, for playback
  81with 4 channels,
  82
  83        snd_pcm_hw_params_set_access(pcm, hw, SND_PCM_ACCESS_RW_INTERLEAVED);
  84            // or mmap if you like
  85        snd_pcm_hw_params_set_format(pcm, hw, SND_PCM_FORMAT_S16_LE);
  86        snd_pcm_hw_params_set_channels(pcm, hw, 4);
  87
  88and use the interleaved 4 channel data.
  89
  90There are some control switchs affecting to the speaker connections:
  91
  92"Line-In Mode"  - an enum control to change the behavior of line-in
  93        jack.  Either "Line-In", "Rear Output" or "Bass Output" can
  94        be selected.  The last item is available only with model 039
  95        or newer. 
  96        When "Rear Output" is chosen, the surround channels 3 and 4
  97        are output to line-in jack.
  98"Mic-In Mode"   - an enum control to change the behavior of mic-in
  99        jack.  Either "Mic-In" or "Center/LFE Output" can be
 100        selected. 
 101        When "Center/LFE Output" is chosen, the center and bass
 102        channels (channels 5 and 6) are output to mic-in jack. 
 103
 104Digital I/O
 105-----------
 106
 107The CM8x38 provides the excellent SPDIF capability with very cheap
 108price (yes, that's the reason I bought the card :)
 109
 110The SPDIF playback and capture are done via the third PCM device
 111(hw:0,2).  Usually this is assigned to the PCM device "spdif".
 112The available rates are 44100 and 48000 Hz.
 113For playback with aplay, you can run like below:
 114
 115        % aplay -Dhw:0,2 foo.wav
 116
 117or
 118
 119        % aplay -Dspdif foo.wav
 120
 12124bit format is also supported experimentally.
 122
 123The playback and capture over SPDIF use normal DAC and ADC,
 124respectively, so you cannot playback both analog and digital streams
 125simultaneously.
 126
 127To enable SPDIF output, you need to turn on "IEC958 Output Switch"
 128control via mixer or alsactl ("IEC958" is the official name of
 129so-called S/PDIF).  Then you'll see the red light on from the card so
 130you know that's working obviously :)
 131The SPDIF input is always enabled, so you can hear SPDIF input data
 132from line-out with "IEC958 In Monitor" switch at any time (see
 133below).
 134
 135You can play via SPDIF even with the first device (hw:0,0),
 136but SPDIF is enabled only when the proper format (S16LE), sample rate
 137(441100 or 48000) and channels (2) are used.  Otherwise it's turned
 138off.  (Also don't forget to turn on "IEC958 Output Switch", too.)
 139
 140
 141Additionally there are relevant control switches:
 142
 143"IEC958 Mix Analog" - Mix analog PCM playback and FM-OPL/3 streams and
 144        output through SPDIF.  This switch appears only on old chip
 145        models (CM8738 033 and 037).
 146        Note: without this control you can output PCM to SPDIF.
 147        This is "mixing" of streams, so e.g. it's not for AC3 output
 148        (see the next section).
 149
 150"IEC958 In Select"  - Select SPDIF input, the internal CD-in (false)
 151        and the external input (true).
 152
 153"IEC958 Loop"       - SPDIF input data is loop back into SPDIF
 154        output (aka bypass)
 155
 156"IEC958 Copyright"  - Set the copyright bit.
 157
 158"IEC958 5V"         - Select 0.5V (coax) or 5V (optical) interface.
 159        On some cards this doesn't work and you need to change the
 160        configuration with hardware dip-switch.
 161
 162"IEC958 In Monitor" - SPDIF input is routed to DAC.
 163
 164"IEC958 In Phase Inverse" - Set SPDIF input format as inverse.
 165        [FIXME: this doesn't work on all chips..]
 166
 167"IEC958 In Valid"   - Set input validity flag detection.
 168
 169Note: When "PCM Playback Switch" is on, you'll hear the digital output
 170stream through analog line-out.
 171
 172
 173The AC3 (RAW DIGITAL) OUTPUT
 174----------------------------
 175
 176The driver supports raw digital (typically AC3) i/o over SPDIF.  This
 177can be toggled via IEC958 playback control, but usually you need to
 178access it via alsa-lib.  See alsa-lib documents for more details.
 179
 180On the raw digital mode, the "PCM Playback Switch" is automatically
 181turned off so that non-audio data is heard from the analog line-out.
 182Similarly the following switches are off: "IEC958 Mix Analog" and
 183"IEC958 Loop".  The switches are resumed after closing the SPDIF PCM
 184device automatically to the previous state.
 185
 186On the model 033, AC3 is implemented by the software conversion in
 187the alsa-lib.  If you need to bypass the software conversion of IEC958
 188subframes, pass the "soft_ac3=0" module option.  This doesn't matter
 189on the newer models.
 190
 191
 192ANALOG MIXER INTERFACE
 193----------------------
 194
 195The mixer interface on CM8x38 is similar to SB16.
 196There are Master, PCM, Synth, CD, Line, Mic and PC Speaker playback
 197volumes.  Synth, CD, Line and Mic have playback and capture switches,
 198too, as well as SB16.
 199
 200In addition to the standard SB mixer, CM8x38 provides more functions.
 201- PCM playback switch
 202- PCM capture switch (to capture the data sent to DAC)
 203- Mic Boost switch
 204- Mic capture volume
 205- Aux playback volume/switch and capture switch
 206- 3D control switch
 207
 208
 209MIDI CONTROLLER
 210---------------
 211
 212With CMI8338 chips, the MPU401-UART interface is disabled as default.
 213You need to set the module option "mpu_port" to a valid I/O port address
 214to enable MIDI support.  Valid I/O ports are 0x300, 0x310, 0x320 and
 2150x330.  Choose a value that doesn't conflict with other cards.
 216
 217With CMI8738 and newer chips, the MIDI interface is enabled by default
 218and the driver automatically chooses a port address.
 219
 220There is _no_ hardware wavetable function on this chip (except for
 221OPL3 synth below).
 222What's said as MIDI synth on Windows is a software synthesizer
 223emulation.  On Linux use TiMidity or other softsynth program for
 224playing MIDI music.
 225
 226
 227FM OPL/3 Synth
 228--------------
 229
 230The FM OPL/3 is also enabled as default only for the first card.
 231Set "fm_port" module option for more cards.
 232
 233The output quality of FM OPL/3 is, however, very weird.
 234I don't know why..
 235
 236CMI8768 and newer chips do not have the FM synth.
 237
 238
 239Joystick and Modem
 240------------------
 241
 242The legacy joystick is supported.  To enable the joystick support, pass
 243joystick_port=1 module option.  The value 1 means the auto-detection.
 244If the auto-detection fails, try to pass the exact I/O address.
 245
 246The modem is enabled dynamically via a card control switch "Modem".
 247
 248
 249Debugging Information
 250---------------------
 251
 252The registers are shown in /proc/asound/cardX/cmipci.  If you have any
 253problem (especially unexpected behavior of mixer), please attach the
 254output of this proc file together with the bug report.
 255