staging: comedi: remove comedi_clear_subdevice_minor()
[firefly-linux-kernel-4.4.55.git] / drivers / staging / comedi / comedi_fops.c
index beb579ddab63626c1cdad0b0c2c9f8d3a860fe68..64721f7f089be06ded2f352d940a802b41fe9c1f 100644 (file)
@@ -137,18 +137,6 @@ static struct comedi_file_info *comedi_clear_board_minor(unsigned minor)
        return info;
 }
 
-static struct comedi_file_info *comedi_clear_subdevice_minor(unsigned minor)
-{
-       struct comedi_file_info *info;
-       unsigned int i = minor - COMEDI_NUM_BOARD_MINORS;
-
-       mutex_lock(&comedi_subdevice_minor_table_lock);
-       info = comedi_subdevice_minor_table[i];
-       comedi_subdevice_minor_table[i] = NULL;
-       mutex_unlock(&comedi_subdevice_minor_table_lock);
-       return info;
-}
-
 static void comedi_free_board_file_info(struct comedi_file_info *info)
 {
        if (info) {
@@ -190,23 +178,34 @@ static struct comedi_file_info
        return info;
 }
 
-static struct comedi_file_info *comedi_file_info_from_minor(unsigned minor)
-{
-       if (minor < COMEDI_NUM_BOARD_MINORS)
-               return comedi_file_info_from_board_minor(minor);
-       else
-               return comedi_file_info_from_subdevice_minor(minor);
-}
-
 static struct comedi_device *
 comedi_dev_from_file_info(struct comedi_file_info *info)
 {
        return info ? info->device : NULL;
 }
 
+static struct comedi_device *comedi_dev_from_board_minor(unsigned minor)
+{
+       struct comedi_file_info *info;
+
+       info = comedi_file_info_from_board_minor(minor);
+       return comedi_dev_from_file_info(info);
+}
+
+static struct comedi_device *comedi_dev_from_subdevice_minor(unsigned minor)
+{
+       struct comedi_file_info *info;
+
+       info = comedi_file_info_from_subdevice_minor(minor);
+       return comedi_dev_from_file_info(info);
+}
+
 struct comedi_device *comedi_dev_from_minor(unsigned minor)
 {
-       return comedi_dev_from_file_info(comedi_file_info_from_minor(minor));
+       if (minor < COMEDI_NUM_BOARD_MINORS)
+               return comedi_dev_from_board_minor(minor);
+       else
+               return comedi_dev_from_subdevice_minor(minor);
 }
 EXPORT_SYMBOL_GPL(comedi_dev_from_minor);
 
@@ -2517,6 +2516,7 @@ int comedi_alloc_subdevice_minor(struct comedi_subdevice *s)
 void comedi_free_subdevice_minor(struct comedi_subdevice *s)
 {
        struct comedi_file_info *info;
+       unsigned int i;
 
        if (s == NULL)
                return;
@@ -2526,7 +2526,11 @@ void comedi_free_subdevice_minor(struct comedi_subdevice *s)
        BUG_ON(s->minor >= COMEDI_NUM_MINORS);
        BUG_ON(s->minor < COMEDI_NUM_BOARD_MINORS);
 
-       info = comedi_clear_subdevice_minor(s->minor);
+       i = s->minor - COMEDI_NUM_BOARD_MINORS;
+       mutex_lock(&comedi_subdevice_minor_table_lock);
+       info = comedi_subdevice_minor_table[i];
+       comedi_subdevice_minor_table[i] = NULL;
+       mutex_unlock(&comedi_subdevice_minor_table_lock);
        if (s->class_dev) {
                device_destroy(comedi_class, MKDEV(COMEDI_MAJOR, s->minor));
                s->class_dev = NULL;