diff options
author | H Hartley Sweeten <hsweeten@visionengravers.com> | 2013-05-17 11:17:00 -0700 |
---|---|---|
committer | Greg Kroah-Hartman <gregkh@linuxfoundation.org> | 2013-05-17 12:09:49 -0700 |
commit | 9ff8b151881adb408d1337bd7654cc869e9f42e0 (patch) | |
tree | ed9f458d5607482f2523a073a76f93b7c7db239c /drivers/staging/comedi/drivers.c | |
parent | 33de9071262a68a3817359e418ff45d018ca2021 (diff) |
staging: comedi: drivers: generalize comedi_load_firmware()
Move comedi_load_firmware() from jr3_pci.c to drivers.c and export
it for general use by the comedi drivers.
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 | 30 |
1 files changed, 30 insertions, 0 deletions
diff --git a/drivers/staging/comedi/drivers.c b/drivers/staging/comedi/drivers.c index 216ba443ee6..12f1974f2c8 100644 --- a/drivers/staging/comedi/drivers.c +++ b/drivers/staging/comedi/drivers.c @@ -33,6 +33,7 @@ #include <linux/dma-mapping.h> #include <linux/io.h> #include <linux/interrupt.h> +#include <linux/firmware.h> #include "comedidev.h" #include "comedi_internal.h" @@ -347,6 +348,35 @@ static void comedi_report_boards(struct comedi_driver *driv) } /** + * comedi_load_firmware() - Request and load firmware for a device. + * @dev: comedi_device struct + * @hw_device: device struct for the comedi_device + * @name: the name of the firmware image + * @cb: callback to the upload the firmware image + */ +int comedi_load_firmware(struct comedi_device *dev, + struct device *device, + const char *name, + int (*cb)(struct comedi_device *dev, + const u8 *data, size_t size)) +{ + const struct firmware *fw; + int ret; + + if (!cb) + return -EINVAL; + + ret = request_firmware(&fw, name, device); + if (ret == 0) { + ret = cb(dev, fw->data, fw->size); + release_firmware(fw); + } + + return ret; +} +EXPORT_SYMBOL_GPL(comedi_load_firmware); + +/** * __comedi_request_region() - Request an I/O reqion for a legacy driver. * @dev: comedi_device struct * @start: base address of the I/O reqion |