--- linux-2.4.10/drivers/sound/sound_core.c Mon Oct 8 16:33:19 2001 +++ linux-2.4.10.SuSE+LL/drivers/sound/sound_core.c Mon Oct 8 17:17:49 2001 @@ -231,23 +231,28 @@ int register_sound_special(struct file_operations *fops, int unit) { - char *name; + char *name, name_ext[32]; + int suffix = 0; - switch (unit) { + switch (unit & 15) { case 0: name = "mixer"; + suffix = 1; break; case 1: name = "sequencer"; break; case 2: - name = "midi00"; + sprintf(name_ext, "midi0%d", unit / SOUND_STEP); + name = name_ext; break; case 3: name = "dsp"; + suffix = 1; break; case 4: name = "audio"; + suffix = 1; break; case 5: name = "unknown5"; @@ -263,25 +268,34 @@ break; case 9: name = "dmmidi"; + suffix = 1; break; case 10: name = "dmfm"; + suffix = 1; break; case 11: name = "unknown11"; break; case 12: name = "adsp"; + suffix = 1; break; case 13: name = "amidi"; + suffix = 1; break; case 14: name = "admmidi"; + suffix = 1; break; default: name = "unknown"; break; + } + if (suffix && unit >= SOUND_STEP) { + sprintf(name_ext, "%s%d", name, unit / SOUND_STEP); + name = name_ext; } return sound_insert_unit(&chains[unit&15], fops, -1, unit, unit+1, name, S_IRUSR | S_IWUSR);