Documentation for the ESS1868F AudioDrive PnP sound card

The ESS1868 sound card is a PnP ESS1688-compatible 16-bit sound card.

It should be automatically detected by the Linux Kernel isapnp support when you
load the sb.o module. Otherwise you should take care of:

  *  The ESS1868 does not allow use of a 16-bit DMA, thus DMA 0, 1, 2, and 3
     may only be used.

  *  isapnptools version 1.14 does work with ESS1868.  Earlier versions might
     not.

  *  Sound support MUST be compiled as MODULES, not statically linked
     into the kernel.


NOTE: this is only needed when not using the kernel isapnp support!

For configuring the sound card's I/O addresses, IRQ and DMA, here is a
sample copy of the isapnp.conf directives regarding the ESS1868:

(CONFIGURE ESS1868/-1 (LD 1
(IO 0 (BASE 0x0220))
(IO 1 (BASE 0x0388))
(IO 2 (BASE 0x0330))
(DMA 0 (CHANNEL 1))
(INT 0 (IRQ 5 (MODE +E)))
(ACT Y)
))

(for a full working isapnp.conf file, remember the
(ISOLATE)
(IDENTIFY *)
at the beginning and the
(WAITFORKEY)
at the end.)

In this setup, the main card I/O is 0x0220, FM synthesizer is 0x0388, and
the MPU-401 MIDI port is located at 0x0330.  IRQ is IRQ 5, DMA is channel 1.

After configuring the sound card via isapnp, to use the card you must load
the sound modules with the proper I/O information.  Here is my setup:

# ESS1868F AudioDrive initialization

/sbin/modprobe sound
/sbin/insmod uart401
/sbin/insmod sb io=0x220 irq=5 dma=1 dma16=-1
/sbin/insmod mpu401 io=0x330
/sbin/insmod opl3 io=0x388
/sbin/insmod v_midi

opl3 is the FM synthesizer
/sbin/insmod opl3 io=0x388
