unsigned long arg)
 {
        const unsigned minor = iminor(file->f_dentry->d_inode);
-       struct comedi_device_file_info *dev_file_info =
-           comedi_get_device_file_info(minor);
-       struct comedi_device *dev;
+       struct comedi_device *dev = comedi_dev_from_minor(minor);
        int rc;
 
-       if (dev_file_info == NULL || dev_file_info->device == NULL)
+       if (!dev)
                return -ENODEV;
-       dev = dev_file_info->device;
 
        mutex_lock(&dev->mutex);
 
 static int comedi_open(struct inode *inode, struct file *file)
 {
        const unsigned minor = iminor(inode);
-       struct comedi_device_file_info *dev_file_info =
-           comedi_get_device_file_info(minor);
-       struct comedi_device *dev =
-           dev_file_info ? dev_file_info->device : NULL;
+       struct comedi_device *dev = comedi_dev_from_minor(minor);
 
-       if (dev == NULL) {
+       if (!dev) {
                DPRINTK("invalid minor number\n");
                return -ENODEV;
        }
 static int comedi_fasync(int fd, struct file *file, int on)
 {
        const unsigned minor = iminor(file->f_dentry->d_inode);
-       struct comedi_device_file_info *dev_file_info;
-       struct comedi_device *dev;
-       dev_file_info = comedi_get_device_file_info(minor);
+       struct comedi_device *dev = comedi_dev_from_minor(minor);
 
-       if (dev_file_info == NULL)
-               return -ENODEV;
-       dev = dev_file_info->device;
-       if (dev == NULL)
+       if (!dev)
                return -ENODEV;
 
        return fasync_helper(fd, file, on, &dev->async_queue);
 static int comedi_close(struct inode *inode, struct file *file)
 {
        const unsigned minor = iminor(inode);
+       struct comedi_device *dev = comedi_dev_from_minor(minor);
        struct comedi_subdevice *s = NULL;
        int i;
-       struct comedi_device_file_info *dev_file_info;
-       struct comedi_device *dev;
-       dev_file_info = comedi_get_device_file_info(minor);
 
-       if (dev_file_info == NULL)
-               return -ENODEV;
-       dev = dev_file_info->device;
-       if (dev == NULL)
+       if (!dev)
                return -ENODEV;
 
        mutex_lock(&dev->mutex);
 
 
        /* check for devices using this driver */
        for (i = 0; i < COMEDI_NUM_BOARD_MINORS; i++) {
-               struct comedi_device_file_info *dev_file_info =
-                   comedi_get_device_file_info(i);
-               struct comedi_device *dev;
+               struct comedi_device *dev = comedi_dev_from_minor(i);
 
-               if (dev_file_info == NULL)
+               if (!dev)
                        continue;
-               dev = dev_file_info->device;
 
                mutex_lock(&dev->mutex);
                if (dev->attached && dev->driver == driver) {
                       struct comedi_driver *driver, unsigned long context)
 {
        int minor;
-       struct comedi_device_file_info *dev_file_info;
        struct comedi_device *comedi_dev;
        int ret;
 
        if (minor < 0)
                return minor;
 
-       dev_file_info = comedi_get_device_file_info(minor);
-       comedi_dev = dev_file_info->device;
+       comedi_dev = comedi_dev_from_minor(minor);
 
        mutex_lock(&comedi_dev->mutex);
        if (comedi_dev->attached)
 
 
 struct comedi_device *comedi_open(const char *filename)
 {
-       struct comedi_device_file_info *dev_file_info;
        struct comedi_device *dev;
        unsigned int minor;
 
        if (minor >= COMEDI_NUM_BOARD_MINORS)
                return NULL;
 
-       dev_file_info = comedi_get_device_file_info(minor);
-       if (dev_file_info == NULL)
-               return NULL;
-       dev = dev_file_info->device;
+       dev = comedi_dev_from_minor(minor);
 
-       if (dev == NULL || !dev->attached)
+       if (!dev || !dev->attached)
                return NULL;
 
        if (!try_module_get(dev->driver->module))
 
                     "driver_name, board_name, n_subdevices");
 
        for (i = 0; i < COMEDI_NUM_BOARD_MINORS; i++) {
-               struct comedi_device_file_info *dev_file_info =
-                   comedi_get_device_file_info(i);
-               struct comedi_device *dev;
+               struct comedi_device *dev = comedi_dev_from_minor(i);
 
-               if (dev_file_info == NULL)
+               if (!dev)
                        continue;
-               dev = dev_file_info->device;
 
                if (dev->attached) {
                        devices_q = 1;