home | help
PCM(4)			     Kernel Interfaces Manual			  PCM(4)

NAME
     pcm, snd -- FreeBSD PCM audio device driver

SYNOPSIS
     For a card with bridge driver support, and a PnP card:
     device pcm

     For a card without bridge driver support, and a non-PnP card:
     device pcm0 at isa? port? irq 5 drq 1 flags 0x15

DESCRIPTION
     The  pcm driver provides support for PCM audio play and capture.  This dri-
     ver also supports various PCI and WSS/MSS compatible ISA sound  cards,  and
     AC97 mixer.  True full duplex operation is available on most cards.

     If  your  sound  card  is supported by a bridge driver, pcm driver works in
     conjunction with the bridge driver.

     Apart from the usual parameters, the flags field is  used	to  specify  the
     secondary	DMA  channel  (generally used for capture in full duplex cards).
     Flags are set to 0 for cards not using a secondary DMA channel, or to  0x10
     + C to specify channel C.

     The driver works best with WSS/MSS cards, which have a very clean architec-
     ture  and	an orthogonal set of features.	They also happen to be among the
     cheapest audio cards on the market.

     The driver does its best to recognize the installed hardware and  drive  it
     correctly,  so  that  you don't have to give too many details in the kernel
     config files.  For PCI and ISA PnP cards this is actually easy  since  they
     identify  themselves.  For legacy ISA cards, the driver looks for MSS cards
     at addresses 0x530 and 0x604 (obviously, unless overridden  in  the  kernel
     config file by specifying an address).

IOCTL
     The  driver  supports  most  of the Voxware ioctls(), and most applications
     work unmodified (including popular mpeg players and linux binaries). A  few
     differences  exist  (the  most  important one is the ability to use memory-
     mapped access to the audio buffers). As a	consequence,  some  applications
     may  need	to  be	recompiled  with  a slightly modified audio module.  See
     /usr/include/sys/soundcard.h for a complete list of the supported ioctls.

SUPPORTED CARDS
     Below we include a list of supported codecs/cards.  If your sound	card  is
     not listed here, it may be supported by a bridge driver.

     CS4237, CS4236, CS4232, CS4231 (ISA)
	 All these cards work perfectly in full duplex using the MSS mode.  This
	 chipset is used, among others, on the A/Open AW35 and AW32, on some In-
	 tel motherboards, and (the CS4231) on some non-PnP cards.

	 The  CS4232  is reported as buggy in the Voxware documentation but I am
	 not sure if this is true.  On one of  my  Intel  motherboards,  capture
	 does  not  work  simply because the capture DMA channel is not wired to
	 the ISA DMA controller.

     Yamaha OPL-SAx (ISA)
	 Works perfectly in all modes.	This chip is used in several PnP  cards,
	 but  also  (in  non-PnP  mode)  on  motherboards  and laptops (e.g. the
	 Toshiba Libretto).

     OPTi931 (ISA)
	 The chip is buggy, but the driver has many workarounds to make it  work
	 in  full  duplex  because for some time these were the only full duplex
	 cards I could find. u-law formats uses U8 format internally because  of
	 a bug in the chip.

     Trident 4DWave DX/NX (PCI)

     ENSONIQ AudioPCI ES1370/1371 (PCI)
	 Creative Labs SoundBlaster PCI is supported as well.

     ESS Solo-1/1E (PCI)

     NeoMagic 256AV/ZX (PCI)

FILES
     The  following  commonly used symbolic links to real device nodes should be
     present:

     /dev/audio      Sparc-compatible audio device
     /dev/dsp	     Digitized voice device
     /dev/dspW	     Like /dev/dsp, but 16 bits per sample
     /dev/midi	     Raw midi access device
     /dev/mixer      Control port mixer device
     /dev/music      Level 2 sequencer interface
     /dev/sequencer  Sequencer device
     /dev/pss	     Programmable device interface

     Each symbolic link refers to a device node of the same  name,  but  with  a
     unit  number  appended.   The  unit number for each device matches the unit
     number of the device probed at boot time.	Device probe messages can be ex-
     amined with the dmesg(8) utility.

     All the appropriate device nodes and symbolic links for the  `pcm0'  device
     would created with the following commands:

	   cd /dev; sh MAKEDEV snd0

     Similarly,  the device nodes and symbolic links for the `pcm1' device would
     be created as follows:

	   cd /dev; sh MAKEDEV snd1

     Since the /dev/MAKEDEV utility creates symbolic links that will be used  by
     many utilities by default, the device nodes and symbolic links for the pre-
     ferred  audio  device in systems with multiple audio devices should be cre-
     ated last.

DIAGNOSTICS AND TROUBLESHOOTING
     ac97: dac not ready
	 AC97 codec is not likely to be accompanied with the sound card.

     unsupported subdevice XX
	 A device node is not created properly.

BUGS
     Some features of your cards (e.g. global volume control) might not be  sup-
     ported on all devices.

HISTORY
     The  pcm  device  driver  first  appeared	in  FreeBSD  2.2.6, rewritten in
     FreeBSD 4.0.

SEE ALSO
     csa(4), gusc(4), sbc(4)

AUTHORS
     Luigi Rizzo <luigi@iet.unipi.it> initially wrote the pcm device driver  and
     this manual page.
     Cameron  Grant <gandalf@vilnya.demon.co.uk> totally revised the device dri-
     ver.
     Seigo Tanimura <tanimura@r.dl.itc.u-tokyo.ac.jp> revised this manual page.

FreeBSD 4.7			  June 3, 1998				  PCM(4)

home | help