staging: comedi: usbdux: use comedi_load_firmware()
authorH Hartley Sweeten <hsweeten@visionengravers.com>
Mon, 20 May 2013 21:30:41 +0000 (14:30 -0700)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Tue, 21 May 2013 17:59:12 +0000 (10:59 -0700)
Use comedi_load_firmware() instead of duplicating the code in a
private function.

Also, rename firmware_upload() to have namespace associated with
the driver.

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>
drivers/staging/comedi/drivers/usbdux.c

index 59a2046dc86e80d62923b261915f356a21402c46..279e5bd493fa8682cfa6a9d3e1095265546736cc 100644 (file)
@@ -89,7 +89,6 @@ sampling rate. If you sample two channels you get 4kHz and so on.
 #include <linux/usb.h>
 #include <linux/fcntl.h>
 #include <linux/compiler.h>
-#include <linux/firmware.h>
 
 #include "../comedidev.h"
 
@@ -724,9 +723,11 @@ static void usbduxsub_ao_isoc_irq(struct urb *urb)
 
 #define FIRMWARE_MAX_LEN 0x2000
 
-static int firmware_upload(struct usbduxsub *usbduxsub,
-                         const u8 *data, int size)
+static int usbdux_firmware_upload(struct comedi_device *dev,
+                                 const u8 *data, size_t size,
+                                 unsigned long context)
 {
+       struct usbduxsub *usbduxsub = dev->private;
        struct usb_device *usb = usbduxsub->usbdev;
        uint8_t *buf;
        uint8_t *tmp;
@@ -2251,16 +2252,15 @@ static int usbdux_auto_attach(struct comedi_device *dev,
        struct usb_interface *uinterf = comedi_to_usb_interface(dev);
        struct usbduxsub *this_usbduxsub = usb_get_intfdata(uinterf);
        struct usb_device *usb = usbduxsub->usbdev;
-       const struct firmware *fw;
        int ret;
 
-       ret = request_firmware(&fw, FIRMWARE, &usb->dev);
-       if (ret == 0) {
-               ret = firmware_upload(this_usbduxsub, fw->data, fw->size);
-               release_firmware(fw);
-       }
-       if (ret < 0)
+       dev->private = this_usbduxsub;  /* This is temporary... */
+       ret = comedi_load_firmware(dev, &usb->dev, FIRMWARE,
+                                  usbdux_firmware_upload, 0);
+       if (ret < 0) {
+               dev->private = NULL;
                return ret;
+       }
 
        dev->private = NULL;