提交 ca88c09f 编写于 作者: H H Hartley Sweeten 提交者: Greg Kroah-Hartman

staging: comedi: usbduxfast: use a local var for the usbduxfastsub_s

Add a local variable to hold the pointer to the place in the
usbduxfast array the is being configured for the device.
Signed-off-by: NH Hartley Sweeten <hsweeten@visionengravers.com>
Cc: Ian Abbott <abbotti@mev.co.uk>
Signed-off-by: NGreg Kroah-Hartman <gregkh@linuxfoundation.org>
上级 64bf88bf
...@@ -1491,8 +1491,8 @@ static int usbduxfast_usb_probe(struct usb_interface *uinterf, ...@@ -1491,8 +1491,8 @@ static int usbduxfast_usb_probe(struct usb_interface *uinterf,
const struct usb_device_id *id) const struct usb_device_id *id)
{ {
struct usb_device *udev = interface_to_usbdev(uinterf); struct usb_device *udev = interface_to_usbdev(uinterf);
struct usbduxfastsub_s *devpriv = NULL;
int i; int i;
int index;
int ret; int ret;
if (udev->speed != USB_SPEED_HIGH) { if (udev->speed != USB_SPEED_HIGH) {
...@@ -1503,78 +1503,66 @@ static int usbduxfast_usb_probe(struct usb_interface *uinterf, ...@@ -1503,78 +1503,66 @@ static int usbduxfast_usb_probe(struct usb_interface *uinterf,
down(&start_stop_sem); down(&start_stop_sem);
/* look for a free place in the usbduxfast array */ /* look for a free place in the usbduxfast array */
index = -1;
for (i = 0; i < NUMUSBDUXFAST; i++) { for (i = 0; i < NUMUSBDUXFAST; i++) {
if (!usbduxfastsub[i].probed) { if (!usbduxfastsub[i].probed) {
index = i; devpriv = &usbduxfastsub[i];
break; break;
} }
} }
/* no more space */ /* no more space */
if (index == -1) { if (!devpriv) {
dev_err(&uinterf->dev, dev_err(&uinterf->dev,
"Too many usbduxfast-devices connected.\n"); "Too many usbduxfast-devices connected.\n");
up(&start_stop_sem); up(&start_stop_sem);
return -EMFILE; return -EMFILE;
} }
sema_init(&(usbduxfastsub[index].sem), 1); sema_init(&devpriv->sem, 1);
/* save a pointer to the usb device */ devpriv->usbdev = udev;
usbduxfastsub[index].usbdev = udev; devpriv->interface = uinterf;
devpriv->ifnum = uinterf->altsetting->desc.bInterfaceNumber;
usb_set_intfdata(uinterf, devpriv);
/* save the interface itself */ devpriv->dux_commands = kmalloc(SIZEOFDUXBUFFER, GFP_KERNEL);
usbduxfastsub[index].interface = uinterf; if (!devpriv->dux_commands) {
/* get the interface number from the interface */ tidy_up(devpriv);
usbduxfastsub[index].ifnum = uinterf->altsetting->desc.bInterfaceNumber;
/*
* hand the private data over to the usb subsystem
* will be needed for disconnect
*/
usb_set_intfdata(uinterf, &(usbduxfastsub[index]));
/* create space for the commands going to the usb device */
usbduxfastsub[index].dux_commands = kmalloc(SIZEOFDUXBUFFER,
GFP_KERNEL);
if (!usbduxfastsub[index].dux_commands) {
tidy_up(&(usbduxfastsub[index]));
up(&start_stop_sem); up(&start_stop_sem);
return -ENOMEM; return -ENOMEM;
} }
/* create space of the instruction buffer */
usbduxfastsub[index].insnBuffer = kmalloc(SIZEINSNBUF, GFP_KERNEL); devpriv->insnBuffer = kmalloc(SIZEINSNBUF, GFP_KERNEL);
if (!usbduxfastsub[index].insnBuffer) { if (!devpriv->insnBuffer) {
tidy_up(&(usbduxfastsub[index])); tidy_up(devpriv);
up(&start_stop_sem); up(&start_stop_sem);
return -ENOMEM; return -ENOMEM;
} }
/* setting to alternate setting 1: enabling bulk ep */
i = usb_set_interface(usbduxfastsub[index].usbdev, i = usb_set_interface(devpriv->usbdev, devpriv->ifnum, 1);
usbduxfastsub[index].ifnum, 1);
if (i < 0) { if (i < 0) {
dev_err(&uinterf->dev, dev_err(&uinterf->dev,
"usbduxfast%d: could not switch to alternate setting 1.\n", "could not switch to alternate setting 1\n");
index); tidy_up(devpriv);
tidy_up(&(usbduxfastsub[index]));
up(&start_stop_sem); up(&start_stop_sem);
return -ENODEV; return -ENODEV;
} }
usbduxfastsub[index].urbIn = usb_alloc_urb(0, GFP_KERNEL);
if (!usbduxfastsub[index].urbIn) { devpriv->urbIn = usb_alloc_urb(0, GFP_KERNEL);
dev_err(&uinterf->dev, if (!devpriv->urbIn) {
"usbduxfast%d: Could not alloc. urb\n", index); dev_err(&uinterf->dev, "Could not alloc. urb\n");
tidy_up(&(usbduxfastsub[index])); tidy_up(devpriv);
up(&start_stop_sem); up(&start_stop_sem);
return -ENOMEM; return -ENOMEM;
} }
usbduxfastsub[index].transfer_buffer = kmalloc(SIZEINBUF, GFP_KERNEL);
if (!usbduxfastsub[index].transfer_buffer) { devpriv->transfer_buffer = kmalloc(SIZEINBUF, GFP_KERNEL);
tidy_up(&(usbduxfastsub[index])); if (!devpriv->transfer_buffer) {
tidy_up(devpriv);
up(&start_stop_sem); up(&start_stop_sem);
return -ENOMEM; return -ENOMEM;
} }
/* we've reached the bottom of the function */
usbduxfastsub[index].probed = 1; devpriv->probed = 1;
up(&start_stop_sem); up(&start_stop_sem);
/* /*
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册