|
@@ -485,7 +485,6 @@ fill_isoc_urb(struct urb *urb, struct usb_device *dev, unsigned int pipe,
|
|
{
|
|
{
|
|
int k;
|
|
int k;
|
|
|
|
|
|
- spin_lock_init(&urb->lock);
|
|
|
|
urb->dev = dev;
|
|
urb->dev = dev;
|
|
urb->pipe = pipe;
|
|
urb->pipe = pipe;
|
|
urb->complete = complete;
|
|
urb->complete = complete;
|
|
@@ -578,16 +577,14 @@ stop_isoc_chain(usb_fifo * fifo)
|
|
"HFC-S USB: Stopping iso chain for fifo %i.%i",
|
|
"HFC-S USB: Stopping iso chain for fifo %i.%i",
|
|
fifo->fifonum, i);
|
|
fifo->fifonum, i);
|
|
#endif
|
|
#endif
|
|
- usb_unlink_urb(fifo->iso[i].purb);
|
|
|
|
|
|
+ usb_kill_urb(fifo->iso[i].purb);
|
|
usb_free_urb(fifo->iso[i].purb);
|
|
usb_free_urb(fifo->iso[i].purb);
|
|
fifo->iso[i].purb = NULL;
|
|
fifo->iso[i].purb = NULL;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
- if (fifo->urb) {
|
|
|
|
- usb_unlink_urb(fifo->urb);
|
|
|
|
- usb_free_urb(fifo->urb);
|
|
|
|
- fifo->urb = NULL;
|
|
|
|
- }
|
|
|
|
|
|
+ usb_kill_urb(fifo->urb);
|
|
|
|
+ usb_free_urb(fifo->urb);
|
|
|
|
+ fifo->urb = NULL;
|
|
fifo->active = 0;
|
|
fifo->active = 0;
|
|
}
|
|
}
|
|
|
|
|
|
@@ -1305,7 +1302,11 @@ usb_init(hfcusb_data * hfc)
|
|
}
|
|
}
|
|
/* default Prot: EURO ISDN, should be a module_param */
|
|
/* default Prot: EURO ISDN, should be a module_param */
|
|
hfc->protocol = 2;
|
|
hfc->protocol = 2;
|
|
- hisax_register(&hfc->d_if, p_b_if, "hfc_usb", hfc->protocol);
|
|
|
|
|
|
+ i = hisax_register(&hfc->d_if, p_b_if, "hfc_usb", hfc->protocol);
|
|
|
|
+ if (i) {
|
|
|
|
+ printk(KERN_INFO "HFC-S USB: hisax_register -> %d\n", i);
|
|
|
|
+ return i;
|
|
|
|
+ }
|
|
|
|
|
|
#ifdef CONFIG_HISAX_DEBUG
|
|
#ifdef CONFIG_HISAX_DEBUG
|
|
hfc_debug = debug;
|
|
hfc_debug = debug;
|
|
@@ -1626,11 +1627,9 @@ hfc_usb_probe(struct usb_interface *intf, const struct usb_device_id *id)
|
|
#endif
|
|
#endif
|
|
/* init the chip and register the driver */
|
|
/* init the chip and register the driver */
|
|
if (usb_init(context)) {
|
|
if (usb_init(context)) {
|
|
- if (context->ctrl_urb) {
|
|
|
|
- usb_unlink_urb(context->ctrl_urb);
|
|
|
|
- usb_free_urb(context->ctrl_urb);
|
|
|
|
- context->ctrl_urb = NULL;
|
|
|
|
- }
|
|
|
|
|
|
+ usb_kill_urb(context->ctrl_urb);
|
|
|
|
+ usb_free_urb(context->ctrl_urb);
|
|
|
|
+ context->ctrl_urb = NULL;
|
|
kfree(context);
|
|
kfree(context);
|
|
return (-EIO);
|
|
return (-EIO);
|
|
}
|
|
}
|
|
@@ -1682,21 +1681,15 @@ hfc_usb_disconnect(struct usb_interface
|
|
i);
|
|
i);
|
|
#endif
|
|
#endif
|
|
}
|
|
}
|
|
- if (context->fifos[i].urb) {
|
|
|
|
- usb_unlink_urb(context->fifos[i].urb);
|
|
|
|
- usb_free_urb(context->fifos[i].urb);
|
|
|
|
- context->fifos[i].urb = NULL;
|
|
|
|
- }
|
|
|
|
|
|
+ usb_kill_urb(context->fifos[i].urb);
|
|
|
|
+ usb_free_urb(context->fifos[i].urb);
|
|
|
|
+ context->fifos[i].urb = NULL;
|
|
}
|
|
}
|
|
context->fifos[i].active = 0;
|
|
context->fifos[i].active = 0;
|
|
}
|
|
}
|
|
- /* wait for all URBS to terminate */
|
|
|
|
- mdelay(10);
|
|
|
|
- if (context->ctrl_urb) {
|
|
|
|
- usb_unlink_urb(context->ctrl_urb);
|
|
|
|
- usb_free_urb(context->ctrl_urb);
|
|
|
|
- context->ctrl_urb = NULL;
|
|
|
|
- }
|
|
|
|
|
|
+ usb_kill_urb(context->ctrl_urb);
|
|
|
|
+ usb_free_urb(context->ctrl_urb);
|
|
|
|
+ context->ctrl_urb = NULL;
|
|
hisax_unregister(&context->d_if);
|
|
hisax_unregister(&context->d_if);
|
|
kfree(context); /* free our structure again */
|
|
kfree(context); /* free our structure again */
|
|
} /* hfc_usb_disconnect */
|
|
} /* hfc_usb_disconnect */
|