Revert to Fedora kernel-2.6.17-1.2187_FC5 patched with vs2.0.2.1; there are too many...
[linux-2.6.git] / sound / sound_core.c
index 62d4d0c..6f84972 100644 (file)
@@ -34,6 +34,7 @@
  *     locking at some point in 2.3.x.
  */
 
+#include <linux/config.h>
 #include <linux/module.h>
 #include <linux/init.h>
 #include <linux/slab.h>
@@ -43,6 +44,7 @@
 #include <linux/sound.h>
 #include <linux/major.h>
 #include <linux/kmod.h>
+#include <linux/devfs_fs_kernel.h>
 #include <linux/device.h>
 
 #define SOUND_STEP 16
@@ -170,6 +172,8 @@ static int sound_insert_unit(struct sound_unit **list, const struct file_operati
        else
                sprintf(s->name, "sound/%s%d", name, r / SOUND_STEP);
 
+       devfs_mk_cdev(MKDEV(SOUND_MAJOR, s->unit_minor),
+                       S_IFCHR | mode, s->name);
        class_device_create(sound_class, NULL, MKDEV(SOUND_MAJOR, s->unit_minor),
                            dev, s->name+6);
        return r;
@@ -193,6 +197,7 @@ static void sound_remove_unit(struct sound_unit **list, int unit)
        p = __sound_remove_unit(list, unit);
        spin_unlock(&sound_loader_lock);
        if (p) {
+               devfs_remove(p->name);
                class_device_destroy(sound_class, MKDEV(SOUND_MAJOR, p->unit_minor));
                kfree(p);
        }
@@ -565,6 +570,7 @@ static void __exit cleanup_soundcore(void)
        /* We have nothing to really do here - we know the lists must be
           empty */
        unregister_chrdev(SOUND_MAJOR, "sound");
+       devfs_remove("sound");
        class_destroy(sound_class);
 }
 
@@ -574,6 +580,7 @@ static int __init init_soundcore(void)
                printk(KERN_ERR "soundcore: sound device already in use.\n");
                return -EBUSY;
        }
+       devfs_mk_dir ("sound");
        sound_class = class_create(THIS_MODULE, "sound");
        if (IS_ERR(sound_class))
                return PTR_ERR(sound_class);