aboutsummaryrefslogtreecommitdiffstats
path: root/sound
diff options
context:
space:
mode:
Diffstat (limited to 'sound')
-rw-r--r--sound/core/init.c18
-rw-r--r--sound/core/sound.c4
-rw-r--r--sound/core/sound_oss.c4
3 files changed, 13 insertions, 13 deletions
diff --git a/sound/core/init.c b/sound/core/init.c
index 6152a7554dfd..a4cc6b155ae9 100644
--- a/sound/core/init.c
+++ b/sound/core/init.c
@@ -361,8 +361,10 @@ static int snd_card_do_free(struct snd_card *card)
361 snd_printk(KERN_WARNING "unable to free card info\n"); 361 snd_printk(KERN_WARNING "unable to free card info\n");
362 /* Not fatal error */ 362 /* Not fatal error */
363 } 363 }
364 if (card->dev) 364#ifndef CONFIG_SYSFS_DEPRECATED
365 device_unregister(card->dev); 365 if (card->card_dev)
366 device_unregister(card->card_dev);
367#endif
366 kfree(card); 368 kfree(card);
367 return 0; 369 return 0;
368} 370}
@@ -497,12 +499,14 @@ int snd_card_register(struct snd_card *card)
497 int err; 499 int err;
498 500
499 snd_assert(card != NULL, return -EINVAL); 501 snd_assert(card != NULL, return -EINVAL);
500 if (!card->dev) { 502#ifndef CONFIG_SYSFS_DEPRECATED
501 card->dev = device_create(sound_class, card->parent, 0, 503 if (!card->card_dev) {
502 "card%i", card->number); 504 card->card_dev = device_create(sound_class, card->dev, 0,
503 if (IS_ERR(card->dev)) 505 "card%i", card->number);
504 card->dev = NULL; 506 if (IS_ERR(card->card_dev))
507 card->card_dev = NULL;
505 } 508 }
509#endif
506 if ((err = snd_device_register_all(card)) < 0) 510 if ((err = snd_device_register_all(card)) < 0)
507 return err; 511 return err;
508 mutex_lock(&snd_card_mutex); 512 mutex_lock(&snd_card_mutex);
diff --git a/sound/core/sound.c b/sound/core/sound.c
index 282742022de6..82a61c67cf3a 100644
--- a/sound/core/sound.c
+++ b/sound/core/sound.c
@@ -238,7 +238,7 @@ int snd_register_device(int type, struct snd_card *card, int dev,
238{ 238{
239 int minor; 239 int minor;
240 struct snd_minor *preg; 240 struct snd_minor *preg;
241 struct device *device = NULL; 241 struct device *device = snd_card_get_device_link(card);
242 242
243 snd_assert(name, return -EINVAL); 243 snd_assert(name, return -EINVAL);
244 preg = kmalloc(sizeof *preg, GFP_KERNEL); 244 preg = kmalloc(sizeof *preg, GFP_KERNEL);
@@ -263,8 +263,6 @@ int snd_register_device(int type, struct snd_card *card, int dev,
263 return minor; 263 return minor;
264 } 264 }
265 snd_minors[minor] = preg; 265 snd_minors[minor] = preg;
266 if (card)
267 device = card->dev;
268 preg->dev = device_create(sound_class, device, MKDEV(major, minor), 266 preg->dev = device_create(sound_class, device, MKDEV(major, minor),
269 "%s", name); 267 "%s", name);
270 if (preg->dev) 268 if (preg->dev)
diff --git a/sound/core/sound_oss.c b/sound/core/sound_oss.c
index b2fc40aa520b..4566df41912a 100644
--- a/sound/core/sound_oss.c
+++ b/sound/core/sound_oss.c
@@ -106,7 +106,7 @@ int snd_register_oss_device(int type, struct snd_card *card, int dev,
106 int cidx = SNDRV_MINOR_OSS_CARD(minor); 106 int cidx = SNDRV_MINOR_OSS_CARD(minor);
107 int track2 = -1; 107 int track2 = -1;
108 int register1 = -1, register2 = -1; 108 int register1 = -1, register2 = -1;
109 struct device *carddev = NULL; 109 struct device *carddev = snd_card_get_device_link(card);
110 110
111 if (card && card->number >= 8) 111 if (card && card->number >= 8)
112 return 0; /* ignore silently */ 112 return 0; /* ignore silently */
@@ -134,8 +134,6 @@ int snd_register_oss_device(int type, struct snd_card *card, int dev,
134 track2 = SNDRV_MINOR_OSS(cidx, SNDRV_MINOR_OSS_DMMIDI1); 134 track2 = SNDRV_MINOR_OSS(cidx, SNDRV_MINOR_OSS_DMMIDI1);
135 break; 135 break;
136 } 136 }
137 if (card)
138 carddev = card->dev;
139 register1 = register_sound_special_device(f_ops, minor, carddev); 137 register1 = register_sound_special_device(f_ops, minor, carddev);
140 if (register1 != minor) 138 if (register1 != minor)
141 goto __end; 139 goto __end;