Audio driver for CM8338/CM8738 chips by Chen-Li Tien


HARDWARE SUPPORTED
================================================================================
C-Media CMI8338
C-Media CMI8738
On-board C-Media chips


STEPS TO BUILD DRIVER
================================================================================

  1. Backup the Config.in and Makefile in the sound driver directory
     (/usr/src/linux/driver/sound).
     The Configure.help provide help when you config driver in step
     4, please backup the original one (/usr/src/linux/Document) and
     copy this file.
     The cmpci is document for the driver in detail, please copy it
     to /usr/src/linux/Document/sound so you can refer it. Backup if
     there is already one.

  2. Extract the tar file by 'tar xvzf cmpci-xx.tar.gz' in the above
     directory.

  3. Change directory to /usr/src/linux

  4. Config cm8338 driver by 'make menuconfig', 'make config' or
     'make xconfig' command.

  5. Please select Sound Card (CONFIG_SOUND=m) support and CMPCI
     driver (CONFIG_SOUND_CMPCI=m) as modules. Resident mode not tested.
     For driver option, please refer 'DRIVER PARAMETER'

  6. Compile the kernel if necessary.

  7. Compile the modules by 'make modules'.

  8. Install the modules by 'make modules_install'


INSTALL DRIVER
================================================================================

  1. Before first time to run the driver, create module dependency by
     'depmod -a'

  2. To install the driver manually, enter 'modprobe cmpci'.

  3. Driver installation for various distributions:

    a. Slackware 4.0
       Add the 'modprobe cmpci' command in your /etc/rc.d/rc.modules
       file.so you can start the driver automatically each time booting.

    b. Caldera OpenLinux 2.2
       Use LISA to load the cmpci module.

    c. RedHat 6.0 and S.u.S.E. 6.1
       Add following command in /etc/conf.modules:

       alias sound cmpci

	also visit http://www.cmedia.com.tw for installation instruction.

DRIVER PARAMETER
================================================================================

  Some functions for the cm8738 can be configured in Kernel Configuration
  or modules parameters. Set these parameters to 1 to enable.

  mpuio:	I/O ports base for MPU-401, 0 if disabled.
  fmio:		I/O ports base for OPL-3, 0 if disabled.
  spdif_inverse:Inverse the S/PDIF-in signal, this depends on your
		CD-ROM or DVD-ROM.
  spdif_loop:   Enable S/PDIF loop, this route S/PDIF-in to S/PDIF-out
                directly.
  speakers:     Number of speakers used.
  use_line_as_rear:Enable this if you want to use line-in as
                rear-out.
  use_line_as_bass:Enable this if you want to use line-in as
                bass-out.
  joystick:	Enable joystick. You will need to install Linux joystick
		driver.

