aboutsummaryrefslogtreecommitdiffstats
path: root/sound/core/sound.c
diff options
context:
space:
mode:
Diffstat (limited to 'sound/core/sound.c')
-rw-r--r--sound/core/sound.c11
1 files changed, 9 insertions, 2 deletions
diff --git a/sound/core/sound.c b/sound/core/sound.c
index a8eda02bcf1c..2f6108deb211 100644
--- a/sound/core/sound.c
+++ b/sound/core/sound.c
@@ -245,6 +245,7 @@ int snd_register_device(int type, struct snd_card *card, int dev,
245 int minor; 245 int minor;
246 struct snd_minor *preg; 246 struct snd_minor *preg;
247 struct device *device = NULL; 247 struct device *device = NULL;
248 struct class_device *class_device = NULL;
248 249
249 snd_assert(name, return -EINVAL); 250 snd_assert(name, return -EINVAL);
250 preg = kmalloc(sizeof(struct snd_minor) + strlen(name) + 1, GFP_KERNEL); 251 preg = kmalloc(sizeof(struct snd_minor) + strlen(name) + 1, GFP_KERNEL);
@@ -272,9 +273,15 @@ int snd_register_device(int type, struct snd_card *card, int dev,
272 snd_minors[minor] = preg; 273 snd_minors[minor] = preg;
273 if (type != SNDRV_DEVICE_TYPE_CONTROL || preg->card >= cards_limit) 274 if (type != SNDRV_DEVICE_TYPE_CONTROL || preg->card >= cards_limit)
274 devfs_mk_cdev(MKDEV(major, minor), S_IFCHR | device_mode, "snd/%s", name); 275 devfs_mk_cdev(MKDEV(major, minor), S_IFCHR | device_mode, "snd/%s", name);
275 if (card) 276 if (card) {
276 device = card->dev; 277 device = card->dev;
277 class_device_create(sound_class, NULL, MKDEV(major, minor), device, "%s", name); 278 class_device = card->parent_device;
279 }
280 class_device = class_device_create(sound_class, class_device,
281 MKDEV(major, minor), device,
282 "%s", name);
283 if (type == SNDRV_DEVICE_TYPE_CONTROL)
284 card->parent_device = class_device;
278 285
279 up(&sound_mutex); 286 up(&sound_mutex);
280 return 0; 287 return 0;