From alsa-devel-owner@alsa.jcu.cz  Tue Apr 14 19:17:01 1998
Received: from entry.jcu.cz (perex@entry.jcu.cz [160.217.1.111])
	by marvin.jcu.cz (8.8.8/8.8.8) with SMTP id TAA26902;
	Tue, 14 Apr 1998 19:16:51 +0200
Date: Tue, 14 Apr 1998 19:16:50 +0200 (MET DST)
From: Jaroslav Kysela <perex@jcu.cz>
To: Alan Cox <alan@lxorguk.ukuu.org.uk>
cc: alsa-devel@alsa.jcu.cz
Subject: Re: ALSA stuff
In-Reply-To: <m0yP7kT-000aNiC@the-village.bc.nu>
Message-ID: <Pine.LNX.3.96.980414185002.1142A-200000@entry.jcu.cz>
MIME-Version: 1.0
Content-Type: MULTIPART/MIXED; BOUNDARY="-643797247-1388463711-892574210=:1142"
Reply-To: alsa-devel@alsa.jcu.cz
Sender: alsa-devel-owner@alsa.jcu.cz
Precedence: list

  This message is in MIME format.  The first part should be readable text,
  while the remaining parts are likely unreadable without MIME-aware tools.
  Send mail to mime@docserver.cac.washington.edu for more info.

---643797247-1388463711-892574210=:1142
Content-Type: TEXT/PLAIN; charset=US-ASCII

On Tue, 14 Apr 1998, Alan Cox wrote:

> > I recommend register to minor number (which ALSA driver does in it's
> > demultiplexer). ALSA driver uses minors 128-255 for native devices while
> > OSS/Lite uses minors from 0-127 (ALSA driver uses minors 0-127 for
> > compatible devices, of course). I'm thinking that this is more universal,
> > too..
> > 
> >    int error = register_sounddevice(&file_ops, int minor)
> > 
> >    unregister_sounddevice(int minor)
> > 
> > Comments?
> 
> I don't want the low level layers to know about assignment of minor numbers.
> Suppose I have an OSS driver using minor 0 and ALSA driver tries to find
> a minor number. If there are more device types then let me know what you
> need and instead of minors you should register by type - be it a mixer,
> or something new.

OK. Here is actual map of ALSA minor numbers assignment (I attached to
E-mail header file from which this information come):

0-127: OSS compatibility
  1: sequencer
  6: snd stat
  8: music (sequencer level 2)
  (card*16)+0: mixer (first mixer for soundcard) 
  (card*16)+2: midi
  (card*16)+3: 8-bit PCM
  (card*16)+4: Sparc Audio
  (card*16)+5: 16-bit PCM
  (card*16)+9: direct midi
  (card*16)+10: direct FM/OPL3
  (card*16)+11: mixer 1 (second (alternate) mixer - NEW DEVICE)
  (card*16)+12: pcm 1 (second (alternate) pcm device - NEW DEVICE)
  (card*16)+13: midi 1 (second (alternate) midi device - NEW DEVICE)
  (card*16)+14: direct midi 1 (second (alternate) direct midi device - NEW)
  where card is from 0 to 7
128-255: ALSA native devices (not compatible with OSS/Lite)
  128-135: reserved for future use
  136-143: sequenced midi interfaces (0-7), not assigned to soundcards
  144-151: control interface (assigned to soundcards 0-7)
  152-167: mixer devices (2 devices per soundcards 0-7)
  168-199: pcm devices (4 devices per soundcards 0-7)
  200-231: raw midi devices (4 devices per soundcards 0-7)
  232-239: syntesizer devices (assigned to soundcards 0-7)
  240-247: server devices (assigned to soundcards 0-7)
  248-255: raw FM/OPL3 devices (assigned to soundcards 0-7)

Other interfaces should be accessible in future via /proc filesystem.  

There is another thing to do in your demultiplexer (which ALSA already
have): Don't assign soundcard position (order) automaticaly (only if user
requests it or by default).

Example (for ALSA driver):

soundcard 0 - not present in system
soundcard 1 - present in system, but not active
soundcard 2 - installed and active
soundcard 3 - present in system, but not active
soundcard 4 - installed and active

