CMPCI(4)                NetBSD Kernel Interfaces Manual               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 inter-
     face.

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.

NetBSD 5.0_STABLE                June 22, 2005               NetBSD 5.0_STABLE
