staging: comedi: usbduxsigma: init 'pwm_buf_sz' in usbduxsigma_auto_attach()
authorH Hartley Sweeten <hsweeten@visionengravers.com>
Tue, 30 Jul 2013 00:47:06 +0000 (17:47 -0700)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Thu, 1 Aug 2013 00:44:59 +0000 (17:44 -0700)
Initialize this variable with then_ai_urbs and n_ao_urbs in the
attach. Then usbduxsigma_alloc_usb_buffers() can just check the
variable to determine if the urb needs to be allocated.

Signed-off-by: H Hartley Sweeten <hsweeten@visionengravers.com>
Reviewed-by: Ian Abbott <abbotti@mev.co.uk>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
drivers/staging/comedi/drivers/usbduxsigma.c

index df563953fc2630eadfd7efa37e8a7f3245382099..68a3cd2bb1736198e145910ea0181ba84a51d704 100644 (file)
@@ -1600,19 +1600,16 @@ static int usbduxsigma_alloc_usb_buffers(struct comedi_device *dev)
                        urb->interval = 1;      /* frames */
        }
 
-       if (devpriv->high_speed) {
-               /* max bulk ep size in high speed */
-               devpriv->pwm_buf_sz = 512;
+       if (devpriv->pwm_buf_sz) {
                urb = usb_alloc_urb(0, GFP_KERNEL);
                if (!urb)
                        return -ENOMEM;
                devpriv->pwm_urb = urb;
-               urb->transfer_buffer = kzalloc(devpriv->pwm_buf_sz, GFP_KERNEL);
+
+               urb->transfer_buffer = kzalloc(devpriv->pwm_buf_sz,
+                                              GFP_KERNEL);
                if (!urb->transfer_buffer)
                        return -ENOMEM;
-       } else {
-               devpriv->pwm_urb = NULL;
-               devpriv->pwm_buf_sz = 0;
        }
 
        return 0;
@@ -1687,9 +1684,11 @@ static int usbduxsigma_auto_attach(struct comedi_device *dev,
        if (devpriv->high_speed) {
                devpriv->n_ai_urbs = NUMOFINBUFFERSHIGH;
                devpriv->n_ao_urbs = NUMOFOUTBUFFERSHIGH;
+               devpriv->pwm_buf_sz = 512;
        } else {
                devpriv->n_ai_urbs = NUMOFINBUFFERSFULL;
                devpriv->n_ao_urbs = NUMOFOUTBUFFERSFULL;
+               devpriv->pwm_buf_sz = 0;
        }
 
        ret = usbduxsigma_alloc_usb_buffers(dev);