diff options
Diffstat (limited to 'sound/core/sound.c')
-rw-r--r-- | sound/core/sound.c | 18 |
1 files changed, 13 insertions, 5 deletions
diff --git a/sound/core/sound.c b/sound/core/sound.c index 66691fe437e..1c7a3efe177 100644 --- a/sound/core/sound.c +++ b/sound/core/sound.c | |||
@@ -188,14 +188,22 @@ static const struct file_operations snd_fops = | |||
188 | }; | 188 | }; |
189 | 189 | ||
190 | #ifdef CONFIG_SND_DYNAMIC_MINORS | 190 | #ifdef CONFIG_SND_DYNAMIC_MINORS |
191 | static int snd_find_free_minor(void) | 191 | static int snd_find_free_minor(int type) |
192 | { | 192 | { |
193 | int minor; | 193 | int minor; |
194 | 194 | ||
195 | /* static minors for module auto loading */ | ||
196 | if (type == SNDRV_DEVICE_TYPE_SEQUENCER) | ||
197 | return SNDRV_MINOR_SEQUENCER; | ||
198 | if (type == SNDRV_DEVICE_TYPE_TIMER) | ||
199 | return SNDRV_MINOR_TIMER; | ||
200 | |||
195 | for (minor = 0; minor < ARRAY_SIZE(snd_minors); ++minor) { | 201 | for (minor = 0; minor < ARRAY_SIZE(snd_minors); ++minor) { |
196 | /* skip minors still used statically for autoloading devices */ | 202 | /* skip static minors still used for module auto loading */ |
197 | if (SNDRV_MINOR_DEVICE(minor) == SNDRV_MINOR_CONTROL || | 203 | if (SNDRV_MINOR_DEVICE(minor) == SNDRV_MINOR_CONTROL) |
198 | minor == SNDRV_MINOR_SEQUENCER) | 204 | continue; |
205 | if (minor == SNDRV_MINOR_SEQUENCER || | ||
206 | minor == SNDRV_MINOR_TIMER) | ||
199 | continue; | 207 | continue; |
200 | if (!snd_minors[minor]) | 208 | if (!snd_minors[minor]) |
201 | return minor; | 209 | return minor; |
@@ -269,7 +277,7 @@ int snd_register_device_for_dev(int type, struct snd_card *card, int dev, | |||
269 | preg->private_data = private_data; | 277 | preg->private_data = private_data; |
270 | mutex_lock(&sound_mutex); | 278 | mutex_lock(&sound_mutex); |
271 | #ifdef CONFIG_SND_DYNAMIC_MINORS | 279 | #ifdef CONFIG_SND_DYNAMIC_MINORS |
272 | minor = snd_find_free_minor(); | 280 | minor = snd_find_free_minor(type); |
273 | #else | 281 | #else |
274 | minor = snd_kernel_minor(type, card, dev); | 282 | minor = snd_kernel_minor(type, card, dev); |
275 | if (minor >= 0 && snd_minors[minor]) | 283 | if (minor >= 0 && snd_minors[minor]) |