273 lines · plain
1=================================================2Brief Notes on C-Media 8338/8738/8768/8770 Driver3=================================================4 5Takashi Iwai <tiwai@suse.de>6 7 8Front/Rear Multi-channel Playback9---------------------------------10 11CM8x38 chip can use ADC as the second DAC so that two different stereo12channels can be used for front/rear playbacks. Since there are two13DACs, both streams are handled independently unlike the 4/6ch multi-14channel playbacks in the section below.15 16As default, ALSA driver assigns the first PCM device (i.e. hw:0,0 for17card#0) for front and 4/6ch playbacks, while the second PCM device18(hw:0,1) is assigned to the second DAC for rear playback.19 20There are slight differences between the two DACs:21 22- The first DAC supports U8 and S16LE formats, while the second DAC23 supports only S16LE.24- The second DAC supports only two channel stereo.25 26Please note that the CM8x38 DAC doesn't support continuous playback27rate but only fixed rates: 5512, 8000, 11025, 16000, 22050, 32000,2844100 and 48000 Hz.29 30The rear output can be heard only when "Four Channel Mode" switch is31disabled. Otherwise no signal will be routed to the rear speakers.32As default it's turned on.33 34.. WARNING::35 When "Four Channel Mode" switch is off, the output from rear speakers36 will be FULL VOLUME regardless of Master and PCM volumes [#]_.37 This might damage your audio equipment. Please disconnect speakers38 before your turn off this switch.39 40 41.. [#]42 Well.. I once got the output with correct volume (i.e. same with the43 front one) and was so excited. It was even with "Four Channel" bit44 on and "double DAC" mode. Actually I could hear separate 4 channels45 from front and rear speakers! But.. after reboot, all was gone.46 It's a very pity that I didn't save the register dump at that47 time.. Maybe there is an unknown register to achieve this...48 49If your card has an extra output jack for the rear output, the rear50playback should be routed there as default. If not, there is a51control switch in the driver "Line-In As Rear", which you can change52via alsamixer or somewhat else. When this switch is on, line-in jack53is used as rear output.54 55There are two more controls regarding to the rear output.56The "Exchange DAC" switch is used to exchange front and rear playback57routes, i.e. the 2nd DAC is output from front output.58 59 604/6 Multi-Channel Playback61--------------------------62 63The recent CM8738 chips support for the 4/6 multi-channel playback64function. This is useful especially for AC3 decoding.65 66When the multi-channel is supported, the driver name has a suffix67"-MC" such like "CMI8738-MC6". You can check this name from68/proc/asound/cards.69 70When the 4/6-ch output is enabled, the second DAC accepts up to 6 (or714) channels. While the dual DAC supports two different rates or72formats, the 4/6-ch playback supports only the same condition for all73channels. Since the multi-channel playback mode uses both DACs, you74cannot operate with full-duplex.75 76The 4.0 and 5.1 modes are defined as the pcm "surround40" and "surround51"77in alsa-lib. For example, you can play a WAV file with 6 channels like78::79 80 % aplay -Dsurround51 sixchannels.wav81 82For programming the 4/6 channel playback, you need to specify the PCM83channels as you like and set the format S16LE. For example, for playback84with 4 channels,85::86 87 snd_pcm_hw_params_set_access(pcm, hw, SND_PCM_ACCESS_RW_INTERLEAVED);88 // or mmap if you like89 snd_pcm_hw_params_set_format(pcm, hw, SND_PCM_FORMAT_S16_LE);90 snd_pcm_hw_params_set_channels(pcm, hw, 4);91 92and use the interleaved 4 channel data.93 94There are some control switches affecting to the speaker connections:95 96Line-In Mode97 an enum control to change the behavior of line-in98 jack. Either "Line-In", "Rear Output" or "Bass Output" can99 be selected. The last item is available only with model 039100 or newer. 101 When "Rear Output" is chosen, the surround channels 3 and 4102 are output to line-in jack.103Mic-In Mode104 an enum control to change the behavior of mic-in105 jack. Either "Mic-In" or "Center/LFE Output" can be106 selected. 107 When "Center/LFE Output" is chosen, the center and bass108 channels (channels 5 and 6) are output to mic-in jack. 109 110Digital I/O111-----------112 113The CM8x38 provides the excellent SPDIF capability with very cheap114price (yes, that's the reason I bought the card :)115 116The SPDIF playback and capture are done via the third PCM device117(hw:0,2). Usually this is assigned to the PCM device "spdif".118The available rates are 44100 and 48000 Hz.119For playback with aplay, you can run like below:120::121 122 % aplay -Dhw:0,2 foo.wav123 124or125 126::127 128 % aplay -Dspdif foo.wav129 13024bit format is also supported experimentally.131 132The playback and capture over SPDIF use normal DAC and ADC,133respectively, so you cannot playback both analog and digital streams134simultaneously.135 136To enable SPDIF output, you need to turn on "IEC958 Output Switch"137control via mixer or alsactl ("IEC958" is the official name of138so-called S/PDIF). Then you'll see the red light on from the card so139you know that's working obviously :)140The SPDIF input is always enabled, so you can hear SPDIF input data141from line-out with "IEC958 In Monitor" switch at any time (see142below).143 144You can play via SPDIF even with the first device (hw:0,0),145but SPDIF is enabled only when the proper format (S16LE), sample rate146(441100 or 48000) and channels (2) are used. Otherwise it's turned147off. (Also don't forget to turn on "IEC958 Output Switch", too.)148 149 150Additionally there are relevant control switches:151 152IEC958 Mix Analog153 Mix analog PCM playback and FM-OPL/3 streams and154 output through SPDIF. This switch appears only on old chip155 models (CM8738 033 and 037).156 157 Note: without this control you can output PCM to SPDIF.158 This is "mixing" of streams, so e.g. it's not for AC3 output159 (see the next section).160 161IEC958 In Select162 Select SPDIF input, the internal CD-in (false)163 and the external input (true).164 165IEC958 Loop166 SPDIF input data is loop back into SPDIF167 output (aka bypass)168 169IEC958 Copyright170 Set the copyright bit.171 172IEC958 5V173 Select 0.5V (coax) or 5V (optical) interface.174 On some cards this doesn't work and you need to change the175 configuration with hardware dip-switch.176 177IEC958 In Monitor178 SPDIF input is routed to DAC.179 180IEC958 In Phase Inverse181 Set SPDIF input format as inverse.182 [FIXME: this doesn't work on all chips..]183 184IEC958 In Valid185 Set input validity flag detection.186 187Note: When "PCM Playback Switch" is on, you'll hear the digital output188stream through analog line-out.189 190 191The AC3 (RAW DIGITAL) OUTPUT192----------------------------193 194The driver supports raw digital (typically AC3) i/o over SPDIF. This195can be toggled via IEC958 playback control, but usually you need to196access it via alsa-lib. See alsa-lib documents for more details.197 198On the raw digital mode, the "PCM Playback Switch" is automatically199turned off so that non-audio data is heard from the analog line-out.200Similarly the following switches are off: "IEC958 Mix Analog" and201"IEC958 Loop". The switches are resumed after closing the SPDIF PCM202device automatically to the previous state.203 204On the model 033, AC3 is implemented by the software conversion in205the alsa-lib. If you need to bypass the software conversion of IEC958206subframes, pass the "soft_ac3=0" module option. This doesn't matter207on the newer models.208 209 210ANALOG MIXER INTERFACE211----------------------212 213The mixer interface on CM8x38 is similar to SB16.214There are Master, PCM, Synth, CD, Line, Mic and PC Speaker playback215volumes. Synth, CD, Line and Mic have playback and capture switches,216too, as well as SB16.217 218In addition to the standard SB mixer, CM8x38 provides more functions.219- PCM playback switch220- PCM capture switch (to capture the data sent to DAC)221- Mic Boost switch222- Mic capture volume223- Aux playback volume/switch and capture switch224- 3D control switch225 226 227MIDI CONTROLLER228---------------229 230With CMI8338 chips, the MPU401-UART interface is disabled as default.231You need to set the module option "mpu_port" to a valid I/O port address232to enable MIDI support. Valid I/O ports are 0x300, 0x310, 0x320 and2330x330. Choose a value that doesn't conflict with other cards.234 235With CMI8738 and newer chips, the MIDI interface is enabled by default236and the driver automatically chooses a port address.237 238There is *no* hardware wavetable function on this chip (except for239OPL3 synth below).240What's said as MIDI synth on Windows is a software synthesizer241emulation. On Linux use TiMidity or other softsynth program for242playing MIDI music.243 244 245FM OPL/3 Synth246--------------247 248The FM OPL/3 is also enabled as default only for the first card.249Set "fm_port" module option for more cards.250 251The output quality of FM OPL/3 is, however, very weird.252I don't know why..253 254CMI8768 and newer chips do not have the FM synth.255 256 257Joystick and Modem258------------------259 260The legacy joystick is supported. To enable the joystick support, pass261joystick_port=1 module option. The value 1 means the auto-detection.262If the auto-detection fails, try to pass the exact I/O address.263 264The modem is enabled dynamically via a card control switch "Modem".265 266 267Debugging Information268---------------------269 270The registers are shown in /proc/asound/cardX/cmipci. If you have any271problem (especially unexpected behavior of mixer), please attach the272output of this proc file together with the bug report.273