diff options
author | H Hartley Sweeten <hsweeten@visionengravers.com> | 2013-01-30 15:24:38 -0700 |
---|---|---|
committer | Greg Kroah-Hartman <gregkh@linuxfoundation.org> | 2013-01-31 10:40:41 +0100 |
commit | 1ae6b20b88737f1828649b6cbe349c83b9f97bf0 (patch) | |
tree | 18b9e8559af054658eeb5186768ca6640eb9e3c3 /drivers/staging/comedi/drivers.c | |
parent | staging: comedi: ni_daq_700: convert to auto attach (diff) | |
download | linux-dev-1ae6b20b88737f1828649b6cbe349c83b9f97bf0.tar.xz linux-dev-1ae6b20b88737f1828649b6cbe349c83b9f97bf0.zip |
staging: comedi: tidy up the general purpose driver functions
Group all the general comedi driver register/config/attach
prototypes into one place in comedidev.h.
Reorder the functions in drivers.c a bit so they are in a more
logical usage order (bottom to top).
Signed-off-by: H Hartley Sweeten <hsweeten@visionengravers.com>
Cc: Ian Abbott <abbotti@mev.co.uk>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Diffstat (limited to 'drivers/staging/comedi/drivers.c')
-rw-r--r-- | drivers/staging/comedi/drivers.c | 94 |
1 files changed, 47 insertions, 47 deletions
diff --git a/drivers/staging/comedi/drivers.c b/drivers/staging/comedi/drivers.c index 151e0845569e..fe91e758184f 100644 --- a/drivers/staging/comedi/drivers.c +++ b/drivers/staging/comedi/drivers.c @@ -386,53 +386,6 @@ int comedi_device_attach(struct comedi_device *dev, struct comedi_devconfig *it) return comedi_device_postconfig(dev); } -int comedi_driver_register(struct comedi_driver *driver) -{ - driver->next = comedi_drivers; - comedi_drivers = driver; - - return 0; -} -EXPORT_SYMBOL(comedi_driver_register); - -int comedi_driver_unregister(struct comedi_driver *driver) -{ - struct comedi_driver *prev; - int i; - - /* check for devices using this driver */ - for (i = 0; i < COMEDI_NUM_BOARD_MINORS; i++) { - struct comedi_device *dev = comedi_dev_from_minor(i); - - if (!dev) - continue; - - mutex_lock(&dev->mutex); - if (dev->attached && dev->driver == driver) { - if (dev->use_count) - dev_warn(dev->class_dev, - "BUG! detaching device with use_count=%d\n", - dev->use_count); - comedi_device_detach(dev); - } - mutex_unlock(&dev->mutex); - } - - if (comedi_drivers == driver) { - comedi_drivers = driver->next; - return 0; - } - - for (prev = comedi_drivers; prev->next; prev = prev->next) { - if (prev->next == driver) { - prev->next = driver->next; - return 0; - } - } - return -EINVAL; -} -EXPORT_SYMBOL(comedi_driver_unregister); - int comedi_auto_config(struct device *hardware_device, struct comedi_driver *driver, unsigned long context) { @@ -492,3 +445,50 @@ void comedi_auto_unconfig(struct device *hardware_device) comedi_free_board_minor(minor); } EXPORT_SYMBOL_GPL(comedi_auto_unconfig); + +int comedi_driver_register(struct comedi_driver *driver) +{ + driver->next = comedi_drivers; + comedi_drivers = driver; + + return 0; +} +EXPORT_SYMBOL(comedi_driver_register); + +int comedi_driver_unregister(struct comedi_driver *driver) +{ + struct comedi_driver *prev; + int i; + + /* check for devices using this driver */ + for (i = 0; i < COMEDI_NUM_BOARD_MINORS; i++) { + struct comedi_device *dev = comedi_dev_from_minor(i); + + if (!dev) + continue; + + mutex_lock(&dev->mutex); + if (dev->attached && dev->driver == driver) { + if (dev->use_count) + dev_warn(dev->class_dev, + "BUG! detaching device with use_count=%d\n", + dev->use_count); + comedi_device_detach(dev); + } + mutex_unlock(&dev->mutex); + } + + if (comedi_drivers == driver) { + comedi_drivers = driver->next; + return 0; + } + + for (prev = comedi_drivers; prev->next; prev = prev->next) { + if (prev->next == driver) { + prev->next = driver->next; + return 0; + } + } + return -EINVAL; +} +EXPORT_SYMBOL(comedi_driver_unregister); |