CMPCI(4) Kernel Interfaces Manual CMPCI(4)

NAME

cmpciC-Media CMI8x38 audio device driver

SYNOPSIS

cmpci* at pci? dev ? function ?
audio* at audiobus?
mpu* at cmpci?
opl* at cmpci? flags 1

DESCRIPTION

The cmpci device driver supports C-Media CMI8x38 based sound cards.

The device has SPDIF input/output interfaces, 16bit CODEC with analog mixer, OPL3 FM Synthesizer, and MPU401 compatible MIDI I/O port interface.

MIXER DEVICE

The mixer device of cmpci driver can be accessed via mixerctl(1) command. The complex structure is analyzed as follows.

SPDIF in  ---------------------- 
#1(coax)->|spdin1              |  R    ----------------------- 
#2(opt)-->|spdin2  spdif.input |--*->--|spdin   spdif.output |--> SPDIF 
       -->|spdout              |  | -->|playback             |    output 
       |  ----------------------  | |  ----------------------- 
       --------------------<------+-* 
     ---------<-------------------+-+---------------------------------- 
     |  ------------------------  | |   -----------------------       | 
     -->|legacy  spdif.output. |--+-*-->|spdout               |       | 
     -->|wave    playback      |  ----->|spdin  spdif.monitor |----   | 
     |  ------------------------     NC-|off                  |   |   | 
     ---------<-- spdif                 -----------------------   |   | 
         -------+------- dac ------------    -----------------    v   | 
wave  -->|playback.mode|---->|inputs.dac|-*->|inputs.dac.mute|->----- | 
playback ---------------     ------------ R  -----------------  | + | | 
                  -----------------     ---------------------   |mix| | 
FM synthesizer -->|inputs.fmsynth |--*->|inputs.fmsynth.mute|-->----- | 
                  -----------------  R  ---------------------     *->-- 
CD        ----------------------   ---------------------------    v 
LINE-IN ->|inputs.{cd,line,aux}|-*>|inputs.{cd,line,aux}.mute|->----- 
AUX       ---------------------- R ---------------------------  |   | 
          ------------------                                    |   | 
PC-SPK -->| inputs.speaker |----------------------------------->| + | 
          ------------------                                    |   | 
          -------------------  ------------  -----------------  |mix| 
MIC --*-->|inputs.mic.preamp|->|inputs.mic|->|inputs.mic.mute|->|   | 
      |   -------------------  ------------  -----------------  ----- 
      |   ------------   -----------------                       | 
      --->|record.mic|-->|               |                       v 
          ------------   | record.source |-->to         ----------- 
                    *R-->| (select, mix) |   recording  |outputs.*|--> 
                         -----------------              ----------- SPK 
                                                                 (front)

Note the 2nd SPDIF input exists only on CMI8738/PCI-6ch versions.

MIXER EXAMPLES

Here are examples about wave playback and SPDIF input/output ports.
Playback to speaker, SPDIF input to SPDIF output
mixerctl -w playback.mode=dac spdif.output=spdin spdif.monitor=off
Playback to SPDIF output, SPDIF input to speaker
mixerctl -w playback.mode=spdif spdif.output=playback spdif.output.playback=wave spdif.monitor=spdin
SPDIF input to both SPDIF output and speaker
mixerctl -w spdif.output=spdin spdif.monitor=spdin
Playback to both SPDIF output and speaker
mixerctl -w playback.mode=spdif spdif.output=playback spdif.output.playback=wave spdif.monitor=spdout
Mix playback and SPDIF input to speaker
mixerctl -w playback.mode=dac spdif.monitor=spdin

SEE ALSO

mixerctl(1), audio(4), midi(4), mpu(4), opl(4), pci(4)

HISTORY

The cmpci device driver appeared in NetBSD 1.5.

BUGS

4ch/6ch playback is not yet available. Joystick port is not supported.

spdif.output.playback=legacy does not seem to work properly.

June 22, 2005 NetBSD 6.1