CMPCI(4)

NAME
cmpci - C-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.