
		   Enhanced Linux Sound Architecture (ELSA)
		   ========================================


Architecture is separated to bellow two layers:

1) a) ELSA Kernel Driver
   b) ELSA Kernel Driver Manager
2) ELSA Library

Notes:

1b) Manager for /etc/conf.modules. This manager will automaticaly detect
    soundcards over ELSA Kernel Driver or user can specify soundcard
    manualy. Note that in this program must be probably database of
    sound kernel modules. Program must know what modules must be loaded
    for apropriate soundcard.

2) ELSA Library will contains ELSA Library API to hide ELSA Kernel Driver API.
   layer1) hidden ELSA Kernel Driver API
   layer2) mixing PCM outputs
           instrument loaders etc..
   layer3) wav player, midi player etc..


			        ELSA Kernel Driver
				==================

Driver coding:
==============

All functions and structures have prefixes 'snd_' or 'SND_' for C 
contants/defines.

Planned structure of kernel modules (example for AMD InterWave soundcard):
==========================================================================

snd
 |- snd-mixer
 |   |- snd-cs4231
 |   \- snd-interwave
 |- snd-pcm
 |   |- snd-cs4231
 |   |- snd-gus
 |   \- snd-interwave
 |- snd-synth
 |   |- snd-gus
 |   \- snd-interwave
 |- snd-cs4231
 |   \- snd-interwave 
 |- snd-midi
 |   |- snd-uart6850
 |   \- snd-interwave
 |- snd-uart6850
 |   \- snd-interwave
 |- snd-gus
 |   \- snd-interwave
 |- snd-interwave
 \- snd-detect

Explain:
--------

Top level:
  snd		- top level module (sound kernel)

Middle level:
  snd-mixer	- abstract layer for MIXER interface
  snd-pcm	- abstract layer for PCM interface
  snd-synth	- abstract layer for SYNTHESIZER interface
  snd-midi	- abstract layer for raw & sequenced MIDI
  snd-detect	- layer for soundcard detection, this module can't depend
		  on anything other than sound kernel (snd.o)

Bottom level:
  snd-cs4231	- lowlevel code for MIXER and PCM for Crystal CS4231 chip
  snd-uart6850	- lowlevel code for MIDI UART 6850
  snd-gus	- lowlevel code for GF1/InterWave synthesizer chip
  snd-interwave - specific code for InterWave chip


				ELSA Library
				============


Coding style will be same as driver coding style with prefixes 'snd_' and
'SND_'.

