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