Hi,
Recently I switch to devfs (kernels 2.4.20 and 2.4.21). On Alsa loading, I
get this message :
kernel: devfs: devfs_register(unknown): could not append to parent, err:
-17
And all applications with oss were working with only one of my two
sound cards (ie gnome-volume-control). So I found this mail from T.Iwai on
lkml :
http://www.cs.helsinki.fi/linux/linux-kernel/2001-49/0266.html
So I've adapted this patch (modified patch joined with this mail) and all
works well.
Can somebody give me more informations about this ?
Arnaud Patard
diff -ur linux-2.4.21/drivers/sound/sound_core.c
/usr/src/linux/drivers/sound/sound_core.c
--- linux-2.4.21/drivers/sound/sound_core.c 2001-09-30 21:26:08.000000000 +0200
+++ /usr/src/linux/drivers/sound/sound_core.c 2003-06-23 14:33:13.000000000 +0200
@@ -231,23 +231,29 @@
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,26 +269,35 @@
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);
}