Update of /cvsroot/alsa/alsa-driver/utils/patches
In directory sc8-pr-cvs1:/tmp/cvs-serv26684
Added Files:
soundcore.2.4.20.patch
Log Message:
Initial version
--- NEW FILE: soundcore.2.4.20.patch ---
--- sound_core.c.old Fri Jan 10 13:23:43 2003
+++ sound_core.c Fri Jan 10 13:25:25 2003
@@ -17,7 +17,7 @@
* plug into this. The fact they dont all go via OSS doesn't mean
* they don't have to implement the OSS API. There is a lot of logic
* to keeping much of the OSS weight out of the code in a compatibility
- * module, but its up to the driver to rember to load it...
+ * module, but it's up to the driver to remember to load it...
*
* The code provides a set of functions for registration of devices
* by type. This is done rather than providing a single call so that
@@ -173,10 +173,10 @@
return r;
}
- if (r == low)
+ if (r < SOUND_STEP)
sprintf (name_buf, "%s", name);
else
- sprintf (name_buf, "%s%d", name, (r - low) / SOUND_STEP);
+ sprintf (name_buf, "%s%d", name, r / SOUND_STEP);
s->de = devfs_register (devfs_handle, name_buf,
DEVFS_FL_NONE, SOUND_MAJOR, s->unit_minor,
S_IFCHR | mode, fops, NULL);
@@ -217,7 +217,7 @@
* 15 *16 unused
*/
-static struct sound_unit *chains[16];
+static struct sound_unit *chains[SOUND_STEP];
/**
* register_sound_special - register a special sound node
@@ -231,17 +231,25 @@
int register_sound_special(struct file_operations *fops, int unit)
{
- char *name;
- switch (unit) {
+
+ const int chain = unit % SOUND_STEP;
+ int max_unit = 128 + chain;
+ const char *name;
+ char _name[16];
+
+ switch (chain) {
case 0:
name = "mixer";
break;
case 1:
name = "sequencer";
+ if (unit >= SOUND_STEP)
+ goto __unknown;
+ max_unit = unit + 1;
break;
case 2:
- name = "midi00";
+ name = "midi";
break;
case 3:
name = "dsp";
@@ -249,17 +257,11 @@
case 4:
name = "audio";
break;
- case 5:
- name = "unknown5";
- break;
- case 6: /* Was once sndstat */
- name = "unknown6";
- break;
- case 7:
- name = "unknown7";
- break;
case 8:
name = "sequencer2";
+ if (unit >= SOUND_STEP)
+ goto __unknown;
+ max_unit = unit + 1;
break;
case 9:
name = "dmmidi";
@@ -267,9 +269,6 @@
case 10:
name = "dmfm";
break;
- case 11:
- name = "unknown11";
- break;
case 12:
name = "adsp";
break;
@@ -280,10 +279,16 @@
name = "admmidi";
break;
default:
- name = "unknown";
+ {
+ __unknown:
+ sprintf(_name, "unknown%d", chain);
+ if (unit >= SOUND_STEP)
+ strcat(_name, "-");
+ name = _name;
+ }
break;
}
- return sound_insert_unit(&chains[unit&15], fops, -1, unit, unit+1,
+ return sound_insert_unit(&chains[chain], fops, -1, unit, max_unit,
name, S_IRUSR | S_IWUSR);
}
@@ -382,7 +387,7 @@
void unregister_sound_special(int unit)
{
- sound_remove_unit(&chains[unit&15], unit);
+ sound_remove_unit(&chains[unit % SOUND_STEP], unit);
}
EXPORT_SYMBOL(unregister_sound_special);
@@ -480,7 +485,7 @@
int soundcore_open(struct inode *inode, struct file *file)
{
int chain;
- int unit=MINOR(inode->i_rdev);
+ int unit = MINOR(inode->i_rdev);
struct sound_unit *s;
struct file_operations *new_fops = NULL;
-------------------------------------------------------
This SF.NET email is sponsored by:
SourceForge Enterprise Edition + IBM + LinuxWorld = Something 2 See!
http://www.vasoftware.com
_______________________________________________
Alsa-cvslog mailing list
[EMAIL PROTECTED]
https://lists.sourceforge.net/lists/listinfo/alsa-cvslog