Sound Driver Configuration Notes Michael Chastain, 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 . 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.