Sound Driver Configuration Notes
Michael Chastain, <mailto:mec@shout.net>
18 Apr 1998

The Linux sound driver is derived from OSS/Free, a multi-platform
Unix sound driver by Hannu Savolainen.  You can find out
more about OSS/Free and the commercial version, OSS/Linux, at
<http://www.opensound.com/ossfree>.

OSS/Free comes with the configuration program 'configure.c'.  We have
discarded that program in favor of a standard Linux configuration file
Config.in.

Config.in defines a set of symbols with the form CONFIG_SOUND_*.
These are the -native symbols-.  Here is a description:

    CONFIG_SOUND

	This is the master symbol.  It controls whether the basic
	sound-driver code is resident, modular, or not present at all.

	If the basic driver is resident, each primary and secondary
	driver can be resident, modular, or not present.

	If the basic driver is modular, each primary and secondary driver
	can be modular or not present.

	And if the basic driver is not present, all other drivers are
	not present, too.

    Primary drivers

	These are symbols such as CONFIG_SOUND_SB, CONFIG_SOUND_SB_MODULE,
	CONFIG_SOUND_TRIX, or CONFIG_SOUND_TRIX_MODULE.  Each driver
	that the user can directly select is a primary driver and has
	the usual pair of symbols: one resident and one modular.

	Each primary driver can be either resident or modular.

    Secondary drivers

	Primary drivers require the support of secondary drivers, such
	as ad1848.o and uart401.o.

	In Makefile, each primary driver has a list of required secondary
	drivers.  The secondary driver requirements are merged and a
	single definition is emitted at the end.

	For each secondary driver: if any resident primary driver
	requires it, that secondary driver will be resident.  If no
	resident primary driver requires it but some modular primary
	driver requires it, then that secondary driver will be modular.
	Otherwise that secondary driver will be not present.

	OSS/Free also contains tests for secondary drivers.  The Makefile
	defines symbols for these drivers in EXTRA_CFLAGS.

    CONFIG_AUDIO, CONFIG_MIDI, CONFIG_SEQUENCER

	These three drivers are like secondary drivers, but not quite.
	They can not yet be separated into modules.  They are always
	linked into the basic sound driver, whether they are needed
	or not.  (This is in case a primary driver is added to the
	system later, as a module, and needs these facilities.	If it
	were possible to modularise them, then they would get built as
	additional modules at that time).

The OSS/Free code does not use the native symbols directly, primarily
because it does not know about modules.  I could edit the code, but that
would make it harder to upgrade to new versions of OSS/Free.  Instead,
the OSS/Free code continues to use -legacy symbols-.

legacy.h defines all the legacy symbols to 1.  This is because, whenever
OSS/Free tests a symbol, the Makefile has already arranged for that
driver to be included.
