ALSA: Clean up snd_monitor_file management
[safe/jmp/linux-2.6] / sound / core / sound_oss.c
index b2fc40a..7fe1226 100644 (file)
@@ -1,6 +1,6 @@
 /*
  *  Advanced Linux Sound Architecture
- *  Copyright (c) by Jaroslav Kysela <perex@suse.cz>
+ *  Copyright (c) by Jaroslav Kysela <perex@perex.cz>
  *
  *
  *   This program is free software; you can redistribute it and/or modify
@@ -19,8 +19,6 @@
  *
  */
 
-#include <sound/driver.h>
-
 #ifdef CONFIG_SND_OSSEMUL
 
 #if !defined(CONFIG_SOUND) && !(defined(MODULE) && defined(CONFIG_SOUND_MODULE))
@@ -66,7 +64,8 @@ static int snd_oss_kernel_minor(int type, struct snd_card *card, int dev)
 
        switch (type) {
        case SNDRV_OSS_DEVICE_TYPE_MIXER:
-               snd_assert(card != NULL && dev <= 1, return -EINVAL);
+               if (snd_BUG_ON(!card || dev < 0 || dev > 1))
+                       return -EINVAL;
                minor = SNDRV_MINOR_OSS(card->number, (dev ? SNDRV_MINOR_OSS_MIXER1 : SNDRV_MINOR_OSS_MIXER));
                break;
        case SNDRV_OSS_DEVICE_TYPE_SEQUENCER:
@@ -76,11 +75,13 @@ static int snd_oss_kernel_minor(int type, struct snd_card *card, int dev)
                minor = SNDRV_MINOR_OSS_MUSIC;
                break;
        case SNDRV_OSS_DEVICE_TYPE_PCM:
-               snd_assert(card != NULL && dev <= 1, return -EINVAL);
+               if (snd_BUG_ON(!card || dev < 0 || dev > 1))
+                       return -EINVAL;
                minor = SNDRV_MINOR_OSS(card->number, (dev ? SNDRV_MINOR_OSS_PCM1 : SNDRV_MINOR_OSS_PCM));
                break;
        case SNDRV_OSS_DEVICE_TYPE_MIDI:
-               snd_assert(card != NULL && dev <= 1, return -EINVAL);
+               if (snd_BUG_ON(!card || dev < 0 || dev > 1))
+                       return -EINVAL;
                minor = SNDRV_MINOR_OSS(card->number, (dev ? SNDRV_MINOR_OSS_MIDI1 : SNDRV_MINOR_OSS_MIDI));
                break;
        case SNDRV_OSS_DEVICE_TYPE_DMFM:
@@ -92,7 +93,8 @@ static int snd_oss_kernel_minor(int type, struct snd_card *card, int dev)
        default:
                return -EINVAL;
        }
-       snd_assert(minor >= 0 && minor < SNDRV_OSS_MINORS, return -EINVAL);
+       if (snd_BUG_ON(minor < 0 || minor >= SNDRV_OSS_MINORS))
+               return -EINVAL;
        return minor;
 }
 
@@ -106,7 +108,7 @@ int snd_register_oss_device(int type, struct snd_card *card, int dev,
        int cidx = SNDRV_MINOR_OSS_CARD(minor);
        int track2 = -1;
        int register1 = -1, register2 = -1;
-       struct device *carddev = NULL;
+       struct device *carddev = snd_card_get_device_link(card);
 
        if (card && card->number >= 8)
                return 0; /* ignore silently */
@@ -134,8 +136,6 @@ int snd_register_oss_device(int type, struct snd_card *card, int dev,
                track2 = SNDRV_MINOR_OSS(cidx, SNDRV_MINOR_OSS_DMMIDI1);
                break;
        }
-       if (card)
-               carddev = card->dev;
        register1 = register_sound_special_device(f_ops, minor, carddev);
        if (register1 != minor)
                goto __end;