cmipci.rst 9.1 KB

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