This situation should come on when kerneld loads/removes unused sound
modules (or if user for some reason removes hardware).

ALSA driver using in driver module (top module) variable snd_index which
should be set by user to range 0-7 or it's -1 by default which means
assign first free soundcard position (software slot).

> Alan

		Jaroslav	

-----
Jaroslav Kysela <perex@jcu.cz>
Academic Computer Centre, University of South Bohemia
Branisovska 31, C. Budejovice, CZ-370 05 Czech Republic

---643797247-1388463711-892574210=:1142
Content-Type: TEXT/PLAIN; charset=US-ASCII; name="minors.h"
Content-Transfer-Encoding: BASE64
Content-ID: <Pine.LNX.3.96.980414191650.1142B@entry.jcu.cz>
Content-Description: 

LyoNCiAqICBNSU5PUiBudW1iZXJzDQogKg0KICoNCiAqICAgVGhpcyBwcm9n
cmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0
IGFuZC9vciBtb2RpZnkNCiAqICAgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRo
ZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkN
CiAqICAgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZl
cnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3INCiAqICAgKGF0IHlvdXIgb3B0
aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4NCiAqDQogKiAgIFRoaXMgcHJvZ3Jh
bSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUg
dXNlZnVsLA0KICogICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhv
dXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZg0KICogICBNRVJDSEFO
VEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0Uu
ICBTZWUgdGhlDQogKiAgIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZv
ciBtb3JlIGRldGFpbHMuDQogKg0KICogICBZb3Ugc2hvdWxkIGhhdmUgcmVj
ZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5z
ZQ0KICogICBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0
ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQ0KICogICBGb3VuZGF0aW9uLCBJbmMu
LCA2NzUgTWFzcyBBdmUsIENhbWJyaWRnZSwgTUEgMDIxMzksIFVTQS4NCiAq
DQogKi8NCg0KI2RlZmluZSBTTkRfTUlOT1JfT1NTX01JWEVSCTAJLyogL2Rl
di9taXhlciAtIE9TUyAzLlhYIGNvbXBhdGlibGUgKi8NCiNkZWZpbmUgU05E
X01JTk9SX09TU19TRVFVRU5DRVIJMQkvKiAvZGV2L3NlcXVlbmNlciAtIE9T
UyAzLlhYIGNvbXBhdGlibGUgKi8NCiNkZWZpbmUJU05EX01JTk9SX09TU19N
SURJCTIJLyogL2Rldi9taWRpIC0gbmF0aXZlIG1pZGkgaW50ZXJmYWNlIC0g
T1NTIDMuWFggY29tcGF0aWJsZSAtIFVBUlQgKi8NCiNkZWZpbmUgU05EX01J
Tk9SX09TU19QQ01fOAkzCS8qIC9kZXYvZHNwIC0gOGJpdCBQQ00gLSBPU1Mg
My5YWCBjb21wYXRpYmxlICovDQojZGVmaW5lIFNORF9NSU5PUl9PU1NfQVVE
SU8JNAkvKiAvZGV2L2F1ZGlvIC0gU3VuU3BhcmMgY29tcGF0aWJsZSAqLw0K
I2RlZmluZSBTTkRfTUlOT1JfT1NTX1BDTV8xNgk1CS8qIC9kZXYvZHNwMTYg
LSAxNmJpdCBQQ00gLSBPU1MgMy5YWCBjb21wYXRpYmxlICovDQojZGVmaW5l
IFNORF9NSU5PUl9PU1NfU05EU1RBVAk2CS8qIC9kZXYvc25kc3RhdCAtIGZv
ciBjb21wYXRpYmlsaXR5IHdpdGggT1NTICovDQojZGVmaW5lIFNORF9NSU5P
Ul9PU1NfUkVTRVJWRUQ3CTcJLyogcmVzZXJ2ZWQgZm9yIGZ1dHVyZSB1c2Ug
Ki8NCiNkZWZpbmUgU05EX01JTk9SX09TU19NVVNJQwk4CS8qIC9kZXYvbXVz
aWMgLSBPU1MgMy5YWCBjb21wYXRpYmxlICovDQojZGVmaW5lIFNORF9NSU5P
Ul9PU1NfRE1NSURJCTkJLyogL2Rldi9kbW1pZGkwIC0gdGhpcyBkZXZpY2Ug
Y2FuIGhhdmUgYW5vdGhlciBtaW5vciAjIHdpdGggT1NTICovDQojZGVmaW5l
IFNORF9NSU5PUl9PU1NfRE1GTQkxMAkvKiAvZGV2L2RtZm0wIC0gdGhpcyBk
ZXZpY2UgY2FuIGhhdmUgYW5vdGhlciBtaW5vciAjIHdpdGggT1NTICovDQoj
ZGVmaW5lIFNORF9NSU5PUl9PU1NfTUlYRVIxCTExCS8qIGFsdGVybmF0ZSBt
aXhlciAqLw0KI2RlZmluZSBTTkRfTUlOT1JfT1NTX1BDTTEJMTIJLyogYWx0
ZXJuYXRlIFBDTSAoR0YtQS0xKSAqLw0KI2RlZmluZSBTTkRfTUlOT1JfT1NT
X01JREkxCTEzCS8qIGFsdGVybmF0ZSBtaWRpIC0gU1lOVEggKi8NCiNkZWZp
bmUgU05EX01JTk9SX09TU19ETU1JREkxCTE0CS8qIGFsdGVybmF0ZSBkbW1p
ZGkgLSBTWU5USCAqLw0KDQojZGVmaW5lIFNORF9NSU5PUl9PU1NfTUFTSwkw
eDAwMGYNCg0KI2RlZmluZSBTTkRfTUlOT1JfQkVHSU4JCTEyOA0KLyogZ2xv
YmFsIChub3QgcGVyIHNvdW5kY2FyZCkgZGV2aWNlcyAqLw0KI2RlZmluZSBT
TkRfTUlOT1JfTUlESQkJLyogMTM2ICovIChTTkRfTUlOT1JfQkVHSU4rOCkN
CiNkZWZpbmUgU05EX01JTk9SX01JRElTCQk4DQovKiBsb2NhbCAocGVyIHNv
dW5kY2FyZCkgZGV2aWNlcyAqLw0KI2RlZmluZSBTTkRfTUlOT1JfQ09OVFJP
TAkvKiAxNDQgKi8gKFNORF9NSU5PUl9CRUdJTisxNikNCiNkZWZpbmUgU05E
X01JTk9SX01JWEVSCQkvKiAxNTIgKi8gKFNORF9NSU5PUl9DT05UUk9MK1NO
RF9DQVJEUykNCiNkZWZpbmUgU05EX01JTk9SX01JWEVSUwkyDQojZGVmaW5l
IFNORF9NSU5PUl9QQ00JCS8qIDE2OCAqLyAoU05EX01JTk9SX01JWEVSKyhT
TkRfQ0FSRFMqU05EX01JTk9SX01JWEVSUykpDQojZGVmaW5lIFNORF9NSU5P
Ul9QQ01TCQk0DQojZGVmaW5lIFNORF9NSU5PUl9SQVdNSURJCS8qIDIwMCAq
LyAoU05EX01JTk9SX1BDTSsoU05EX0NBUkRTKlNORF9NSU5PUl9QQ01TKSkN
CiNkZWZpbmUgU05EX01JTk9SX1JBV01JRElTCTQNCiNkZWZpbmUgU05EX01J
Tk9SX1NZTlRICQkvKiAyMzIgKi8gKFNORF9NSU5PUl9SQVdNSURJKyhTTkRf
Q0FSRFMqU05EX01JTk9SX1JBV01JRElTKSkNCiNkZWZpbmUgU05EX01JTk9S
X1NFUlZFUgkvKiAyNDAgKi8gKFNORF9NSU5PUl9TWU5USCtTTkRfQ0FSRFMp
DQojZGVmaW5lIFNORF9NSU5PUl9GTQkJLyogMjQ4ICovIChTTkRfTUlOT1Jf
U1lOVEgrU05EX0NBUkRTKQ0K
---643797247-1388463711-892574210=:1142--

