diff options
81 files changed, 319 insertions, 319 deletions
diff --git a/drivers/bluetooth/hci_usb.c b/drivers/bluetooth/hci_usb.c index fe55c337cf26..dcc257777929 100644 --- a/drivers/bluetooth/hci_usb.c +++ b/drivers/bluetooth/hci_usb.c @@ -92,9 +92,9 @@ static struct usb_device_id ignore_ids[] = { { } /* Terminating entry */ }; -static void hci_usb_interrupt(struct urb *urb); -static void hci_usb_rx_complete(struct urb *urb); -static void hci_usb_tx_complete(struct urb *urb); +static void hci_usb_interrupt(struct urb *urb, struct pt_regs *regs); +static void hci_usb_rx_complete(struct urb *urb, struct pt_regs *regs); +static void hci_usb_tx_complete(struct urb *urb, struct pt_regs *regs); static struct urb *hci_usb_get_completed(struct hci_usb *husb) { @@ -429,7 +429,7 @@ int hci_usb_send_frame(struct sk_buff *skb) return 0; } -static void hci_usb_interrupt(struct urb *urb) +static void hci_usb_interrupt(struct urb *urb, struct pt_regs *regs) { struct hci_usb *husb = (void *) urb->context; struct hci_usb_scb *scb; @@ -531,7 +531,7 @@ exit: husb->hdev.name, status); } -static void hci_usb_tx_complete(struct urb *urb) +static void hci_usb_tx_complete(struct urb *urb, struct pt_regs *regs) { struct sk_buff *skb = (struct sk_buff *) urb->context; struct hci_dev *hdev = (struct hci_dev *) skb->dev; @@ -563,7 +563,7 @@ static void hci_usb_tx_complete(struct urb *urb) return; } -static void hci_usb_rx_complete(struct urb *urb) +static void hci_usb_rx_complete(struct urb *urb, struct pt_regs *regs) { struct sk_buff *skb = (struct sk_buff *) urb->context; struct hci_dev *hdev = (struct hci_dev *) skb->dev; diff --git a/drivers/isdn/hisax/st5481_usb.c b/drivers/isdn/hisax/st5481_usb.c index d7a326f06199..13a13d10a95c 100644 --- a/drivers/isdn/hisax/st5481_usb.c +++ b/drivers/isdn/hisax/st5481_usb.c @@ -123,7 +123,7 @@ void st5481_ph_command(struct st5481_adapter *adapter, unsigned int command) * Call the user provided completion routine and try * to send the next request. */ -static void usb_ctrl_complete(struct urb *urb) +static void usb_ctrl_complete(struct urb *urb, struct pt_regs *regs) { struct st5481_adapter *adapter = urb->context; struct st5481_ctrl *ctrl = &adapter->ctrl; @@ -176,7 +176,7 @@ static void usb_ctrl_complete(struct urb *urb) * Decode the register values and schedule a private event. * Called at interrupt. */ -static void usb_int_complete(struct urb *urb) +static void usb_int_complete(struct urb *urb, struct pt_regs *regs) { u_char *data = urb->transfer_buffer; u_char irqbyte; diff --git a/drivers/media/video/cpia_usb.c b/drivers/media/video/cpia_usb.c index 1b4072e98676..1c01ef626204 100644 --- a/drivers/media/video/cpia_usb.c +++ b/drivers/media/video/cpia_usb.c @@ -107,7 +107,7 @@ static struct cpia_camera_ops cpia_usb_ops = { static struct cam_data *cam_list; static spinlock_t cam_list_lock_usb; -static void cpia_usb_complete(struct urb *urb) +static void cpia_usb_complete(struct urb *urb, struct pt_regs *regs) { int i; char *cdata; diff --git a/drivers/net/irda/irda-usb.c b/drivers/net/irda/irda-usb.c index da5af39db508..15d8c379510c 100644 --- a/drivers/net/irda/irda-usb.c +++ b/drivers/net/irda/irda-usb.c @@ -107,9 +107,9 @@ static void irda_usb_change_speed_xbofs(struct irda_usb_cb *self); static int irda_usb_hard_xmit(struct sk_buff *skb, struct net_device *dev); static int irda_usb_open(struct irda_usb_cb *self); static int irda_usb_close(struct irda_usb_cb *self); -static void speed_bulk_callback(struct urb *urb); -static void write_bulk_callback(struct urb *urb); -static void irda_usb_receive(struct urb *urb); +static void speed_bulk_callback(struct urb *urb, struct pt_regs *regs); +static void write_bulk_callback(struct urb *urb, struct pt_regs *regs); +static void irda_usb_receive(struct urb *urb, struct pt_regs *regs); static int irda_usb_net_init(struct net_device *dev); static int irda_usb_net_open(struct net_device *dev); static int irda_usb_net_close(struct net_device *dev); @@ -284,7 +284,7 @@ static void irda_usb_change_speed_xbofs(struct irda_usb_cb *self) * Speed URB callback * Now, we can only get called for the speed URB. */ -static void speed_bulk_callback(struct urb *urb) +static void speed_bulk_callback(struct urb *urb, struct pt_regs *regs) { struct irda_usb_cb *self = urb->context; @@ -486,7 +486,7 @@ drop: /* * Note : this function will be called only for tx_urb... */ -static void write_bulk_callback(struct urb *urb) +static void write_bulk_callback(struct urb *urb, struct pt_regs *regs) { unsigned long flags; struct sk_buff *skb = urb->context; @@ -753,7 +753,7 @@ static void irda_usb_submit(struct irda_usb_cb *self, struct sk_buff *skb, struc * Called by the USB subsystem when a frame has been received * */ -static void irda_usb_receive(struct urb *urb) +static void irda_usb_receive(struct urb *urb, struct pt_regs *regs) { struct sk_buff *skb = (struct sk_buff *) urb->context; struct irda_usb_cb *self; diff --git a/drivers/usb/class/audio.c b/drivers/usb/class/audio.c index 4517d61f925d..d3fe8391953f 100644 --- a/drivers/usb/class/audio.c +++ b/drivers/usb/class/audio.c @@ -890,7 +890,7 @@ static int usbin_retire_desc(struct usbin *u, struct urb *urb) return err ? -1 : 0; } -static void usbin_completed(struct urb *urb) +static void usbin_completed(struct urb *urb, struct pt_regs *regs) { struct usb_audiodev *as = (struct usb_audiodev *)urb->context; struct usbin *u = &as->usbin; @@ -956,7 +956,7 @@ static int usbin_sync_retire_desc(struct usbin *u, struct urb *urb) return 0; } -static void usbin_sync_completed(struct urb *urb) +static void usbin_sync_completed(struct urb *urb, struct pt_regs *regs) { struct usb_audiodev *as = (struct usb_audiodev *)urb->context; struct usbin *u = &as->usbin; @@ -1250,7 +1250,7 @@ static int usbout_retire_desc(struct usbout *u, struct urb *urb) return 0; } -static void usbout_completed(struct urb *urb) +static void usbout_completed(struct urb *urb, struct pt_regs *regs) { struct usb_audiodev *as = (struct usb_audiodev *)urb->context; struct usbout *u = &as->usbout; @@ -1323,7 +1323,7 @@ static int usbout_sync_retire_desc(struct usbout *u, struct urb *urb) return 0; } -static void usbout_sync_completed(struct urb *urb) +static void usbout_sync_completed(struct urb *urb, struct pt_regs *regs) { struct usb_audiodev *as = (struct usb_audiodev *)urb->context; struct usbout *u = &as->usbout; diff --git a/drivers/usb/class/bluetty.c b/drivers/usb/class/bluetty.c index 9f2c5bf28cd2..634efc509023 100644 --- a/drivers/usb/class/bluetty.c +++ b/drivers/usb/class/bluetty.c @@ -216,10 +216,10 @@ static void bluetooth_unthrottle (struct tty_struct *tty); static int bluetooth_ioctl (struct tty_struct *tty, struct file *file, unsigned int cmd, unsigned long arg); static void bluetooth_set_termios (struct tty_struct *tty, struct termios *old); -static void bluetooth_int_callback (struct urb *urb); -static void bluetooth_ctrl_callback (struct urb *urb); -static void bluetooth_read_bulk_callback (struct urb *urb); -static void bluetooth_write_bulk_callback (struct urb *urb); +static void bluetooth_int_callback (struct urb *urb, struct pt_regs *regs); +static void bluetooth_ctrl_callback (struct urb *urb, struct pt_regs *regs); +static void bluetooth_read_bulk_callback (struct urb *urb, struct pt_regs *regs); +static void bluetooth_write_bulk_callback (struct urb *urb, struct pt_regs *regs); static int usb_bluetooth_probe (struct usb_interface *intf, const struct usb_device_id *id); @@ -760,7 +760,7 @@ void btusb_disable_bulk_read(struct tty_struct *tty){ *****************************************************************************/ -static void bluetooth_int_callback (struct urb *urb) +static void bluetooth_int_callback (struct urb *urb, struct pt_regs *regs) { struct usb_bluetooth *bluetooth = get_usb_bluetooth ((struct usb_bluetooth *)urb->context, __FUNCTION__); unsigned char *data = urb->transfer_buffer; @@ -871,7 +871,7 @@ exit: } -static void bluetooth_ctrl_callback (struct urb *urb) +static void bluetooth_ctrl_callback (struct urb *urb, struct pt_regs *regs) { struct usb_bluetooth *bluetooth = get_usb_bluetooth ((struct usb_bluetooth *)urb->context, __FUNCTION__); @@ -889,7 +889,7 @@ static void bluetooth_ctrl_callback (struct urb *urb) } -static void bluetooth_read_bulk_callback (struct urb *urb) +static void bluetooth_read_bulk_callback (struct urb *urb, struct pt_regs *regs) { struct usb_bluetooth *bluetooth = get_usb_bluetooth ((struct usb_bluetooth *)urb->context, __FUNCTION__); unsigned char *data = urb->transfer_buffer; @@ -1006,7 +1006,7 @@ exit: } -static void bluetooth_write_bulk_callback (struct urb *urb) +static void bluetooth_write_bulk_callback (struct urb *urb, struct pt_regs *regs) { struct usb_bluetooth *bluetooth = get_usb_bluetooth ((struct usb_bluetooth *)urb->context, __FUNCTION__); diff --git a/drivers/usb/class/cdc-acm.c b/drivers/usb/class/cdc-acm.c index 16e189285585..86b6939681bd 100644 --- a/drivers/usb/class/cdc-acm.c +++ b/drivers/usb/class/cdc-acm.c @@ -181,7 +181,7 @@ static int acm_ctrl_msg(struct acm *acm, int request, int value, void *buf, int * Interrupt handler for various ACM control events */ -static void acm_ctrl_irq(struct urb *urb) +static void acm_ctrl_irq(struct urb *urb, struct pt_regs *regs) { struct acm *acm = urb->context; struct usb_ctrlrequest *dr = urb->transfer_buffer; @@ -245,7 +245,7 @@ exit: __FUNCTION__, status); } -static void acm_read_bulk(struct urb *urb) +static void acm_read_bulk(struct urb *urb, struct pt_regs *regs) { struct acm *acm = urb->context; struct tty_struct *tty = acm->tty; @@ -282,7 +282,7 @@ static void acm_read_bulk(struct urb *urb) dbg("failed resubmitting read urb"); } -static void acm_write_bulk(struct urb *urb) +static void acm_write_bulk(struct urb *urb, struct pt_regs *regs) { struct acm *acm = (struct acm *)urb->context; @@ -424,7 +424,7 @@ static void acm_tty_unthrottle(struct tty_struct *tty) if (!ACM_READY(acm)) return; acm->throttle = 0; if (acm->readurb->status != -EINPROGRESS) - acm_read_bulk(acm->readurb); + acm_read_bulk(acm->readurb, NULL); } static void acm_tty_break_ctl(struct tty_struct *tty, int state) diff --git a/drivers/usb/class/usb-midi.c b/drivers/usb/class/usb-midi.c index 586808aa0f4d..4a9e4716f2a4 100644 --- a/drivers/usb/class/usb-midi.c +++ b/drivers/usb/class/usb-midi.c @@ -308,7 +308,7 @@ static DECLARE_WAIT_QUEUE_HEAD(open_wait); /* ------------------------------------------------------------------------- */ -static void usb_write_callback(struct urb *urb) +static void usb_write_callback(struct urb *urb, struct pt_regs *regs) { struct midi_out_endpoint *ep = (struct midi_out_endpoint *)urb->context; @@ -331,7 +331,7 @@ static int usb_write( struct midi_out_endpoint *ep, unsigned char *buf, int len d = ep->usbdev; pipe = usb_sndbulkpipe(d, ep->endpoint); usb_fill_bulk_urb( ep->urb, d, pipe, (unsigned char*)buf, len, - (usb_complete_t)usb_write_callback, ep ); + usb_write_callback, ep ); status = usb_submit_urb(ep->urb, GFP_KERNEL); @@ -364,7 +364,7 @@ static int usb_write( struct midi_out_endpoint *ep, unsigned char *buf, int len * **/ -static void usb_bulk_read(struct urb *urb) +static void usb_bulk_read(struct urb *urb, struct pt_regs *regs) { struct midi_in_endpoint *ep = (struct midi_in_endpoint *)(urb->context); unsigned char *data = urb->transfer_buffer; @@ -1048,7 +1048,7 @@ static struct midi_in_endpoint *alloc_midi_in_endpoint( struct usb_device *d, in usb_fill_bulk_urb( ep->urb, d, usb_rcvbulkpipe(d, endPoint), (unsigned char *)ep->recvBuf, bufSize, - (usb_complete_t)usb_bulk_read, ep ); + usb_bulk_read, ep ); /* ep->bufRdPtr = 0; */ /* ep->bufWrPtr = 0; */ diff --git a/drivers/usb/class/usblp.c b/drivers/usb/class/usblp.c index 13ade554f075..4c478e4939bf 100644 --- a/drivers/usb/class/usblp.c +++ b/drivers/usb/class/usblp.c @@ -260,7 +260,7 @@ static int proto_bias = -1; * URB callback. */ -static void usblp_bulk_read(struct urb *urb) +static void usblp_bulk_read(struct urb *urb, struct pt_regs *regs) { struct usblp *usblp = urb->context; @@ -274,7 +274,7 @@ static void usblp_bulk_read(struct urb *urb) wake_up_interruptible(&usblp->wait); } -static void usblp_bulk_write(struct urb *urb) +static void usblp_bulk_write(struct urb *urb, struct pt_regs *regs) { struct usblp *usblp = urb->context; diff --git a/drivers/usb/core/devio.c b/drivers/usb/core/devio.c index c1adbac7f205..f5fe0dcd752f 100644 --- a/drivers/usb/core/devio.c +++ b/drivers/usb/core/devio.c @@ -251,7 +251,7 @@ extern __inline__ struct async *async_getpending(struct dev_state *ps, void *use return NULL; } -static void async_completed(struct urb *urb) +static void async_completed(struct urb *urb, struct pt_regs *regs) { struct async *as = (struct async *)urb->context; struct dev_state *ps = as->ps; diff --git a/drivers/usb/core/hcd.c b/drivers/usb/core/hcd.c index 3c9b59911ed8..fe29d72659fd 100644 --- a/drivers/usb/core/hcd.c +++ b/drivers/usb/core/hcd.c @@ -435,7 +435,7 @@ error: } /* any errors get returned through the urb completion */ - usb_hcd_giveback_urb (hcd, urb); + usb_hcd_giveback_urb (hcd, urb, NULL); return 0; } @@ -496,7 +496,7 @@ static void rh_report_status (unsigned long ptr) urb->actual_length = length; urb->status = 0; urb->hcpriv = 0; - urb->complete (urb); + urb->complete (urb, NULL); return; } } else @@ -511,7 +511,7 @@ static void rh_report_status (unsigned long ptr) urb->hcpriv = 0; spin_unlock_irqrestore (&urb->lock, flags); - usb_hcd_giveback_urb (hcd, urb); + usb_hcd_giveback_urb (hcd, urb, NULL); } } @@ -546,7 +546,7 @@ void usb_rh_status_dequeue (struct usb_hcd *hcd, struct urb *urb) spin_unlock_irqrestore (&hcd_data_lock, flags); /* we rely on RH callback code not unlinking its URB! */ - usb_hcd_giveback_urb (hcd, urb); + usb_hcd_giveback_urb (hcd, urb, NULL); } /*-------------------------------------------------------------------------*/ @@ -1062,11 +1062,11 @@ struct completion_splice { // modified urb context: struct completion done; /* original urb data */ - void (*complete)(struct urb *); + usb_complete_t complete; void *context; }; -static void unlink_complete (struct urb *urb) +static void unlink_complete (struct urb *urb, struct pt_regs *regs) { struct completion_splice *splice; @@ -1075,7 +1075,7 @@ static void unlink_complete (struct urb *urb) /* issue original completion call */ urb->complete = splice->complete; urb->context = splice->context; - urb->complete (urb); + urb->complete (urb, regs); /* then let the synchronous unlink call complete */ complete (&splice->done); @@ -1275,6 +1275,7 @@ EXPORT_SYMBOL (usb_hcd_operations); * usb_hcd_giveback_urb - return URB from HCD to device driver * @hcd: host controller returning the URB * @urb: urb being returned to the USB device driver. + * @regs: pt_regs, passed down to the URB completion handler * Context: in_interrupt() * * This hands the URB from HCD to its USB device driver, using its @@ -1283,7 +1284,7 @@ EXPORT_SYMBOL (usb_hcd_operations); * the device driver won't cause problems if it frees, modifies, * or resubmits this URB. */ -void usb_hcd_giveback_urb (struct usb_hcd *hcd, struct urb *urb) +void usb_hcd_giveback_urb (struct usb_hcd *hcd, struct urb *urb, struct pt_regs *regs) { urb_unlink (urb); @@ -1306,7 +1307,7 @@ void usb_hcd_giveback_urb (struct usb_hcd *hcd, struct urb *urb) } /* pass ownership to the completion handler */ - urb->complete (urb); + urb->complete (urb, regs); usb_put_urb (urb); } EXPORT_SYMBOL (usb_hcd_giveback_urb); @@ -1317,7 +1318,7 @@ EXPORT_SYMBOL (usb_hcd_giveback_urb); * usb_hcd_irq - hook IRQs to HCD framework (bus glue) * @irq: the IRQ being raised * @__hcd: pointer to the HCD whose IRQ is beinng signaled - * @r: saved hardware registers (not passed to HCD) + * @r: saved hardware registers * * When registering a USB bus through the HCD framework code, use this * to handle interrupts. The PCI glue layer does so automatically; only @@ -1331,7 +1332,7 @@ void usb_hcd_irq (int irq, void *__hcd, struct pt_regs * r) if (unlikely (hcd->state == USB_STATE_HALT)) /* irq sharing? */ return; - hcd->driver->irq (hcd); + hcd->driver->irq (hcd, r); if (hcd->state != start && hcd->state == USB_STATE_HALT) usb_hc_died (hcd); } diff --git a/drivers/usb/core/hcd.h b/drivers/usb/core/hcd.h index 75844a24e77e..0db63cf30e7a 100644 --- a/drivers/usb/core/hcd.h +++ b/drivers/usb/core/hcd.h @@ -169,11 +169,13 @@ struct usb_operations { /* each driver provides one of these, and hardware init support */ +struct pt_regs; + struct hc_driver { const char *description; /* "ehci-hcd" etc */ /* irq handler */ - void (*irq) (struct usb_hcd *hcd); + void (*irq) (struct usb_hcd *hcd, struct pt_regs *regs); int flags; #define HCD_MEMORY 0x0001 /* HC regs use memory (else I/O) */ @@ -216,7 +218,7 @@ struct hc_driver { char *buf, u16 wLength); }; -extern void usb_hcd_giveback_urb (struct usb_hcd *hcd, struct urb *urb); +extern void usb_hcd_giveback_urb (struct usb_hcd *hcd, struct urb *urb, struct pt_regs *regs); extern void usb_bus_init (struct usb_bus *bus); extern void usb_rh_status_dequeue (struct usb_hcd *hcd, struct urb *urb); diff --git a/drivers/usb/core/hub.c b/drivers/usb/core/hub.c index cf4e9236724c..3540d15bd771 100644 --- a/drivers/usb/core/hub.c +++ b/drivers/usb/core/hub.c @@ -115,7 +115,7 @@ static int usb_get_port_status(struct usb_device *dev, int port, void *data) } /* completion function, fires on port status changes and various faults */ -static void hub_irq(struct urb *urb) +static void hub_irq(struct urb *urb, struct pt_regs *regs) { struct usb_hub *hub = (struct usb_hub *)urb->context; unsigned long flags; diff --git a/drivers/usb/core/message.c b/drivers/usb/core/message.c index 18a0c6493483..7b7689e38944 100644 --- a/drivers/usb/core/message.c +++ b/drivers/usb/core/message.c @@ -16,7 +16,7 @@ struct usb_api_data { int done; }; -static void usb_api_blocking_completion(struct urb *urb) +static void usb_api_blocking_completion(struct urb *urb, struct pt_regs *regs) { struct usb_api_data *awd = (struct usb_api_data *)urb->context; @@ -210,7 +210,7 @@ static void sg_clean (struct usb_sg_request *io) io->dev = 0; } -static void sg_complete (struct urb *urb) +static void sg_complete (struct urb *urb, struct pt_regs *regs) { struct usb_sg_request *io = (struct usb_sg_request *) urb->context; unsigned long flags; diff --git a/drivers/usb/host/ehci-hcd.c b/drivers/usb/host/ehci-hcd.c index 6a70bc006b6e..a76b46186c50 100644 --- a/drivers/usb/host/ehci-hcd.c +++ b/drivers/usb/host/ehci-hcd.c @@ -252,7 +252,7 @@ static void ehci_ready (struct ehci_hcd *ehci) static void ehci_tasklet (unsigned long param); -static void ehci_irq (struct usb_hcd *hcd); +static void ehci_irq (struct usb_hcd *hcd, struct pt_regs *regs); static void ehci_watchdog (unsigned long param) { @@ -261,7 +261,7 @@ static void ehci_watchdog (unsigned long param) spin_lock_irqsave (&ehci->lock, flags); /* guard against lost IAA, which wedges everything */ - ehci_irq (&ehci->hcd); + ehci_irq (&ehci->hcd, NULL); /* stop async processing after it's idled a while */ if (ehci->async_idle) { start_unlink_async (ehci, ehci->async); @@ -635,7 +635,7 @@ static void ehci_tasklet (unsigned long param) /*-------------------------------------------------------------------------*/ -static void ehci_irq (struct usb_hcd *hcd) +static void ehci_irq (struct usb_hcd *hcd, struct pt_regs *regs) { struct ehci_hcd *ehci = hcd_to_ehci (hcd); u32 status = readl (&ehci->regs->status); diff --git a/drivers/usb/host/ehci-q.c b/drivers/usb/host/ehci-q.c index 563f001b327c..e07979d5899b 100644 --- a/drivers/usb/host/ehci-q.c +++ b/drivers/usb/host/ehci-q.c @@ -191,7 +191,7 @@ static void ehci_urb_done (struct ehci_hcd *ehci, struct urb *urb) /* complete() can reenter this HCD */ spin_unlock (&ehci->lock); - usb_hcd_giveback_urb (&ehci->hcd, urb); + usb_hcd_giveback_urb (&ehci->hcd, urb, NULL); spin_lock (&ehci->lock); } diff --git a/drivers/usb/host/ehci-sched.c b/drivers/usb/host/ehci-sched.c index 62abde4c9908..528574425424 100644 --- a/drivers/usb/host/ehci-sched.c +++ b/drivers/usb/host/ehci-sched.c @@ -922,7 +922,7 @@ itd_complete ( /* complete() can reenter this HCD */ spin_unlock (&ehci->lock); - usb_hcd_giveback_urb (&ehci->hcd, urb); + usb_hcd_giveback_urb (&ehci->hcd, urb, NULL); spin_lock (&ehci->lock); /* defer stopping schedule; completion can submit */ diff --git a/drivers/usb/host/hc_simple.c b/drivers/usb/host/hc_simple.c index ce06daad48b8..d8b8039b8b0d 100644 --- a/drivers/usb/host/hc_simple.c +++ b/drivers/usb/host/hc_simple.c @@ -106,7 +106,7 @@ static int hcs_return_urb (hci_t * hci, struct urb * urb, int resub_ok) urb->dev = urb->hcpriv = NULL; if (urb->complete) { - urb->complete (urb); /* call complete */ + urb->complete (urb, NULL); /* call complete */ } if (resubmit) { @@ -254,7 +254,7 @@ static int hci_unlink_urb (struct urb * urb) if (urb->complete && (urb->transfer_flags & URB_ASYNC_UNLINK)) { urb->status = -ENOENT; urb->actual_length = 0; - urb->complete (urb); + urb->complete (urb, NULL); urb->status = 0; } else { urb->status = -ENOENT; diff --git a/drivers/usb/host/hc_sl811_rh.c b/drivers/usb/host/hc_sl811_rh.c index da6d30214359..786bb4dec196 100644 --- a/drivers/usb/host/hc_sl811_rh.c +++ b/drivers/usb/host/hc_sl811_rh.c @@ -193,7 +193,7 @@ static void rh_int_timer_do (unsigned long ptr) usb_pipeout (urb->pipe)); if (urb->complete) { - urb->complete (urb); + urb->complete (urb, NULL); } } } @@ -506,7 +506,7 @@ static int rh_submit_urb (struct urb * urb) urb->hcpriv = NULL; urb->dev = NULL; if (urb->complete) { - urb->complete (urb); + urb->complete (urb, NULL); } return 0; @@ -537,7 +537,7 @@ static int rh_unlink_urb (struct urb * urb) if (urb->transfer_flags & URB_ASYNC_UNLINK) { urb->status = -ECONNRESET; if (urb->complete) { - urb->complete (urb); + urb->complete (urb, NULL); } } else urb->status = -ENOENT; diff --git a/drivers/usb/host/ohci-hcd.c b/drivers/usb/host/ohci-hcd.c index e55cdfc7b512..af15bea5fa45 100644 --- a/drivers/usb/host/ohci-hcd.c +++ b/drivers/usb/host/ohci-hcd.c @@ -295,7 +295,7 @@ static int ohci_urb_dequeue (struct usb_hcd *hcd, struct urb *urb) * with HC dead, we won't respect hc queue pointers * any more ... just clean up every urb's memory. */ - finish_urb (ohci, urb); + finish_urb (ohci, urb, NULL); } return 0; } @@ -531,7 +531,7 @@ static int hc_start (struct ohci_hcd *ohci) /* an interrupt happens */ -static void ohci_irq (struct usb_hcd *hcd) +static void ohci_irq (struct usb_hcd *hcd, struct pt_regs *ptregs) { struct ohci_hcd *ohci = hcd_to_ohci (hcd); struct ohci_regs *regs = ohci->regs; @@ -570,7 +570,7 @@ static void ohci_irq (struct usb_hcd *hcd) if (ints & OHCI_INTR_WDH) { writel (OHCI_INTR_WDH, ®s->intrdisable); - dl_done_list (ohci, dl_reverse_done_list (ohci)); + dl_done_list (ohci, dl_reverse_done_list (ohci), ptregs); writel (OHCI_INTR_WDH, ®s->intrenable); } @@ -581,7 +581,7 @@ static void ohci_irq (struct usb_hcd *hcd) */ spin_lock (&ohci->lock); if (ohci->ed_rm_list) - finish_unlinks (ohci, le16_to_cpu (ohci->hcca->frame_no)); + finish_unlinks (ohci, le16_to_cpu (ohci->hcca->frame_no), ptregs); if ((ints & OHCI_INTR_SF) != 0 && !ohci->ed_rm_list) writel (OHCI_INTR_SF, ®s->intrdisable); spin_unlock (&ohci->lock); diff --git a/drivers/usb/host/ohci-pci.c b/drivers/usb/host/ohci-pci.c index 9b7e598640b3..61f02e4f5d15 100644 --- a/drivers/usb/host/ohci-pci.c +++ b/drivers/usb/host/ohci-pci.c @@ -271,7 +271,7 @@ static int ohci_pci_resume (struct usb_hcd *hcd) enable_irq (hcd->pdev->irq); #endif if (ohci->hcca->done_head) - dl_done_list (ohci, dl_reverse_done_list (ohci)); + dl_done_list (ohci, dl_reverse_done_list (ohci), NULL); writel (OHCI_INTR_WDH, &ohci->regs->intrenable); /* assume there are TDs on the bulk and control lists */ diff --git a/drivers/usb/host/ohci-q.c b/drivers/usb/host/ohci-q.c index 0dc07327fa55..b5bcac0df2d1 100644 --- a/drivers/usb/host/ohci-q.c +++ b/drivers/usb/host/ohci-q.c @@ -32,7 +32,7 @@ static void urb_free_priv (struct ohci_hcd *hc, urb_priv_t *urb_priv) * It's completely gone from HC data structures. * PRECONDITION: no locks held (Giveback can call into HCD.) */ -static void finish_urb (struct ohci_hcd *ohci, struct urb *urb) +static void finish_urb (struct ohci_hcd *ohci, struct urb *urb, struct pt_regs *regs) { unsigned long flags; @@ -59,7 +59,7 @@ static void finish_urb (struct ohci_hcd *ohci, struct urb *urb) #ifdef OHCI_VERBOSE_DEBUG urb_print (urb, "RET", usb_pipeout (urb->pipe)); #endif - usb_hcd_giveback_urb (&ohci->hcd, urb); + usb_hcd_giveback_urb (&ohci->hcd, urb, regs); } @@ -848,7 +848,7 @@ static struct td *dl_reverse_done_list (struct ohci_hcd *ohci) #define tick_before(t1,t2) ((((s16)(t1))-((s16)(t2))) < 0) /* there are some urbs/eds to unlink; called in_irq(), with HCD locked */ -static void finish_unlinks (struct ohci_hcd *ohci, u16 tick) +static void finish_unlinks (struct ohci_hcd *ohci, u16 tick, struct pt_regs *regs) { struct ed *ed, **last; @@ -913,7 +913,7 @@ rescan_this: if (urb_priv->td_cnt == urb_priv->length) { modified = completed = 1; spin_unlock (&ohci->lock); - finish_urb (ohci, urb); + finish_urb (ohci, urb, regs); spin_lock (&ohci->lock); } } @@ -976,7 +976,7 @@ rescan_this: * path is finish_unlinks(), which unlinks URBs using ed_rm_list, instead of * scanning the (re-reversed) donelist as this does. */ -static void dl_done_list (struct ohci_hcd *ohci, struct td *td) +static void dl_done_list (struct ohci_hcd *ohci, struct td *td, struct pt_regs *regs) { unsigned long flags; @@ -994,7 +994,7 @@ static void dl_done_list (struct ohci_hcd *ohci, struct td *td) /* If all this urb's TDs are done, call complete() */ if (urb_priv->td_cnt == urb_priv->length) { spin_unlock_irqrestore (&ohci->lock, flags); - finish_urb (ohci, urb); + finish_urb (ohci, urb, regs); spin_lock_irqsave (&ohci->lock, flags); } diff --git a/drivers/usb/host/uhci-hcd.c b/drivers/usb/host/uhci-hcd.c index eff487471b20..a906fdcfeb0c 100644 --- a/drivers/usb/host/uhci-hcd.c +++ b/drivers/usb/host/uhci-hcd.c @@ -90,7 +90,6 @@ static kmem_cache_t *uhci_up_cachep; /* urb_priv */ static int uhci_get_current_frame_number(struct uhci_hcd *uhci); static int uhci_urb_dequeue(struct usb_hcd *hcd, struct urb *urb); static void uhci_unlink_generic(struct uhci_hcd *uhci, struct urb *urb); -static void uhci_finish_urb(struct usb_hcd *hcd, struct urb *urb); static int ports_active(struct uhci_hcd *uhci); static void suspend_hc(struct uhci_hcd *uhci); @@ -1798,7 +1797,7 @@ static void uhci_free_pending_qhs(struct uhci_hcd *uhci) spin_unlock_irqrestore(&uhci->qh_remove_list_lock, flags); } -static void uhci_finish_urb(struct usb_hcd *hcd, struct urb *urb) +static void uhci_finish_urb(struct usb_hcd *hcd, struct urb *urb, struct pt_regs *regs) { struct urb_priv *urbp = (struct urb_priv *)urb->hcpriv; struct uhci_hcd *uhci = hcd_to_uhci(hcd); @@ -1813,10 +1812,10 @@ static void uhci_finish_urb(struct usb_hcd *hcd, struct urb *urb) urb->status = status; spin_unlock_irqrestore(&urb->lock, flags); - usb_hcd_giveback_urb(hcd, urb); + usb_hcd_giveback_urb(hcd, urb, regs); } -static void uhci_finish_completion(struct usb_hcd *hcd) +static void uhci_finish_completion(struct usb_hcd *hcd, struct pt_regs *regs) { struct uhci_hcd *uhci = hcd_to_uhci(hcd); struct list_head *tmp, *head; @@ -1832,7 +1831,7 @@ static void uhci_finish_completion(struct usb_hcd *hcd) list_del_init(&urbp->complete_list); spin_unlock_irqrestore(&uhci->complete_list_lock, flags); - uhci_finish_urb(hcd, urb); + uhci_finish_urb(hcd, urb, regs); spin_lock_irqsave(&uhci->complete_list_lock, flags); head = &uhci->complete_list; @@ -1864,7 +1863,7 @@ static void uhci_remove_pending_qhs(struct uhci_hcd *uhci) spin_unlock_irqrestore(&uhci->urb_remove_list_lock, flags); } -static void uhci_irq(struct usb_hcd *hcd) +static void uhci_irq(struct usb_hcd *hcd, struct pt_regs *regs) { struct uhci_hcd *uhci = hcd_to_uhci(hcd); unsigned int io_addr = uhci->io_addr; @@ -1915,7 +1914,7 @@ static void uhci_irq(struct usb_hcd *hcd) } spin_unlock(&uhci->urb_list_lock); - uhci_finish_completion(hcd); + uhci_finish_completion(hcd, regs); } static void reset_hc(struct uhci_hcd *uhci) diff --git a/drivers/usb/image/hpusbscsi.c b/drivers/usb/image/hpusbscsi.c index 00bb26a79802..d82059f6f186 100644 --- a/drivers/usb/image/hpusbscsi.c +++ b/drivers/usb/image/hpusbscsi.c @@ -275,7 +275,7 @@ hpusbscsi_scsi_detect (struct SHT *sht) static int hpusbscsi_scsi_queuecommand (Scsi_Cmnd *srb, scsi_callback callback) { struct hpusbscsi* hpusbscsi = (struct hpusbscsi*)(srb->host->hostdata[0]); - usb_urb_callback usb_callback; + usb_complete_t usb_callback; int res; /* we don't answer for anything but our single device on any faked host controller */ @@ -382,7 +382,7 @@ static void handle_usb_error (struct hpusbscsi *hpusbscsi) hpusbscsi->state = HP_STATE_FREE; } -static void control_interrupt_callback (struct urb *u) +static void control_interrupt_callback (struct urb *u, struct pt_regs *regs) { struct hpusbscsi * hpusbscsi = (struct hpusbscsi *)u->context; u8 scsi_state; @@ -435,7 +435,7 @@ DEBUG("Getting status byte %d \n",hpusbscsi->scsi_state_byte); } } -static void simple_command_callback(struct urb *u) +static void simple_command_callback(struct urb *u, struct pt_regs *regs) { struct hpusbscsi * hpusbscsi = (struct hpusbscsi *)u->context; if (unlikely(u->status<0)) { @@ -454,11 +454,11 @@ static void simple_command_callback(struct urb *u) } } -static void scatter_gather_callback(struct urb *u) +static void scatter_gather_callback(struct urb *u, struct pt_regs *regs) { struct hpusbscsi * hpusbscsi = (struct hpusbscsi *)u->context; struct scatterlist *sg = hpusbscsi->srb->buffer; - usb_urb_callback callback; + usb_complete_t callback; int res; DEBUG("Going through scatter/gather\n"); @@ -494,7 +494,7 @@ static void scatter_gather_callback(struct urb *u) TRACE_STATE; } -static void simple_done (struct urb *u) +static void simple_done (struct urb *u, struct pt_regs *regs) { struct hpusbscsi * hpusbscsi = (struct hpusbscsi *)u->context; @@ -521,7 +521,7 @@ static void simple_done (struct urb *u) } } -static void simple_payload_callback (struct urb *u) +static void simple_payload_callback (struct urb *u, struct pt_regs *regs) { struct hpusbscsi * hpusbscsi = (struct hpusbscsi *)u->context; int res; @@ -553,7 +553,7 @@ static void simple_payload_callback (struct urb *u) } } -static void request_sense_callback (struct urb *u) +static void request_sense_callback (struct urb *u, struct pt_regs *regs) { struct hpusbscsi * hpusbscsi = (struct hpusbscsi *)u->context; diff --git a/drivers/usb/image/hpusbscsi.h b/drivers/usb/image/hpusbscsi.h index 878b31ae0c4c..fdb00c708f54 100644 --- a/drivers/usb/image/hpusbscsi.h +++ b/drivers/usb/image/hpusbscsi.h @@ -6,7 +6,6 @@ /* A big thanks to Jose for untiring testing */ -typedef void (*usb_urb_callback) (struct urb *); typedef void (*scsi_callback)(Scsi_Cmnd *); #define SENSE_COMMAND_SIZE 6 @@ -54,12 +53,12 @@ static const unsigned char scsi_command_direction[256/8] = { #define DIRECTION_IS_IN(x) ((scsi_command_direction[x>>3] >> (x & 7)) & 1) static int hpusbscsi_scsi_detect (struct SHT * sht); -static void simple_command_callback(struct urb *u); -static void scatter_gather_callback(struct urb *u); -static void simple_payload_callback (struct urb *u); -static void request_sense_callback (struct urb *u); -static void control_interrupt_callback (struct urb *u); -static void simple_done (struct urb *u); +static void simple_command_callback(struct urb *u, struct pt_regs *regs); +static void scatter_gather_callback(struct urb *u, struct pt_regs *regs); +static void simple_payload_callback (struct urb *u, struct pt_regs *regs); +static void request_sense_callback (struct urb *u, struct pt_regs *regs); +static void control_interrupt_callback (struct urb *u, struct pt_regs *regs); +static void simple_done (struct urb *u, struct pt_regs *regs); static int hpusbscsi_scsi_queuecommand (Scsi_Cmnd *srb, scsi_callback callback); static int hpusbscsi_scsi_host_reset (Scsi_Cmnd *srb); static int hpusbscsi_scsi_abort (Scsi_Cmnd *srb); diff --git a/drivers/usb/image/mdc800.c b/drivers/usb/image/mdc800.c index 571c72615cab..9a150b9075c1 100644 --- a/drivers/usb/image/mdc800.c +++ b/drivers/usb/image/mdc800.c @@ -248,7 +248,7 @@ static int mdc800_isReady (char *ch) /* * USB IRQ Handler for InputLine */ -static void mdc800_usb_irq (struct urb *urb) +static void mdc800_usb_irq (struct urb *urb, struct pt_regs *res) { int data_received=0, wake_up; unsigned char* b=urb->transfer_buffer; @@ -351,7 +351,7 @@ static int mdc800_usb_waitForIRQ (int mode, int msec) /* * The write_urb callback function */ -static void mdc800_usb_write_notify (struct urb *urb) +static void mdc800_usb_write_notify (struct urb *urb, struct pt_regs *res) { struct mdc800_data* mdc800=urb->context; @@ -371,7 +371,7 @@ static void mdc800_usb_write_notify (struct urb *urb) /* * The download_urb callback function */ -static void mdc800_usb_download_notify (struct urb *urb) +static void mdc800_usb_download_notify (struct urb *urb, struct pt_regs *res) { struct mdc800_data* mdc800=urb->context; diff --git a/drivers/usb/image/microtek.c b/drivers/usb/image/microtek.c index 9d9cfe6f7f60..efd412c85185 100644 --- a/drivers/usb/image/microtek.c +++ b/drivers/usb/image/microtek.c @@ -470,7 +470,7 @@ static int mts_scsi_queuecommand (Scsi_Cmnd *srb, mts_scsi_cmnd_callback callback ); static void mts_transfer_cleanup( struct urb *transfer ); -static void mts_do_sg(struct urb * transfer); +static void mts_do_sg(struct urb * transfer, struct pt_regs *regs); inline static @@ -478,7 +478,7 @@ void mts_int_submit_urb (struct urb* transfer, int pipe, void* data, unsigned length, - mts_usb_urb_callback callback ) + usb_complete_t callback ) /* Interrupt context! */ /* Holding transfer->context->lock! */ @@ -518,7 +518,7 @@ static void mts_transfer_cleanup( struct urb *transfer ) } -static void mts_transfer_done( struct urb *transfer ) +static void mts_transfer_done( struct urb *transfer, struct pt_regs *regs ) { MTS_INT_INIT(); @@ -544,7 +544,7 @@ static void mts_get_status( struct urb *transfer ) mts_transfer_done ); } -static void mts_data_done( struct urb* transfer ) +static void mts_data_done( struct urb* transfer, struct pt_regs *regs ) /* Interrupt context! */ { MTS_INT_INIT(); @@ -561,7 +561,7 @@ static void mts_data_done( struct urb* transfer ) } -static void mts_command_done( struct urb *transfer ) +static void mts_command_done( struct urb *transfer, struct pt_regs *regs ) /* Interrupt context! */ { MTS_INT_INIT(); @@ -602,7 +602,7 @@ static void mts_command_done( struct urb *transfer ) return; } -static void mts_do_sg (struct urb* transfer) +static void mts_do_sg (struct urb* transfer, struct pt_regs *regs) { struct scatterlist * sg; MTS_INT_INIT(); diff --git a/drivers/usb/image/microtek.h b/drivers/usb/image/microtek.h index 1dd70640c63b..88d0387a9af7 100644 --- a/drivers/usb/image/microtek.h +++ b/drivers/usb/image/microtek.h @@ -9,7 +9,6 @@ */ typedef void (*mts_scsi_cmnd_callback)(Scsi_Cmnd *); -typedef void (*mts_usb_urb_callback) (struct urb *); struct mts_transfer_context diff --git a/drivers/usb/image/scanner.c b/drivers/usb/image/scanner.c index 6ccbcdb1b242..6f49070f4fe0 100644 --- a/drivers/usb/image/scanner.c +++ b/drivers/usb/image/scanner.c @@ -354,7 +354,7 @@ #include "scanner.h" static void -irq_scanner(struct urb *urb) +irq_scanner(struct urb *urb, struct pt_regs *regs) { /* diff --git a/drivers/usb/input/aiptek.c b/drivers/usb/input/aiptek.c index fe5ccf692f2b..26946e593f64 100644 --- a/drivers/usb/input/aiptek.c +++ b/drivers/usb/input/aiptek.c @@ -104,7 +104,7 @@ struct aiptek_features { int y_max; int pressure_min; int pressure_max; - void (*irq) (struct urb * urb); + usb_complete_t irq; unsigned long evbit; unsigned long absbit; unsigned long relbit; @@ -125,7 +125,7 @@ struct aiptek { }; static void -aiptek_irq(struct urb *urb) +aiptek_irq(struct urb *urb, struct pt_regs *regs) { struct aiptek *aiptek = urb->context; unsigned char *data = aiptek->data; diff --git a/drivers/usb/input/hid-core.c b/drivers/usb/input/hid-core.c index 4ee10594abe7..88523db2a603 100644 --- a/drivers/usb/input/hid-core.c +++ b/drivers/usb/input/hid-core.c @@ -898,7 +898,7 @@ static int hid_input_report(int type, struct urb *urb) * Input interrupt completion handler. */ -static void hid_irq_in(struct urb *urb) +static void hid_irq_in(struct urb *urb, struct pt_regs *regs) { struct hid_device *hid = urb->context; int status; @@ -1090,7 +1090,7 @@ static int hid_submit_ctrl(struct hid_device *hid) * Output interrupt completion handler. */ -static void hid_irq_out(struct urb *urb) +static void hid_irq_out(struct urb *urb, struct pt_regs *regs) { struct hid_device *hid = urb->context; unsigned long flags; @@ -1119,7 +1119,7 @@ static void hid_irq_out(struct urb *urb) * Control pipe completion handler. */ -static void hid_ctrl(struct urb *urb) +static void hid_ctrl(struct urb *urb, struct pt_regs *regs) { struct hid_device *hid = urb->context; unsigned long flags; diff --git a/drivers/usb/input/pid.c b/drivers/usb/input/pid.c index 509ae388051b..e98387579369 100644 --- a/drivers/usb/input/pid.c +++ b/drivers/usb/input/pid.c @@ -46,7 +46,7 @@ (hid_pid)->effects[(i)].owner == current->pid)) /* Called when a transfer is completed */ -static void hid_pid_ctrl_out(struct urb *u) +static void hid_pid_ctrl_out(struct urb *u, struct pt_regs *regs) { #ifdef DEBUG printk("hid_pid_ctrl_out - Transfer Completed\n"); diff --git a/drivers/usb/input/powermate.c b/drivers/usb/input/powermate.c index 6e0c7557678d..52d7b5d1f6c8 100644 --- a/drivers/usb/input/powermate.c +++ b/drivers/usb/input/powermate.c @@ -72,10 +72,10 @@ struct powermate_device { static char pm_name_powermate[] = "Griffin PowerMate"; static char pm_name_soundknob[] = "Griffin SoundKnob"; -static void powermate_config_complete(struct urb *urb); /* forward declararation of callback */ +static void powermate_config_complete(struct urb *urb, struct pt_regs *regs); /* Callback for data arriving from the PowerMate over the USB interrupt pipe */ -static void powermate_irq(struct urb *urb) +static void powermate_irq(struct urb *urb, struct pt_regs *regs) { struct powermate_device *pm = urb->context; int retval; @@ -182,7 +182,7 @@ static void powermate_sync_state(struct powermate_device *pm) } /* Called when our asynchronous control message completes. We may need to issue another immediately */ -static void powermate_config_complete(struct urb *urb) +static void powermate_config_complete(struct urb *urb, struct pt_regs *regs) { struct powermate_device *pm = urb->context; diff --git a/drivers/usb/input/usbkbd.c b/drivers/usb/input/usbkbd.c index d58ed293a3cd..0d0288b1328c 100644 --- a/drivers/usb/input/usbkbd.c +++ b/drivers/usb/input/usbkbd.c @@ -82,7 +82,7 @@ struct usb_kbd { dma_addr_t leds_dma; }; -static void usb_kbd_irq(struct urb *urb) +static void usb_kbd_irq(struct urb *urb, struct pt_regs *regs) { struct usb_kbd *kbd = urb->context; int i; @@ -156,7 +156,7 @@ int usb_kbd_event(struct input_dev *dev, unsigned int type, unsigned int code, i return 0; } -static void usb_kbd_led(struct urb *urb) +static void usb_kbd_led(struct urb *urb, struct pt_regs *regs) { struct usb_kbd *kbd = urb->context; diff --git a/drivers/usb/input/usbmouse.c b/drivers/usb/input/usbmouse.c index 6323fac01c63..1c88156effdc 100644 --- a/drivers/usb/input/usbmouse.c +++ b/drivers/usb/input/usbmouse.c @@ -57,7 +57,7 @@ struct usb_mouse { dma_addr_t data_dma; }; -static void usb_mouse_irq(struct urb *urb) +static void usb_mouse_irq(struct urb *urb, struct pt_regs *regs) { struct usb_mouse *mouse = urb->context; signed char *data = mouse->data; diff --git a/drivers/usb/input/wacom.c b/drivers/usb/input/wacom.c index 5efae4d7b0ab..e9900ce3439c 100644 --- a/drivers/usb/input/wacom.c +++ b/drivers/usb/input/wacom.c @@ -86,7 +86,7 @@ struct wacom_features { int pressure_max; int distance_max; int type; - void (*irq)(struct urb *urb); + usb_complete_t irq; }; struct wacom { @@ -102,7 +102,7 @@ struct wacom { char phys[32]; }; -static void wacom_pl_irq(struct urb *urb) +static void wacom_pl_irq(struct urb *urb, struct pt_regs *regs) { struct wacom *wacom = urb->context; unsigned char *data = wacom->data; @@ -157,7 +157,7 @@ exit: __FUNCTION__, retval); } -static void wacom_penpartner_irq(struct urb *urb) +static void wacom_penpartner_irq(struct urb *urb, struct pt_regs *regs) { struct wacom *wacom = urb->context; unsigned char *data = wacom->data; @@ -194,7 +194,7 @@ exit: __FUNCTION__, retval); } -static void wacom_graphire_irq(struct urb *urb) +static void wacom_graphire_irq(struct urb *urb, struct pt_regs *regs) { struct wacom *wacom = urb->context; unsigned char *data = wacom->data; @@ -267,7 +267,7 @@ exit: __FUNCTION__, retval); } -static void wacom_intuos_irq(struct urb *urb) +static void wacom_intuos_irq(struct urb *urb, struct pt_regs *regs) { struct wacom *wacom = urb->context; unsigned char *data = wacom->data; diff --git a/drivers/usb/input/xpad.c b/drivers/usb/input/xpad.c index 1f41067695fe..596c19dec29b 100644 --- a/drivers/usb/input/xpad.c +++ b/drivers/usb/input/xpad.c @@ -163,7 +163,7 @@ static void xpad_process_packet(struct usb_xpad *xpad, u16 cmd, unsigned char *d input_sync(dev); } -static void xpad_irq_in(struct urb *urb) +static void xpad_irq_in(struct urb *urb, struct pt_regs *regs) { struct usb_xpad *xpad = urb->context; int retval; diff --git a/drivers/usb/media/dabusb.c b/drivers/usb/media/dabusb.c index ad0c2e2c86a5..254dff941bcc 100644 --- a/drivers/usb/media/dabusb.c +++ b/drivers/usb/media/dabusb.c @@ -171,7 +171,7 @@ static int dabusb_free_buffers (pdabusb_t s) return 0; } /*-------------------------------------------------------------------*/ -static void dabusb_iso_complete (struct urb *purb) +static void dabusb_iso_complete (struct urb *purb, struct pt_regs *regs) { pbuff_t b = purb->context; pdabusb_t s = b->s; diff --git a/drivers/usb/media/konicawc.c b/drivers/usb/media/konicawc.c index 190743d30b2f..22b738aee272 100644 --- a/drivers/usb/media/konicawc.c +++ b/drivers/usb/media/konicawc.c @@ -332,7 +332,7 @@ static void resubmit_urb(struct uvd *uvd, struct urb *urb) } -static void konicawc_isoc_irq(struct urb *urb) +static void konicawc_isoc_irq(struct urb *urb, struct pt_regs *regs) { struct uvd *uvd = urb->context; struct konicawc *cam = (struct konicawc *)uvd->user_data; diff --git a/drivers/usb/media/ov511.c b/drivers/usb/media/ov511.c index 6eb6b2f3f828..3511edd1d0e1 100644 --- a/drivers/usb/media/ov511.c +++ b/drivers/usb/media/ov511.c @@ -3843,7 +3843,7 @@ check_middle: } static void -ov51x_isoc_irq(struct urb *urb) +ov51x_isoc_irq(struct urb *urb, struct pt_regs *regs) { int i; struct usb_ov511 *ov; diff --git a/drivers/usb/media/pwc-if.c b/drivers/usb/media/pwc-if.c index 2ceefe446df3..08dff12a572a 100644 --- a/drivers/usb/media/pwc-if.c +++ b/drivers/usb/media/pwc-if.c @@ -598,7 +598,7 @@ static int pwc_set_palette(struct pwc_device *pdev, int pal) /* This gets called for the Isochronous pipe (video). This is done in * interrupt time, so it has to be fast, not crash, and not stall. Neat. */ -static void pwc_isoc_handler(struct urb *urb) +static void pwc_isoc_handler(struct urb *urb, struct pt_regs *regs) { struct pwc_device *pdev; int i, fst, flen; diff --git a/drivers/usb/media/se401.c b/drivers/usb/media/se401.c index fd090f2fd147..e527235276ea 100644 --- a/drivers/usb/media/se401.c +++ b/drivers/usb/media/se401.c @@ -425,7 +425,7 @@ static void se401_auto_resetlevel(struct usb_se401 *se401) } /* irq handler for snapshot button */ -static void se401_button_irq(struct urb *urb) +static void se401_button_irq(struct urb *urb, struct pt_regs *regs) { struct usb_se401 *se401 = urb->context; int status; @@ -461,7 +461,7 @@ exit: __FUNCTION__, status); } -static void se401_video_irq(struct urb *urb) +static void se401_video_irq(struct urb *urb, struct pt_regs *regs) { struct usb_se401 *se401 = urb->context; int length = urb->actual_length; diff --git a/drivers/usb/media/stv680.c b/drivers/usb/media/stv680.c index 4e341c3b94cb..1dc71245999e 100644 --- a/drivers/usb/media/stv680.c +++ b/drivers/usb/media/stv680.c @@ -673,7 +673,7 @@ static int stv680_set_pict (struct usb_stv *stv680, struct video_picture *p) return 0; } -static void stv680_video_irq (struct urb *urb) +static void stv680_video_irq (struct urb *urb, struct pt_regs *regs) { struct usb_stv *stv680 = urb->context; int length = urb->actual_length; diff --git a/drivers/usb/media/usbvideo.c b/drivers/usb/media/usbvideo.c index 9aeffc958b04..1a8c63da8460 100644 --- a/drivers/usb/media/usbvideo.c +++ b/drivers/usb/media/usbvideo.c @@ -1820,7 +1820,7 @@ static int usbvideo_CompressIsochronous(struct uvd *uvd, struct urb *urb) return totlen; } -static void usbvideo_IsocIrq(struct urb *urb) +static void usbvideo_IsocIrq(struct urb *urb, struct pt_regs *regs) { int i, ret, len; struct uvd *uvd = urb->context; diff --git a/drivers/usb/misc/auerswald.c b/drivers/usb/misc/auerswald.c index c245ee3d455c..476ae293a56d 100644 --- a/drivers/usb/misc/auerswald.c +++ b/drivers/usb/misc/auerswald.c @@ -287,7 +287,7 @@ typedef struct /*-------------------------------------------------------------------*/ /* Forwards */ -static void auerswald_ctrlread_complete (struct urb * urb); +static void auerswald_ctrlread_complete (struct urb * urb, struct pt_regs *regs); static void auerswald_removeservice (pauerswald_t cp, pauerscon_t scp); extern struct usb_driver auerswald_driver; @@ -297,7 +297,7 @@ extern struct usb_driver auerswald_driver; /* -------------------------- */ /* completion function for chained urbs */ -static void auerchain_complete (struct urb * urb) +static void auerchain_complete (struct urb * urb, struct pt_regs *regs) { unsigned long flags; int result; @@ -316,7 +316,7 @@ static void auerchain_complete (struct urb * urb) NOTE: this function may lead to more urbs submitted into the chain. (no chain lock at calling complete()!) acp->active != NULL is protecting us against recursion.*/ - urb->complete (urb); + urb->complete (urb, regs); /* detach element from chain data structure */ spin_lock_irqsave (&acp->lock, flags); @@ -351,7 +351,7 @@ static void auerchain_complete (struct urb * urb) urb->status = result; dbg("auerchain_complete: usb_submit_urb with error code %d", result); /* and do error handling via *this* completion function (recursive) */ - auerchain_complete( urb); + auerchain_complete( urb, NULL); } } else { /* simple return without submitting a new urb. @@ -428,7 +428,7 @@ static int auerchain_submit_urb_list (pauerchain_t acp, struct urb * urb, int ea urb->status = result; dbg("auerchain_submit_urb: usb_submit_urb with error code %d", result); /* and do error handling via completion function */ - auerchain_complete( urb); + auerchain_complete( urb, NULL); } } @@ -468,7 +468,7 @@ static int auerchain_unlink_urb (pauerchain_t acp, struct urb * urb) spin_unlock_irqrestore (&acp->lock, flags); dbg ("unlink waiting urb"); urb->status = -ENOENT; - urb->complete (urb); + urb->complete (urb, NULL); return 0; } } @@ -525,7 +525,7 @@ static void auerchain_unlink_all (pauerchain_t acp) spin_unlock_irqrestore (&acp->lock, flags); dbg ("unlink waiting urb"); urbp->status = -ENOENT; - urbp->complete (urbp); + urbp->complete (urbp, NULL); spin_lock_irqsave (&acp->lock, flags); } spin_unlock_irqrestore (&acp->lock, flags); @@ -612,7 +612,7 @@ ac_fail:/* free the elements */ /* completion handler for synchronous chained URBs */ -static void auerchain_blocking_completion (struct urb *urb) +static void auerchain_blocking_completion (struct urb *urb, struct pt_regs *regs) { pauerchain_chs_t pchs = (pauerchain_chs_t)urb->context; pchs->done = 1; @@ -718,7 +718,7 @@ static int auerchain_control_msg (pauerchain_t acp, struct usb_device *dev, unsi dr->wLength = cpu_to_le16 (size); usb_fill_control_urb (urb, dev, pipe, (unsigned char*)dr, data, size, /* build urb */ - (usb_complete_t)auerchain_blocking_completion,0); + auerchain_blocking_completion,0); ret = auerchain_start_wait_urb (acp, urb, timeout, &length); usb_free_urb (urb); @@ -881,7 +881,7 @@ static int auerswald_status_retry (int status) } /* Completion of asynchronous write block */ -static void auerchar_ctrlwrite_complete (struct urb * urb) +static void auerchar_ctrlwrite_complete (struct urb * urb, struct pt_regs *regs) { pauerbuf_t bp = (pauerbuf_t) urb->context; pauerswald_t cp = ((pauerswald_t)((char *)(bp->list)-(unsigned long)(&((pauerswald_t)0)->bufctl))); @@ -894,7 +894,7 @@ static void auerchar_ctrlwrite_complete (struct urb * urb) } /* Completion handler for dummy retry packet */ -static void auerswald_ctrlread_wretcomplete (struct urb * urb) +static void auerswald_ctrlread_wretcomplete (struct urb * urb, struct pt_regs *regs) { pauerbuf_t bp = (pauerbuf_t) urb->context; pauerswald_t cp; @@ -921,19 +921,19 @@ static void auerswald_ctrlread_wretcomplete (struct urb * urb) /* bp->dr->index = channel id; remains */ usb_fill_control_urb (bp->urbp, cp->usbdev, usb_rcvctrlpipe (cp->usbdev, 0), (unsigned char*)bp->dr, bp->bufp, le16_to_cpu (bp->dr->wLength), - (usb_complete_t)auerswald_ctrlread_complete,bp); + auerswald_ctrlread_complete,bp); /* submit the control msg as next paket */ ret = auerchain_submit_urb_list (&cp->controlchain, bp->urbp, 1); if (ret) { dbg ("auerswald_ctrlread_complete: nonzero result of auerchain_submit_urb_list %d", ret); bp->urbp->status = ret; - auerswald_ctrlread_complete (bp->urbp); + auerswald_ctrlread_complete (bp->urbp, NULL); } } /* completion handler for receiving of control messages */ -static void auerswald_ctrlread_complete (struct urb * urb) +static void auerswald_ctrlread_complete (struct urb * urb, struct pt_regs *regs) { unsigned int serviceid; pauerswald_t cp; @@ -969,14 +969,14 @@ static void auerswald_ctrlread_complete (struct urb * urb) bp->dr->wLength = cpu_to_le16 (32); /* >= 8 bytes */ usb_fill_control_urb (bp->urbp, cp->usbdev, usb_sndctrlpipe (cp->usbdev, 0), (unsigned char*)bp->dr, bp->bufp, 32, - (usb_complete_t)auerswald_ctrlread_wretcomplete,bp); + auerswald_ctrlread_wretcomplete,bp); /* submit the control msg as next paket */ ret = auerchain_submit_urb_list (&cp->controlchain, bp->urbp, 1); if (ret) { dbg ("auerswald_ctrlread_complete: nonzero result of auerchain_submit_urb_list %d", ret); bp->urbp->status = ret; - auerswald_ctrlread_wretcomplete (bp->urbp); + auerswald_ctrlread_wretcomplete (bp->urbp, regs); } return; } @@ -1005,7 +1005,7 @@ static void auerswald_ctrlread_complete (struct urb * urb) messages from the USB device. */ /* int completion handler. */ -static void auerswald_int_complete (struct urb * urb) +static void auerswald_int_complete (struct urb * urb, struct pt_regs *regs) { unsigned long flags; unsigned int channelid; @@ -1097,14 +1097,14 @@ static void auerswald_int_complete (struct urb * urb) bp->dr->wLength = cpu_to_le16 (bytecount); usb_fill_control_urb (bp->urbp, cp->usbdev, usb_rcvctrlpipe (cp->usbdev, 0), (unsigned char*)bp->dr, bp->bufp, bytecount, - (usb_complete_t)auerswald_ctrlread_complete,bp); + auerswald_ctrlread_complete,bp); /* submit the control msg */ ret = auerchain_submit_urb (&cp->controlchain, bp->urbp); if (ret) { dbg ("auerswald_int_complete: nonzero result of auerchain_submit_urb %d", ret); bp->urbp->status = ret; - auerswald_ctrlread_complete( bp->urbp); + auerswald_ctrlread_complete( bp->urbp, NULL); /* here applies the same problem as above: device locking! */ } exit: diff --git a/drivers/usb/misc/brlvger.c b/drivers/usb/misc/brlvger.c index db226465bf9c..279d6bb94d99 100644 --- a/drivers/usb/misc/brlvger.c +++ b/drivers/usb/misc/brlvger.c @@ -118,7 +118,7 @@ static int brlvger_ioctl(struct inode *inode, struct file *file, unsigned cmd, unsigned long arg); static unsigned brlvger_poll(struct file *file, poll_table *wait); static loff_t brlvger_llseek(struct file * file, loff_t offset, int orig); -static void intr_callback(struct urb *urb); +static void intr_callback(struct urb *urb, struct pt_regs *regs); struct brlvger_priv; static int brlvger_get_hw_version(struct brlvger_priv *priv, unsigned char *verbuf); @@ -842,7 +842,7 @@ brlvger_poll(struct file *file, poll_table *wait) } static void -intr_callback(struct urb *urb) +intr_callback(struct urb *urb, struct pt_regs *regs) { struct brlvger_priv *priv = urb->context; int intr_idx, read_idx; diff --git a/drivers/usb/misc/speedtouch.c b/drivers/usb/misc/speedtouch.c index 50118caa0e44..d9acad35b1f0 100644 --- a/drivers/usb/misc/speedtouch.c +++ b/drivers/usb/misc/speedtouch.c @@ -570,7 +570,7 @@ struct udsl_cb { struct atm_vcc *vcc; }; -static void udsl_usb_send_data_complete (struct urb *urb) +static void udsl_usb_send_data_complete (struct urb *urb, struct pt_regs *regs) { struct udsl_usb_send_data_context *ctx = (struct udsl_usb_send_data_context *) urb->context; struct udsl_instance_data *instance = ctx->instance; @@ -596,7 +596,7 @@ static void udsl_usb_send_data_complete (struct urb *urb) instance->usb_dev, usb_sndbulkpipe (instance->usb_dev, UDSL_ENDPOINT_DATA_OUT), (unsigned char *) ctx->skb->data, - ctx->skb->len, (usb_complete_t) udsl_usb_send_data_complete, ctx); + ctx->skb->len, udsl_usb_send_data_complete, ctx); err = usb_submit_urb (urb, GFP_KERNEL); @@ -678,7 +678,7 @@ int udsl_usb_send_data (struct udsl_instance_data *instance, struct atm_vcc *vcc usb_sndbulkpipe (instance->usb_dev, UDSL_ENDPOINT_DATA_OUT), (unsigned char *) skb->data, skb->len, - (usb_complete_t) udsl_usb_send_data_complete, &(instance->send_ctx[i]) + udsl_usb_send_data_complete, &(instance->send_ctx[i]) ); err = usb_submit_urb (urb, GFP_KERNEL); @@ -691,7 +691,7 @@ int udsl_usb_send_data (struct udsl_instance_data *instance, struct atm_vcc *vcc } /********* receive *******/ -void udsl_usb_data_receive (struct urb *urb) +void udsl_usb_data_receive (struct urb *urb, struct pt_regs *regs) { struct udsl_data_ctx *ctx; struct udsl_instance_data *instance; @@ -746,7 +746,7 @@ void udsl_usb_data_receive (struct urb *urb) instance->usb_dev, usb_rcvbulkpipe (instance->usb_dev, UDSL_ENDPOINT_DATA_IN), (unsigned char *) ctx->skb->data, - UDSL_RECEIVE_BUFFER_SIZE, (usb_complete_t) udsl_usb_data_receive, ctx); + UDSL_RECEIVE_BUFFER_SIZE, udsl_usb_data_receive, ctx); usb_submit_urb (urb, GFP_KERNEL); return; }; @@ -795,7 +795,7 @@ int udsl_usb_data_init (struct udsl_instance_data *instance) usb_rcvbulkpipe (instance->usb_dev, UDSL_ENDPOINT_DATA_IN), (unsigned char *) ctx->skb->data, UDSL_RECEIVE_BUFFER_SIZE, - (usb_complete_t) udsl_usb_data_receive, ctx); + udsl_usb_data_receive, ctx); ctx->instance = instance; diff --git a/drivers/usb/misc/tiglusb.c b/drivers/usb/misc/tiglusb.c index 3c590e9f3457..0334cc4e5a18 100644 --- a/drivers/usb/misc/tiglusb.c +++ b/drivers/usb/misc/tiglusb.c @@ -15,16 +15,11 @@ * for more info. * * History : - * 16/07/2002 : v1.04 -- Julien BLACHE <jb@jblache.org> - * + removed useless usblp_cleanup() - * + removed {un,}lock_kernel() as suggested on lkml - * + inlined clear_pipes() (used once) - * + inlined clear_device() (small, used twice) - * + removed tiglusb_find_struct() (used once, simple code) - * + replaced down() with down_interruptible() wherever possible - * + fixed double unregistering wrt devfs, causing devfs - * to force an oops when the device is deconnected - * + removed unused fields from struct tiglusb_t + * 1.0x, Romain & Julien: initial submit. + * 1.03, Greg Kroah: modifications. + * 1.04, Julien: clean-up & fixes; Romain: 2.4 backport. + * 1.05, Randy Dunlap: bug fix with the timeout parameter (divide-by-zero). + * 1.06, Romain: synched with 2.5, version/firmware changed (confusing). */ #include <linux/module.h> @@ -44,7 +39,7 @@ /* * Version Information */ -#define DRIVER_VERSION "1.04" +#define DRIVER_VERSION "1.06" #define DRIVER_AUTHOR "Romain Lievin <roms@lpg.ticalc.org> & Julien Blache <jb@jblache.org>" #define DRIVER_DESC "TI-GRAPH LINK USB (aka SilverLink) driver" #define DRIVER_LICENSE "GPL" @@ -384,7 +379,7 @@ tiglusb_probe (struct usb_interface *intf, &tiglusb_fops, NULL); /* Display firmware version */ - info ("link cable version %i.%02x", + info ("firmware revision %i.%02x", dev->descriptor.bcdDevice >> 8, dev->descriptor.bcdDevice & 0xff); @@ -449,7 +444,7 @@ tiglusb_setup (char *str) if (ints[0] > 0) { timeout = ints[1]; } - if (!timeout) + if (timeout <= 0) timeout = TIMAXTIME; return 1; @@ -490,9 +485,9 @@ tiglusb_init (void) return -1; } - info (DRIVER_DESC ", " DRIVER_VERSION); + info (DRIVER_DESC ", version " DRIVER_VERSION); - if (!timeout) + if (timeout <= 0) timeout = TIMAXTIME; return 0; diff --git a/drivers/usb/misc/usbtest.c b/drivers/usb/misc/usbtest.c index c3362d8a9a6f..7d6ee5ba3e86 100644 --- a/drivers/usb/misc/usbtest.c +++ b/drivers/usb/misc/usbtest.c @@ -85,7 +85,7 @@ static struct usb_device *testdev_to_usbdev (struct usbtest_dev *test) * them with non-zero test data (or test for it) when appropriate. */ -static void simple_callback (struct urb *urb) +static void simple_callback (struct urb *urb, struct pt_regs *regs) { complete ((struct completion *) urb->context); } @@ -550,7 +550,7 @@ static int ch9_postconfig (struct usbtest_dev *dev) /*-------------------------------------------------------------------------*/ -static void unlink1_callback (struct urb *urb) +static void unlink1_callback (struct urb *urb, struct pt_regs *regs) { int status = urb->status; diff --git a/drivers/usb/net/catc.c b/drivers/usb/net/catc.c index 57c249c3eb5e..a8a33237384e 100644 --- a/drivers/usb/net/catc.c +++ b/drivers/usb/net/catc.c @@ -221,7 +221,7 @@ struct catc { * Receive routines. */ -static void catc_rx_done(struct urb *urb) +static void catc_rx_done(struct urb *urb, struct pt_regs *regs) { struct catc *catc = urb->context; u8 *pkt_start = urb->transfer_buffer; @@ -287,7 +287,7 @@ static void catc_rx_done(struct urb *urb) } } -static void catc_irq_done(struct urb *urb) +static void catc_irq_done(struct urb *urb, struct pt_regs *regs) { struct catc *catc = urb->context; u8 *data = urb->transfer_buffer; @@ -374,7 +374,7 @@ static void catc_tx_run(struct catc *catc) catc->netdev->trans_start = jiffies; } -static void catc_tx_done(struct urb *urb) +static void catc_tx_done(struct urb *urb, struct pt_regs *regs) { struct catc *catc = urb->context; unsigned long flags; @@ -486,7 +486,7 @@ static void catc_ctrl_run(struct catc *catc) err("submit(ctrl_urb) status %d", status); } -static void catc_ctrl_done(struct urb *urb) +static void catc_ctrl_done(struct urb *urb, struct pt_regs *regs) { struct catc *catc = urb->context; struct ctrl_queue *q; diff --git a/drivers/usb/net/cdc-ether.c b/drivers/usb/net/cdc-ether.c index 2b9626c44276..5c8c1998eee9 100644 --- a/drivers/usb/net/cdc-ether.c +++ b/drivers/usb/net/cdc-ether.c @@ -52,7 +52,7 @@ static int multicast_filter_limit = 32767; // Callback routines from USB device ///////////////////////////////////////// ////////////////////////////////////////////////////////////////////////////// -static void read_bulk_callback( struct urb *urb ) +static void read_bulk_callback( struct urb *urb, struct pt_regs *regs ) { ether_dev_t *ether_dev = urb->context; struct net_device *net; @@ -140,7 +140,7 @@ goon: ether_dev->flags &= ~CDC_ETHER_RX_BUSY; } -static void write_bulk_callback( struct urb *urb ) +static void write_bulk_callback( struct urb *urb, struct pt_regs *regs ) { ether_dev_t *ether_dev = urb->context; diff --git a/drivers/usb/net/kaweth.c b/drivers/usb/net/kaweth.c index 32e669e81758..831f9ef4eea3 100644 --- a/drivers/usb/net/kaweth.c +++ b/drivers/usb/net/kaweth.c @@ -462,13 +462,13 @@ static int kaweth_reset(struct kaweth_device *kaweth) return result; } -static void kaweth_usb_receive(struct urb *); +static void kaweth_usb_receive(struct urb *, struct pt_regs *regs); static int kaweth_resubmit_rx_urb(struct kaweth_device *, int); /**************************************************************** int_callback *****************************************************************/ -static void int_callback(struct urb *u) +static void int_callback(struct urb *u, struct pt_regs *regs) { struct kaweth_device *kaweth = u->context; int act_state, status; @@ -538,7 +538,7 @@ static void kaweth_async_set_rx_mode(struct kaweth_device *kaweth); /**************************************************************** * kaweth_usb_receive ****************************************************************/ -static void kaweth_usb_receive(struct urb *urb) +static void kaweth_usb_receive(struct urb *urb, struct pt_regs *regs) { struct kaweth_device *kaweth = urb->context; struct net_device *net = kaweth->net; @@ -699,7 +699,7 @@ static int kaweth_ioctl(struct net_device *net, struct ifreq *rq, int cmd) /**************************************************************** * kaweth_usb_transmit_complete ****************************************************************/ -static void kaweth_usb_transmit_complete(struct urb *urb) +static void kaweth_usb_transmit_complete(struct urb *urb, struct pt_regs *regs) { struct kaweth_device *kaweth = urb->context; struct sk_buff *skb = kaweth->tx_skb; @@ -1135,7 +1135,7 @@ struct usb_api_data { /*-------------------------------------------------------------------* * completion handler for compatibility wrappers (sync control/bulk) * *-------------------------------------------------------------------*/ -static void usb_api_blocking_completion(struct urb *urb) +static void usb_api_blocking_completion(struct urb *urb, struct pt_regs *regs) { struct usb_api_data *awd = (struct usb_api_data *)urb->context; @@ -1208,7 +1208,7 @@ int kaweth_internal_control_msg(struct usb_device *usb_dev, unsigned int pipe, return -ENOMEM; usb_fill_control_urb(urb, usb_dev, pipe, (unsigned char*)cmd, data, - len, (usb_complete_t)usb_api_blocking_completion,0); + len, usb_api_blocking_completion,0); retv = usb_start_wait_urb(urb, timeout, &length); if (retv < 0) { diff --git a/drivers/usb/net/pegasus.c b/drivers/usb/net/pegasus.c index 94ec69af89f1..8760a73e4bb2 100644 --- a/drivers/usb/net/pegasus.c +++ b/drivers/usb/net/pegasus.c @@ -87,7 +87,7 @@ MODULE_DEVICE_TABLE(usb, pegasus_ids); static int update_eth_regs_async(pegasus_t *); /* Aargh!!! I _really_ hate such tweaks */ -static void ctrl_callback(struct urb *urb) +static void ctrl_callback(struct urb *urb, struct pt_regs *regs) { pegasus_t *pegasus = urb->context; @@ -524,7 +524,7 @@ static inline struct sk_buff *pull_skb(pegasus_t * pegasus) return NULL; } -static void read_bulk_callback(struct urb *urb) +static void read_bulk_callback(struct urb *urb, struct pt_regs *regs) { pegasus_t *pegasus = urb->context; struct net_device *net; @@ -644,7 +644,7 @@ try_again: } } -static void write_bulk_callback(struct urb *urb) +static void write_bulk_callback(struct urb *urb, struct pt_regs *regs) { pegasus_t *pegasus = urb->context; @@ -661,7 +661,7 @@ static void write_bulk_callback(struct urb *urb) netif_wake_queue(pegasus->net); } -static void intr_callback(struct urb *urb) +static void intr_callback(struct urb *urb, struct pt_regs *regs) { pegasus_t *pegasus = urb->context; struct net_device *net; @@ -1092,7 +1092,7 @@ static void pegasus_set_multicast(struct net_device *net) } pegasus->flags |= ETH_REGS_CHANGE; - ctrl_callback(pegasus->ctrl_urb); + ctrl_callback(pegasus->ctrl_urb, NULL); netif_wake_queue(net); } diff --git a/drivers/usb/net/rtl8150.c b/drivers/usb/net/rtl8150.c index bb38b4caa353..fbbb6d5d2025 100644 --- a/drivers/usb/net/rtl8150.c +++ b/drivers/usb/net/rtl8150.c @@ -143,7 +143,7 @@ static int set_registers(rtl8150_t * dev, u16 indx, u16 size, void *data) indx, 0, data, size, HZ / 2); } -static void ctrl_callback(struct urb *urb) +static void ctrl_callback(struct urb *urb, struct pt_regs *regs) { rtl8150_t *dev; @@ -336,7 +336,7 @@ static void unlink_all_urbs(rtl8150_t * dev) usb_unlink_urb(dev->ctrl_urb); } -static void read_bulk_callback(struct urb *urb) +static void read_bulk_callback(struct urb *urb, struct pt_regs *regs) { rtl8150_t *dev; unsigned pkt_len, res; @@ -435,7 +435,7 @@ tlsched: tasklet_schedule(&dev->tl); } -static void write_bulk_callback(struct urb *urb) +static void write_bulk_callback(struct urb *urb, struct pt_regs *regs) { rtl8150_t *dev; @@ -451,7 +451,7 @@ static void write_bulk_callback(struct urb *urb) netif_wake_queue(dev->netdev); } -void intr_callback(struct urb *urb) +void intr_callback(struct urb *urb, struct pt_regs *regs) { rtl8150_t *dev; int status; diff --git a/drivers/usb/net/usbnet.c b/drivers/usb/net/usbnet.c index 69a67505b02c..11546d617984 100644 --- a/drivers/usb/net/usbnet.c +++ b/drivers/usb/net/usbnet.c @@ -445,7 +445,7 @@ static inline int gl_control_write (struct usbnet *dev, u8 request, u16 value) return retval; } -static void gl_interrupt_complete (struct urb *urb) +static void gl_interrupt_complete (struct urb *urb, struct pt_regs *regs) { int status = urb->status; @@ -1437,7 +1437,7 @@ static void defer_kevent (struct usbnet *dev, int work) /*-------------------------------------------------------------------------*/ -static void rx_complete (struct urb *urb); +static void rx_complete (struct urb *urb, struct pt_regs *regs); static void rx_submit (struct usbnet *dev, struct urb *urb, int flags) { @@ -1549,7 +1549,7 @@ error: /*-------------------------------------------------------------------------*/ -static void rx_complete (struct urb *urb) +static void rx_complete (struct urb *urb, struct pt_regs *regs) { struct sk_buff *skb = (struct sk_buff *) urb->context; struct skb_data *entry = (struct skb_data *) skb->cb; @@ -1874,7 +1874,7 @@ kevent (void *data) /*-------------------------------------------------------------------------*/ -static void tx_complete (struct urb *urb) +static void tx_complete (struct urb *urb, struct pt_regs *regs) { struct sk_buff *skb = (struct sk_buff *) urb->context; struct skb_data *entry = (struct skb_data *) skb->cb; diff --git a/drivers/usb/serial/belkin_sa.c b/drivers/usb/serial/belkin_sa.c index c225ccee50d0..9786ad32d092 100644 --- a/drivers/usb/serial/belkin_sa.c +++ b/drivers/usb/serial/belkin_sa.c @@ -97,7 +97,7 @@ static int belkin_sa_startup (struct usb_serial *serial); static void belkin_sa_shutdown (struct usb_serial *serial); static int belkin_sa_open (struct usb_serial_port *port, struct file *filp); static void belkin_sa_close (struct usb_serial_port *port, struct file *filp); -static void belkin_sa_read_int_callback (struct urb *urb); +static void belkin_sa_read_int_callback (struct urb *urb, struct pt_regs *regs); static void belkin_sa_set_termios (struct usb_serial_port *port, struct termios * old); static int belkin_sa_ioctl (struct usb_serial_port *port, struct file * file, unsigned int cmd, unsigned long arg); static void belkin_sa_break_ctl (struct usb_serial_port *port, int break_state ); @@ -252,7 +252,7 @@ static void belkin_sa_close (struct usb_serial_port *port, struct file *filp) } /* belkin_sa_close */ -static void belkin_sa_read_int_callback (struct urb *urb) +static void belkin_sa_read_int_callback (struct urb *urb, struct pt_regs *regs) { struct usb_serial_port *port = (struct usb_serial_port *)urb->context; struct belkin_sa_private *priv; diff --git a/drivers/usb/serial/cyberjack.c b/drivers/usb/serial/cyberjack.c index 75d55155ba15..7392d3586510 100644 --- a/drivers/usb/serial/cyberjack.c +++ b/drivers/usb/serial/cyberjack.c @@ -62,9 +62,9 @@ static int cyberjack_open (struct usb_serial_port *port, struct file *filp); static void cyberjack_close (struct usb_serial_port *port, struct file *filp); static int cyberjack_write (struct usb_serial_port *port, int from_user, const unsigned char *buf, int count); -static void cyberjack_read_int_callback( struct urb *urb ); -static void cyberjack_read_bulk_callback (struct urb *urb); -static void cyberjack_write_bulk_callback (struct urb *urb); +static void cyberjack_read_int_callback (struct urb *urb, struct pt_regs *regs); +static void cyberjack_read_bulk_callback (struct urb *urb, struct pt_regs *regs); +static void cyberjack_write_bulk_callback (struct urb *urb, struct pt_regs *regs); static struct usb_device_id id_table [] = { { USB_DEVICE(CYBERJACK_VENDOR_ID, CYBERJACK_PRODUCT_ID) }, @@ -276,7 +276,7 @@ static int cyberjack_write (struct usb_serial_port *port, int from_user, const u return (count); } -static void cyberjack_read_int_callback( struct urb *urb ) +static void cyberjack_read_int_callback( struct urb *urb, struct pt_regs *regs ) { struct usb_serial_port *port = (struct usb_serial_port *)urb->context; struct cyberjack_private *priv = (struct cyberjack_private *)port->private; @@ -330,7 +330,7 @@ static void cyberjack_read_int_callback( struct urb *urb ) } } -static void cyberjack_read_bulk_callback (struct urb *urb) +static void cyberjack_read_bulk_callback (struct urb *urb, struct pt_regs *regs) { struct usb_serial_port *port = (struct usb_serial_port *)urb->context; struct cyberjack_private *priv = (struct cyberjack_private *)port->private; @@ -385,7 +385,7 @@ static void cyberjack_read_bulk_callback (struct urb *urb) } } -static void cyberjack_write_bulk_callback (struct urb *urb) +static void cyberjack_write_bulk_callback (struct urb *urb, struct pt_regs *regs) { struct usb_serial_port *port = (struct usb_serial_port *)urb->context; struct cyberjack_private *priv = (struct cyberjack_private *)port->private; diff --git a/drivers/usb/serial/digi_acceleport.c b/drivers/usb/serial/digi_acceleport.c index d5e6f3ae05d5..659e91cfd1f7 100644 --- a/drivers/usb/serial/digi_acceleport.c +++ b/drivers/usb/serial/digi_acceleport.c @@ -462,7 +462,7 @@ static int digi_ioctl( struct usb_serial_port *port, struct file *file, unsigned int cmd, unsigned long arg ); static int digi_write( struct usb_serial_port *port, int from_user, const unsigned char *buf, int count ); -static void digi_write_bulk_callback( struct urb *urb ); +static void digi_write_bulk_callback( struct urb *urb, struct pt_regs *regs ); static int digi_write_room( struct usb_serial_port *port ); static int digi_chars_in_buffer( struct usb_serial_port *port ); static int digi_open( struct usb_serial_port *port, struct file *filp ); @@ -470,7 +470,7 @@ static void digi_close( struct usb_serial_port *port, struct file *filp ); static int digi_startup_device( struct usb_serial *serial ); static int digi_startup( struct usb_serial *serial ); static void digi_shutdown( struct usb_serial *serial ); -static void digi_read_bulk_callback( struct urb *urb ); +static void digi_read_bulk_callback( struct urb *urb, struct pt_regs *regs ); static int digi_read_inb_callback( struct urb *urb ); static int digi_read_oob_callback( struct urb *urb ); @@ -1347,7 +1347,7 @@ dbg( "digi_write: returning %d", ret ); } -static void digi_write_bulk_callback( struct urb *urb ) +static void digi_write_bulk_callback( struct urb *urb, struct pt_regs *regs ) { struct usb_serial_port *port = (struct usb_serial_port *)urb->context; @@ -1766,7 +1766,7 @@ dbg( "digi_shutdown: TOP, in_interrupt()=%ld", in_interrupt() ); } -static void digi_read_bulk_callback( struct urb *urb ) +static void digi_read_bulk_callback( struct urb *urb, struct pt_regs *regs ) { struct usb_serial_port *port = (struct usb_serial_port *)urb->context; diff --git a/drivers/usb/serial/empeg.c b/drivers/usb/serial/empeg.c index f006bab74df0..a5e3b7795d7d 100644 --- a/drivers/usb/serial/empeg.c +++ b/drivers/usb/serial/empeg.c @@ -100,8 +100,8 @@ static int empeg_ioctl (struct usb_serial_port *port, unsigned int cmd, unsigned long arg); static void empeg_set_termios (struct usb_serial_port *port, struct termios *old_termios); -static void empeg_write_bulk_callback (struct urb *urb); -static void empeg_read_bulk_callback (struct urb *urb); +static void empeg_write_bulk_callback (struct urb *urb, struct pt_regs *regs); +static void empeg_read_bulk_callback (struct urb *urb, struct pt_regs *regs); static struct usb_device_id id_table [] = { { USB_DEVICE(EMPEG_VENDOR_ID, EMPEG_PRODUCT_ID) }, @@ -348,7 +348,7 @@ static int empeg_chars_in_buffer (struct usb_serial_port *port) } -static void empeg_write_bulk_callback (struct urb *urb) +static void empeg_write_bulk_callback (struct urb *urb, struct pt_regs *regs) { struct usb_serial_port *port = (struct usb_serial_port *)urb->context; @@ -366,7 +366,7 @@ static void empeg_write_bulk_callback (struct urb *urb) } -static void empeg_read_bulk_callback (struct urb *urb) +static void empeg_read_bulk_callback (struct urb *urb, struct pt_regs *regs) { struct usb_serial_port *port = (struct usb_serial_port *)urb->context; struct usb_serial *serial = get_usb_serial (port, __FUNCTION__); diff --git a/drivers/usb/serial/ftdi_sio.c b/drivers/usb/serial/ftdi_sio.c index fe4a96240096..c696597fa4e2 100644 --- a/drivers/usb/serial/ftdi_sio.c +++ b/drivers/usb/serial/ftdi_sio.c @@ -170,8 +170,8 @@ static int ftdi_sio_open (struct usb_serial_port *port, struct file *filp); static void ftdi_sio_close (struct usb_serial_port *port, struct file *filp); static int ftdi_sio_write (struct usb_serial_port *port, int from_user, const unsigned char *buf, int count); static int ftdi_sio_write_room (struct usb_serial_port *port); -static void ftdi_sio_write_bulk_callback (struct urb *urb); -static void ftdi_sio_read_bulk_callback (struct urb *urb); +static void ftdi_sio_write_bulk_callback (struct urb *urb, struct pt_regs *regs); +static void ftdi_sio_read_bulk_callback (struct urb *urb, struct pt_regs *regs); static void ftdi_sio_set_termios (struct usb_serial_port *port, struct termios * old); static int ftdi_sio_ioctl (struct usb_serial_port *port, struct file * file, unsigned int cmd, unsigned long arg); static void ftdi_sio_break_ctl (struct usb_serial_port *port, int break_state ); @@ -464,7 +464,7 @@ static int ftdi_sio_write (struct usb_serial_port *port, int from_user, return (count - data_offset); } /* ftdi_sio_write */ -static void ftdi_sio_write_bulk_callback (struct urb *urb) +static void ftdi_sio_write_bulk_callback (struct urb *urb, struct pt_regs *regs) { struct usb_serial_port *port = (struct usb_serial_port *)urb->context; struct usb_serial *serial; @@ -504,7 +504,7 @@ static int ftdi_sio_write_room( struct usb_serial_port *port ) } /* ftdi_sio_write_room */ -static void ftdi_sio_read_bulk_callback (struct urb *urb) +static void ftdi_sio_read_bulk_callback (struct urb *urb, struct pt_regs *regs) { /* ftdi_sio_serial_buld_callback */ struct usb_serial_port *port = (struct usb_serial_port *)urb->context; struct usb_serial *serial; diff --git a/drivers/usb/serial/generic.c b/drivers/usb/serial/generic.c index 29dc63fa01d7..cc381d0fa681 100644 --- a/drivers/usb/serial/generic.c +++ b/drivers/usb/serial/generic.c @@ -218,7 +218,7 @@ int usb_serial_generic_chars_in_buffer (struct usb_serial_port *port) return (chars); } -void usb_serial_generic_read_bulk_callback (struct urb *urb) +void usb_serial_generic_read_bulk_callback (struct urb *urb, struct pt_regs *regs) { struct usb_serial_port *port = (struct usb_serial_port *)urb->context; struct usb_serial *serial = get_usb_serial (port, __FUNCTION__); @@ -268,7 +268,7 @@ void usb_serial_generic_read_bulk_callback (struct urb *urb) err("%s - failed resubmitting read urb, error %d", __FUNCTION__, result); } -void usb_serial_generic_write_bulk_callback (struct urb *urb) +void usb_serial_generic_write_bulk_callback (struct urb *urb, struct pt_regs *regs) { struct usb_serial_port *port = (struct usb_serial_port *)urb->context; struct usb_serial *serial = get_usb_serial (port, __FUNCTION__); diff --git a/drivers/usb/serial/io_edgeport.c b/drivers/usb/serial/io_edgeport.c index f777c14abe34..e0963b2ecf13 100644 --- a/drivers/usb/serial/io_edgeport.c +++ b/drivers/usb/serial/io_edgeport.c @@ -435,10 +435,10 @@ static int CmdUrbs = 0; /* Number of outstanding Command Write Urbs */ /* local function prototypes */ /* function prototypes for all URB callbacks */ -static void edge_interrupt_callback (struct urb *urb); -static void edge_bulk_in_callback (struct urb *urb); -static void edge_bulk_out_data_callback (struct urb *urb); -static void edge_bulk_out_cmd_callback (struct urb *urb); +static void edge_interrupt_callback (struct urb *urb, struct pt_regs *regs); +static void edge_bulk_in_callback (struct urb *urb, struct pt_regs *regs); +static void edge_bulk_out_data_callback (struct urb *urb, struct pt_regs *regs); +static void edge_bulk_out_cmd_callback (struct urb *urb, struct pt_regs *regs); /* function prototypes for the usbserial callbacks */ static int edge_open (struct usb_serial_port *port, struct file *filp); @@ -753,7 +753,7 @@ static void get_product_info(struct edgeport_serial *edge_serial) * this is the callback function for when we have received data on the * interrupt endpoint. *****************************************************************************/ -static void edge_interrupt_callback (struct urb *urb) +static void edge_interrupt_callback (struct urb *urb, struct pt_regs *regs) { struct edgeport_serial *edge_serial = (struct edgeport_serial *)urb->context; struct edgeport_port *edge_port; @@ -850,7 +850,7 @@ exit: * this is the callback function for when we have received data on the * bulk in endpoint. *****************************************************************************/ -static void edge_bulk_in_callback (struct urb *urb) +static void edge_bulk_in_callback (struct urb *urb, struct pt_regs *regs) { struct edgeport_serial *edge_serial = (struct edgeport_serial *)urb->context; unsigned char *data = urb->transfer_buffer; @@ -901,7 +901,7 @@ static void edge_bulk_in_callback (struct urb *urb) * this is the callback function for when we have finished sending serial data * on the bulk out endpoint. *****************************************************************************/ -static void edge_bulk_out_data_callback (struct urb *urb) +static void edge_bulk_out_data_callback (struct urb *urb, struct pt_regs *regs) { struct edgeport_port *edge_port = (struct edgeport_port *)urb->context; struct tty_struct *tty; @@ -941,7 +941,7 @@ static void edge_bulk_out_data_callback (struct urb *urb) * this is the callback function for when we have finished sending a command * on the bulk out endpoint. *****************************************************************************/ -static void edge_bulk_out_cmd_callback (struct urb *urb) +static void edge_bulk_out_cmd_callback (struct urb *urb, struct pt_regs *regs) { struct edgeport_port *edge_port = (struct edgeport_port *)urb->context; struct tty_struct *tty; diff --git a/drivers/usb/serial/io_ti.c b/drivers/usb/serial/io_ti.c index 4ac6d31bfd38..6e3bf74c11da 100644 --- a/drivers/usb/serial/io_ti.c +++ b/drivers/usb/serial/io_ti.c @@ -1614,7 +1614,7 @@ static void handle_new_lsr (struct edgeport_port *edge_port, int lsr_data, __u8 } -static void edge_interrupt_callback (struct urb *urb) +static void edge_interrupt_callback (struct urb *urb, struct pt_regs *regs) { struct edgeport_serial *edge_serial = (struct edgeport_serial *)urb->context; struct usb_serial_port *port; @@ -1713,7 +1713,7 @@ exit: __FUNCTION__, status); } -static void edge_bulk_in_callback (struct urb *urb) +static void edge_bulk_in_callback (struct urb *urb, struct pt_regs *regs) { struct edgeport_port *edge_port = (struct edgeport_port *)urb->context; unsigned char *data = urb->transfer_buffer; @@ -1781,7 +1781,7 @@ exit: __FUNCTION__, status); } -static void edge_bulk_out_callback (struct urb *urb) +static void edge_bulk_out_callback (struct urb *urb, struct pt_regs *regs) { struct usb_serial_port *port = (struct usb_serial_port *)urb->context; struct usb_serial *serial = get_usb_serial (port, __FUNCTION__); diff --git a/drivers/usb/serial/ipaq.c b/drivers/usb/serial/ipaq.c index 8d0a4d5b57a7..b9e23ac67023 100644 --- a/drivers/usb/serial/ipaq.c +++ b/drivers/usb/serial/ipaq.c @@ -84,8 +84,8 @@ static int ipaq_write(struct usb_serial_port *port, int from_user, const unsigne static int ipaq_write_bulk(struct usb_serial_port *port, int from_user, const unsigned char *buf, int count); static void ipaq_write_gather(struct usb_serial_port *port); -static void ipaq_read_bulk_callback (struct urb *urb); -static void ipaq_write_bulk_callback(struct urb *urb); +static void ipaq_read_bulk_callback (struct urb *urb, struct pt_regs *regs); +static void ipaq_write_bulk_callback(struct urb *urb, struct pt_regs *regs); static int ipaq_write_room(struct usb_serial_port *port); static int ipaq_chars_in_buffer(struct usb_serial_port *port); static void ipaq_destroy_lists(struct usb_serial_port *port); @@ -277,7 +277,7 @@ static void ipaq_close(struct usb_serial_port *port, struct file *filp) /* info ("Bytes In = %d Bytes Out = %d", bytes_in, bytes_out); */ } -static void ipaq_read_bulk_callback(struct urb *urb) +static void ipaq_read_bulk_callback(struct urb *urb, struct pt_regs *regs) { struct usb_serial_port *port = (struct usb_serial_port *)urb->context; struct usb_serial *serial = get_usb_serial (port, __FUNCTION__); @@ -445,7 +445,7 @@ static void ipaq_write_gather(struct usb_serial_port *port) return; } -static void ipaq_write_bulk_callback(struct urb *urb) +static void ipaq_write_bulk_callback(struct urb *urb, struct pt_regs *regs) { struct usb_serial_port *port = (struct usb_serial_port *)urb->context; struct ipaq_private *priv = (struct ipaq_private *)port->private; diff --git a/drivers/usb/serial/ir-usb.c b/drivers/usb/serial/ir-usb.c index e11b418d6474..d18801249d63 100644 --- a/drivers/usb/serial/ir-usb.c +++ b/drivers/usb/serial/ir-usb.c @@ -111,8 +111,8 @@ static int ir_startup (struct usb_serial *serial); static int ir_open (struct usb_serial_port *port, struct file *filep); static void ir_close (struct usb_serial_port *port, struct file *filep); static int ir_write (struct usb_serial_port *port, int from_user, const unsigned char *buf, int count); -static void ir_write_bulk_callback (struct urb *urb); -static void ir_read_bulk_callback (struct urb *urb); +static void ir_write_bulk_callback (struct urb *urb, struct pt_regs *regs); +static void ir_read_bulk_callback (struct urb *urb, struct pt_regs *regs); static void ir_set_termios (struct usb_serial_port *port, struct termios *old_termios); static u8 ir_baud = 0; @@ -406,7 +406,7 @@ static int ir_write (struct usb_serial_port *port, int from_user, const unsigned return result; } -static void ir_write_bulk_callback (struct urb *urb) +static void ir_write_bulk_callback (struct urb *urb, struct pt_regs *regs) { struct usb_serial_port *port = (struct usb_serial_port *)urb->context; @@ -429,7 +429,7 @@ static void ir_write_bulk_callback (struct urb *urb) schedule_work(&port->work); } -static void ir_read_bulk_callback (struct urb *urb) +static void ir_read_bulk_callback (struct urb *urb, struct pt_regs *regs) { struct usb_serial_port *port = (struct usb_serial_port *)urb->context; struct usb_serial *serial = get_usb_serial (port, __FUNCTION__); diff --git a/drivers/usb/serial/keyspan.c b/drivers/usb/serial/keyspan.c index 2315dbf6299a..e128949276bf 100644 --- a/drivers/usb/serial/keyspan.c +++ b/drivers/usb/serial/keyspan.c @@ -383,7 +383,7 @@ static int keyspan_write(struct usb_serial_port *port, int from_user, return count - left; } -static void usa26_indat_callback(struct urb *urb) +static void usa26_indat_callback(struct urb *urb, struct pt_regs *regs) { int i, err; int endpoint; @@ -438,7 +438,7 @@ static void usa26_indat_callback(struct urb *urb) } /* Outdat handling is common for usa26, usa28 and usa49 messages */ -static void usa2x_outdat_callback(struct urb *urb) +static void usa2x_outdat_callback(struct urb *urb, struct pt_regs *regs) { struct usb_serial_port *port; struct keyspan_port_private *p_priv; @@ -451,13 +451,13 @@ static void usa2x_outdat_callback(struct urb *urb) schedule_work(&port->work); } -static void usa26_inack_callback(struct urb *urb) +static void usa26_inack_callback(struct urb *urb, struct pt_regs *regs) { dbg ("%s", __FUNCTION__); } -static void usa26_outcont_callback(struct urb *urb) +static void usa26_outcont_callback(struct urb *urb, struct pt_regs *regs) { struct usb_serial_port *port; struct keyspan_port_private *p_priv; @@ -471,7 +471,7 @@ static void usa26_outcont_callback(struct urb *urb) } } -static void usa26_instat_callback(struct urb *urb) +static void usa26_instat_callback(struct urb *urb, struct pt_regs *regs) { unsigned char *data = urb->transfer_buffer; struct keyspan_usa26_portStatusMessage *msg; @@ -533,14 +533,14 @@ static void usa26_instat_callback(struct urb *urb) exit: ; } -static void usa26_glocont_callback(struct urb *urb) +static void usa26_glocont_callback(struct urb *urb, struct pt_regs *regs) { dbg ("%s", __FUNCTION__); } -static void usa28_indat_callback(struct urb *urb) +static void usa28_indat_callback(struct urb *urb, struct pt_regs *regs) { int i, err; struct usb_serial_port *port; @@ -588,12 +588,12 @@ static void usa28_indat_callback(struct urb *urb) } while (urb->status != -EINPROGRESS); } -static void usa28_inack_callback(struct urb *urb) +static void usa28_inack_callback(struct urb *urb, struct pt_regs *regs) { dbg ("%s", __FUNCTION__); } -static void usa28_outcont_callback(struct urb *urb) +static void usa28_outcont_callback(struct urb *urb, struct pt_regs *regs) { struct usb_serial_port *port; struct keyspan_port_private *p_priv; @@ -607,7 +607,7 @@ static void usa28_outcont_callback(struct urb *urb) } } -static void usa28_instat_callback(struct urb *urb) +static void usa28_instat_callback(struct urb *urb, struct pt_regs *regs) { int err; unsigned char *data = urb->transfer_buffer; @@ -668,13 +668,13 @@ static void usa28_instat_callback(struct urb *urb) exit: ; } -static void usa28_glocont_callback(struct urb *urb) +static void usa28_glocont_callback(struct urb *urb, struct pt_regs *regs) { dbg ("%s", __FUNCTION__); } -static void usa49_glocont_callback(struct urb *urb) +static void usa49_glocont_callback(struct urb *urb, struct pt_regs *regs) { struct usb_serial *serial; struct usb_serial_port *port; @@ -698,7 +698,7 @@ static void usa49_glocont_callback(struct urb *urb) /* This is actually called glostat in the Keyspan doco */ -static void usa49_instat_callback(struct urb *urb) +static void usa49_instat_callback(struct urb *urb, struct pt_regs *regs) { int err; unsigned char *data = urb->transfer_buffer; @@ -761,12 +761,12 @@ static void usa49_instat_callback(struct urb *urb) exit: ; } -static void usa49_inack_callback(struct urb *urb) +static void usa49_inack_callback(struct urb *urb, struct pt_regs *regs) { dbg ("%s", __FUNCTION__); } -static void usa49_indat_callback(struct urb *urb) +static void usa49_indat_callback(struct urb *urb, struct pt_regs *regs) { int i, err; int endpoint; @@ -819,7 +819,7 @@ static void usa49_indat_callback(struct urb *urb) } /* not used, usa-49 doesn't have per-port control endpoints */ -static void usa49_outcont_callback(struct urb *urb) +static void usa49_outcont_callback(struct urb *urb, struct pt_regs *regs) { dbg ("%s", __FUNCTION__); } @@ -1070,7 +1070,7 @@ static int keyspan_fake_startup (struct usb_serial *serial) /* Helper functions used by keyspan_setup_urbs */ static struct urb *keyspan_setup_urb (struct usb_serial *serial, int endpoint, int dir, void *ctx, char *buf, int len, - void (*callback)(struct urb *)) + void (*callback)(struct urb *, struct pt_regs *regs)) { struct urb *urb; @@ -1093,12 +1093,12 @@ static struct urb *keyspan_setup_urb (struct usb_serial *serial, int endpoint, } static struct callbacks { - void (*instat_callback)(struct urb *); - void (*glocont_callback)(struct urb *); - void (*indat_callback)(struct urb *); - void (*outdat_callback)(struct urb *); - void (*inack_callback)(struct urb *); - void (*outcont_callback)(struct urb *); + void (*instat_callback)(struct urb *, struct pt_regs *regs); + void (*glocont_callback)(struct urb *, struct pt_regs *regs); + void (*indat_callback)(struct urb *, struct pt_regs *regs); + void (*outdat_callback)(struct urb *, struct pt_regs *regs); + void (*inack_callback)(struct urb *, struct pt_regs *regs); + void (*outcont_callback)(struct urb *, struct pt_regs *regs); } keyspan_callbacks[] = { { /* msg_usa26 callbacks */ diff --git a/drivers/usb/serial/keyspan_pda.c b/drivers/usb/serial/keyspan_pda.c index f7d1bbab0430..94c1e26348d7 100644 --- a/drivers/usb/serial/keyspan_pda.c +++ b/drivers/usb/serial/keyspan_pda.c @@ -222,7 +222,7 @@ static void keyspan_pda_request_unthrottle( struct usb_serial *serial ) } -static void keyspan_pda_rx_interrupt (struct urb *urb) +static void keyspan_pda_rx_interrupt (struct urb *urb, struct pt_regs *regs) { struct usb_serial_port *port = (struct usb_serial_port *)urb->context; struct usb_serial *serial; @@ -637,7 +637,7 @@ exit: } -static void keyspan_pda_write_bulk_callback (struct urb *urb) +static void keyspan_pda_write_bulk_callback (struct urb *urb, struct pt_regs *regs) { struct usb_serial_port *port = (struct usb_serial_port *)urb->context; struct usb_serial *serial; diff --git a/drivers/usb/serial/kl5kusb105.c b/drivers/usb/serial/kl5kusb105.c index f97774827372..7ec0577d8726 100644 --- a/drivers/usb/serial/kl5kusb105.c +++ b/drivers/usb/serial/kl5kusb105.c @@ -88,11 +88,11 @@ static int klsi_105_write (struct usb_serial_port *port, int from_user, const unsigned char *buf, int count); -static void klsi_105_write_bulk_callback (struct urb *urb); +static void klsi_105_write_bulk_callback (struct urb *urb, struct pt_regs *regs); static int klsi_105_chars_in_buffer (struct usb_serial_port *port); static int klsi_105_write_room (struct usb_serial_port *port); -static void klsi_105_read_bulk_callback (struct urb *urb); +static void klsi_105_read_bulk_callback (struct urb *urb, struct pt_regs *regs); static void klsi_105_set_termios (struct usb_serial_port *port, struct termios * old); static int klsi_105_ioctl (struct usb_serial_port *port, @@ -558,7 +558,7 @@ exit: return bytes_sent; /* that's how much we wrote */ } /* klsi_105_write */ -static void klsi_105_write_bulk_callback ( struct urb *urb) +static void klsi_105_write_bulk_callback ( struct urb *urb, struct pt_regs *regs) { struct usb_serial_port *port = (struct usb_serial_port *)urb->context; struct usb_serial *serial = port->serial; @@ -627,7 +627,7 @@ static int klsi_105_write_room (struct usb_serial_port *port) -static void klsi_105_read_bulk_callback (struct urb *urb) +static void klsi_105_read_bulk_callback (struct urb *urb, struct pt_regs *regs) { struct usb_serial_port *port = (struct usb_serial_port *)urb->context; struct usb_serial *serial = port->serial; diff --git a/drivers/usb/serial/mct_u232.c b/drivers/usb/serial/mct_u232.c index 5b7a48de3b2c..911b42ceb7e2 100644 --- a/drivers/usb/serial/mct_u232.c +++ b/drivers/usb/serial/mct_u232.c @@ -114,9 +114,9 @@ static int mct_u232_write (struct usb_serial_port *port, int from_user, const unsigned char *buf, int count); -static void mct_u232_write_bulk_callback (struct urb *urb); +static void mct_u232_write_bulk_callback (struct urb *urb, struct pt_regs *regs); #endif -static void mct_u232_read_int_callback (struct urb *urb); +static void mct_u232_read_int_callback (struct urb *urb, struct pt_regs *regs); static void mct_u232_set_termios (struct usb_serial_port *port, struct termios * old); static int mct_u232_ioctl (struct usb_serial_port *port, @@ -479,7 +479,7 @@ static int mct_u232_write (struct usb_serial_port *port, int from_user, return bytes_sent; } /* mct_u232_write */ -static void mct_u232_write_bulk_callback (struct urb *urb) +static void mct_u232_write_bulk_callback (struct urb *urb, struct pt_regs *regs) { struct usb_serial_port *port = (struct usb_serial_port *)urb->context; struct usb_serial *serial = port->serial; @@ -514,7 +514,7 @@ static void mct_u232_write_bulk_callback (struct urb *urb) } /* mct_u232_write_bulk_callback */ #endif -static void mct_u232_read_int_callback (struct urb *urb) +static void mct_u232_read_int_callback (struct urb *urb, struct pt_regs *regs) { struct usb_serial_port *port = (struct usb_serial_port *)urb->context; struct mct_u232_private *priv = (struct mct_u232_private *)port->private; diff --git a/drivers/usb/serial/omninet.c b/drivers/usb/serial/omninet.c index 541bcdbe8f61..c5d0ded0b17f 100644 --- a/drivers/usb/serial/omninet.c +++ b/drivers/usb/serial/omninet.c @@ -70,8 +70,8 @@ /* function prototypes */ static int omninet_open (struct usb_serial_port *port, struct file *filp); static void omninet_close (struct usb_serial_port *port, struct file *filp); -static void omninet_read_bulk_callback (struct urb *urb); -static void omninet_write_bulk_callback (struct urb *urb); +static void omninet_read_bulk_callback (struct urb *urb, struct pt_regs *regs); +static void omninet_write_bulk_callback (struct urb *urb, struct pt_regs *regs); static int omninet_write (struct usb_serial_port *port, int from_user, const unsigned char *buf, int count); static int omninet_write_room (struct usb_serial_port *port); static void omninet_shutdown (struct usb_serial *serial); @@ -214,7 +214,7 @@ static void omninet_close (struct usb_serial_port *port, struct file * filp) #define OMNINET_HEADERLEN sizeof(struct omninet_header) #define OMNINET_BULKOUTSIZE (64 - OMNINET_HEADERLEN) -static void omninet_read_bulk_callback (struct urb *urb) +static void omninet_read_bulk_callback (struct urb *urb, struct pt_regs *regs) { struct usb_serial_port *port = (struct usb_serial_port *)urb->context; struct usb_serial *serial = get_usb_serial (port, __FUNCTION__); @@ -336,7 +336,7 @@ static int omninet_write_room (struct usb_serial_port *port) return (room); } -static void omninet_write_bulk_callback (struct urb *urb) +static void omninet_write_bulk_callback (struct urb *urb, struct pt_regs *regs) { /* struct omninet_header *header = (struct omninet_header *) urb->transfer_buffer; */ struct usb_serial_port *port = (struct usb_serial_port *) urb->context; diff --git a/drivers/usb/serial/pl2303.c b/drivers/usb/serial/pl2303.c index fc93a7587fc4..1284892b0fb4 100644 --- a/drivers/usb/serial/pl2303.c +++ b/drivers/usb/serial/pl2303.c @@ -73,6 +73,7 @@ static struct usb_device_id id_table [] = { { USB_DEVICE(ELCOM_VENDOR_ID, ELCOM_PRODUCT_ID) }, { USB_DEVICE(ITEGNO_VENDOR_ID, ITEGNO_PRODUCT_ID) }, { USB_DEVICE(MA620_VENDOR_ID, MA620_PRODUCT_ID) }, + { USB_DEVICE(RATOC_VENDOR_ID, RATOC_PRODUCT_ID) }, { } /* Terminating entry */ }; @@ -114,9 +115,9 @@ static void pl2303_set_termios (struct usb_serial_port *port, struct termios *old); static int pl2303_ioctl (struct usb_serial_port *port, struct file *file, unsigned int cmd, unsigned long arg); -static void pl2303_read_int_callback (struct urb *urb); -static void pl2303_read_bulk_callback (struct urb *urb); -static void pl2303_write_bulk_callback (struct urb *urb); +static void pl2303_read_int_callback (struct urb *urb, struct pt_regs *regs); +static void pl2303_read_bulk_callback (struct urb *urb, struct pt_regs *regs); +static void pl2303_write_bulk_callback (struct urb *urb, struct pt_regs *regs); static int pl2303_write (struct usb_serial_port *port, int from_user, const unsigned char *buf, int count); static void pl2303_break_ctl(struct usb_serial_port *port,int break_state); @@ -587,7 +588,7 @@ static void pl2303_shutdown (struct usb_serial *serial) } -static void pl2303_read_int_callback (struct urb *urb) +static void pl2303_read_int_callback (struct urb *urb, struct pt_regs *regs) { struct usb_serial_port *port = (struct usb_serial_port *) urb->context; struct usb_serial *serial = get_usb_serial (port, __FUNCTION__); @@ -625,7 +626,7 @@ exit: } -static void pl2303_read_bulk_callback (struct urb *urb) +static void pl2303_read_bulk_callback (struct urb *urb, struct pt_regs *regs) { struct usb_serial_port *port = (struct usb_serial_port *) urb->context; struct usb_serial *serial = get_usb_serial (port, __FUNCTION__); @@ -690,7 +691,7 @@ static void pl2303_read_bulk_callback (struct urb *urb) -static void pl2303_write_bulk_callback (struct urb *urb) +static void pl2303_write_bulk_callback (struct urb *urb, struct pt_regs *regs) { struct usb_serial_port *port = (struct usb_serial_port *) urb->context; int result; diff --git a/drivers/usb/serial/pl2303.h b/drivers/usb/serial/pl2303.h index 6812218a8c2f..6566b2b85573 100644 --- a/drivers/usb/serial/pl2303.h +++ b/drivers/usb/serial/pl2303.h @@ -25,3 +25,6 @@ #define MA620_VENDOR_ID 0x0df7 #define MA620_PRODUCT_ID 0x0620 + +#define RATOC_VENDOR_ID 0x0584 +#define RATOC_PRODUCT_ID 0xb000 diff --git a/drivers/usb/serial/safe_serial.c b/drivers/usb/serial/safe_serial.c index 31301e598125..0d348fd24a7a 100644 --- a/drivers/usb/serial/safe_serial.c +++ b/drivers/usb/serial/safe_serial.c @@ -206,7 +206,7 @@ static __u16 __inline__ fcs_compute10 (unsigned char *sp, int len, __u16 fcs) return fcs; } -static void safe_read_bulk_callback (struct urb *urb) +static void safe_read_bulk_callback (struct urb *urb, struct pt_regs *regs) { struct usb_serial_port *port = (struct usb_serial_port *) urb->context; struct usb_serial *serial = get_usb_serial (port, __FUNCTION__); diff --git a/drivers/usb/serial/usb-serial.h b/drivers/usb/serial/usb-serial.h index 82c75d867f39..08943d411f23 100644 --- a/drivers/usb/serial/usb-serial.h +++ b/drivers/usb/serial/usb-serial.h @@ -225,9 +225,9 @@ struct usb_serial_device_type { void (*throttle) (struct usb_serial_port *port); void (*unthrottle) (struct usb_serial_port *port); - void (*read_int_callback)(struct urb *urb); - void (*read_bulk_callback)(struct urb *urb); - void (*write_bulk_callback)(struct urb *urb); + void (*read_int_callback)(struct urb *urb, struct pt_regs *regs); + void (*read_bulk_callback)(struct urb *urb, struct pt_regs *regs); + void (*write_bulk_callback)(struct urb *urb, struct pt_regs *regs); }; extern int usb_serial_register(struct usb_serial_device_type *new_device); @@ -256,8 +256,8 @@ extern int usb_serial_generic_write (struct usb_serial_port *port, int from_user extern void usb_serial_generic_close (struct usb_serial_port *port, struct file *filp); extern int usb_serial_generic_write_room (struct usb_serial_port *port); extern int usb_serial_generic_chars_in_buffer (struct usb_serial_port *port); -extern void usb_serial_generic_read_bulk_callback (struct urb *urb); -extern void usb_serial_generic_write_bulk_callback (struct urb *urb); +extern void usb_serial_generic_read_bulk_callback (struct urb *urb, struct pt_regs *regs); +extern void usb_serial_generic_write_bulk_callback (struct urb *urb, struct pt_regs *regs); extern void usb_serial_generic_shutdown (struct usb_serial *serial); extern int usb_serial_generic_register (int debug); extern void usb_serial_generic_deregister (void); diff --git a/drivers/usb/serial/visor.c b/drivers/usb/serial/visor.c index 2d05857bb1c5..eeb9ee04ccaa 100644 --- a/drivers/usb/serial/visor.c +++ b/drivers/usb/serial/visor.c @@ -173,8 +173,8 @@ static int visor_calc_num_ports(struct usb_serial *serial); static void visor_shutdown (struct usb_serial *serial); static int visor_ioctl (struct usb_serial_port *port, struct file * file, unsigned int cmd, unsigned long arg); static void visor_set_termios (struct usb_serial_port *port, struct termios *old_termios); -static void visor_write_bulk_callback (struct urb *urb); -static void visor_read_bulk_callback (struct urb *urb); +static void visor_write_bulk_callback (struct urb *urb, struct pt_regs *regs); +static void visor_read_bulk_callback (struct urb *urb, struct pt_regs *regs); static int clie_3_5_startup (struct usb_serial *serial); @@ -449,7 +449,7 @@ static int visor_chars_in_buffer (struct usb_serial_port *port) } -static void visor_write_bulk_callback (struct urb *urb) +static void visor_write_bulk_callback (struct urb *urb, struct pt_regs *regs) { struct usb_serial_port *port = (struct usb_serial_port *)urb->context; @@ -470,7 +470,7 @@ static void visor_write_bulk_callback (struct urb *urb) } -static void visor_read_bulk_callback (struct urb *urb) +static void visor_read_bulk_callback (struct urb *urb, struct pt_regs *regs) { struct usb_serial_port *port = (struct usb_serial_port *)urb->context; struct usb_serial *serial = get_usb_serial (port, __FUNCTION__); diff --git a/drivers/usb/serial/whiteheat.c b/drivers/usb/serial/whiteheat.c index 027354fd948c..dc29c4ec06e9 100644 --- a/drivers/usb/serial/whiteheat.c +++ b/drivers/usb/serial/whiteheat.c @@ -150,8 +150,8 @@ static void whiteheat_break_ctl (struct usb_serial_port *port, int break_state) static int whiteheat_chars_in_buffer (struct usb_serial_port *port); static void whiteheat_throttle (struct usb_serial_port *port); static void whiteheat_unthrottle (struct usb_serial_port *port); -static void whiteheat_read_callback (struct urb *urb); -static void whiteheat_write_callback (struct urb *urb); +static void whiteheat_read_callback (struct urb *urb, struct pt_regs *regs); +static void whiteheat_write_callback (struct urb *urb, struct pt_regs *regs); static struct usb_serial_device_type whiteheat_fake_device = { .owner = THIS_MODULE, @@ -225,8 +225,8 @@ struct whiteheat_private { /* local function prototypes */ static int start_command_port(struct usb_serial *serial); static void stop_command_port(struct usb_serial *serial); -static void command_port_write_callback(struct urb *urb); -static void command_port_read_callback(struct urb *urb); +static void command_port_write_callback(struct urb *urb, struct pt_regs *regs); +static void command_port_read_callback(struct urb *urb, struct pt_regs *regs); static int start_port_read(struct usb_serial_port *port); static struct whiteheat_urb_wrap *urb_to_wrap(struct urb *urb, struct list_head *head); @@ -957,7 +957,7 @@ static void whiteheat_unthrottle (struct usb_serial_port *port) /***************************************************************************** * Connect Tech's White Heat callback routines *****************************************************************************/ -static void command_port_write_callback (struct urb *urb) +static void command_port_write_callback (struct urb *urb, struct pt_regs *regs) { dbg("%s", __FUNCTION__); @@ -972,7 +972,7 @@ static void command_port_write_callback (struct urb *urb) } -static void command_port_read_callback (struct urb *urb) +static void command_port_read_callback (struct urb *urb, struct pt_regs *regs) { struct usb_serial_port *command_port = (struct usb_serial_port *)urb->context; struct usb_serial *serial = get_usb_serial (command_port, __FUNCTION__); @@ -1028,7 +1028,7 @@ static void command_port_read_callback (struct urb *urb) } -static void whiteheat_read_callback(struct urb *urb) +static void whiteheat_read_callback(struct urb *urb, struct pt_regs *regs) { struct usb_serial_port *port = (struct usb_serial_port *)urb->context; struct usb_serial *serial = get_usb_serial (port, __FUNCTION__); @@ -1079,7 +1079,7 @@ static void whiteheat_read_callback(struct urb *urb) } -static void whiteheat_write_callback(struct urb *urb) +static void whiteheat_write_callback(struct urb *urb, struct pt_regs *regs) { struct usb_serial_port *port = (struct usb_serial_port *)urb->context; struct usb_serial *serial = get_usb_serial (port, __FUNCTION__); diff --git a/drivers/usb/storage/transport.c b/drivers/usb/storage/transport.c index b1e4bdd9ff96..622a5d7d96bc 100644 --- a/drivers/usb/storage/transport.c +++ b/drivers/usb/storage/transport.c @@ -401,7 +401,7 @@ unsigned int usb_stor_transfer_length(Scsi_Cmnd *srb) /* This is the completion handler which will wake us up when an URB * completes. */ -static void usb_stor_blocking_completion(struct urb *urb) +static void usb_stor_blocking_completion(struct urb *urb, struct pt_regs *regs) { struct completion *urb_done_ptr = (struct completion *)urb->context; @@ -967,7 +967,7 @@ void usb_stor_abort_transport(struct us_data *us) /* If we are waiting for an IRQ, simulate it */ if (test_bit(US_FLIDX_IP_WANTED, &us->flags)) { US_DEBUGP("-- simulating missing IRQ\n"); - usb_stor_CBI_irq(us->irq_urb); + usb_stor_CBI_irq(us->irq_urb, NULL); } /* Wait for the aborted command to finish */ @@ -982,7 +982,7 @@ void usb_stor_abort_transport(struct us_data *us) */ /* The interrupt handler for CBI devices */ -void usb_stor_CBI_irq(struct urb *urb) +void usb_stor_CBI_irq(struct urb *urb, struct pt_regs *regs) { struct us_data *us = (struct us_data *)urb->context; int status; diff --git a/drivers/usb/storage/transport.h b/drivers/usb/storage/transport.h index a8ac7f3fbf8f..d1c5cc4aba9e 100644 --- a/drivers/usb/storage/transport.h +++ b/drivers/usb/storage/transport.h @@ -145,7 +145,7 @@ struct bulk_cs_wrap { #define US_CBI_ADSC 0 -extern void usb_stor_CBI_irq(struct urb*); +extern void usb_stor_CBI_irq(struct urb*, struct pt_regs *); extern int usb_stor_CBI_transport(Scsi_Cmnd*, struct us_data*); extern int usb_stor_CB_transport(Scsi_Cmnd*, struct us_data*); diff --git a/drivers/usb/usb-skeleton.c b/drivers/usb/usb-skeleton.c index 97aa1a3556db..1010ac6acf33 100644 --- a/drivers/usb/usb-skeleton.c +++ b/drivers/usb/usb-skeleton.c @@ -137,7 +137,7 @@ static int skel_release (struct inode *inode, struct file *file); static int skel_probe (struct usb_interface *intf, const struct usb_device_id *id); static void skel_disconnect (struct usb_interface *intf); -static void skel_write_bulk_callback (struct urb *urb); +static void skel_write_bulk_callback (struct urb *urb, struct pt_regs *regs); /* array of pointers to our devices that are currently connected */ @@ -487,7 +487,7 @@ static int skel_ioctl (struct inode *inode, struct file *file, unsigned int cmd, /** * skel_write_bulk_callback */ -static void skel_write_bulk_callback (struct urb *urb) +static void skel_write_bulk_callback (struct urb *urb, struct pt_regs *regs) { struct usb_skel *dev = (struct usb_skel *)urb->context; diff --git a/include/linux/usb.h b/include/linux/usb.h index 774d35815121..9cc9f1d2e2df 100644 --- a/include/linux/usb.h +++ b/include/linux/usb.h @@ -414,7 +414,7 @@ struct usb_device_id { * specific device. */ #define USB_DEVICE(vend,prod) \ - match_flags: USB_DEVICE_ID_MATCH_DEVICE, idVendor: (vend), idProduct: (prod) + .match_flags = USB_DEVICE_ID_MATCH_DEVICE, .idVendor = (vend), .idProduct = (prod) /** * USB_DEVICE_VER - macro used to describe a specific usb device with a version range * @vend: the 16 bit USB Vendor ID @@ -426,7 +426,7 @@ struct usb_device_id { * specific device, with a version range. */ #define USB_DEVICE_VER(vend,prod,lo,hi) \ - match_flags: USB_DEVICE_ID_MATCH_DEVICE_AND_VERSION, idVendor: (vend), idProduct: (prod), bcdDevice_lo: (lo), bcdDevice_hi: (hi) + .match_flags = USB_DEVICE_ID_MATCH_DEVICE_AND_VERSION, .idVendor = (vend), .idProduct = (prod), .bcdDevice_lo = (lo), .bcdDevice_hi = (hi) /** * USB_DEVICE_INFO - macro used to describe a class of usb devices @@ -438,7 +438,7 @@ struct usb_device_id { * specific class of devices. */ #define USB_DEVICE_INFO(cl,sc,pr) \ - match_flags: USB_DEVICE_ID_MATCH_DEV_INFO, bDeviceClass: (cl), bDeviceSubClass: (sc), bDeviceProtocol: (pr) + .match_flags = USB_DEVICE_ID_MATCH_DEV_INFO, .bDeviceClass = (cl), .bDeviceSubClass = (sc), .bDeviceProtocol = (pr) /** * USB_INTERFACE_INFO - macro used to describe a class of usb interfaces @@ -450,7 +450,7 @@ struct usb_device_id { * specific class of interfaces. */ #define USB_INTERFACE_INFO(cl,sc,pr) \ - match_flags: USB_DEVICE_ID_MATCH_INT_INFO, bInterfaceClass: (cl), bInterfaceSubClass: (sc), bInterfaceProtocol: (pr) + .match_flags = USB_DEVICE_ID_MATCH_INT_INFO, .bInterfaceClass = (cl), .bInterfaceSubClass = (sc), .bInterfaceProtocol = (pr) /* -------------------------------------------------------------------------- */ @@ -554,8 +554,9 @@ struct usb_iso_packet_descriptor { }; struct urb; +struct pt_regs; -typedef void (*usb_complete_t)(struct urb *); +typedef void (*usb_complete_t)(struct urb *, struct pt_regs *); /** * struct urb - USB Request Block diff --git a/sound/usb/usbmidi.c b/sound/usb/usbmidi.c index 4e75e1c102ec..bb81257a7d02 100644 --- a/sound/usb/usbmidi.c +++ b/sound/usb/usbmidi.c @@ -168,7 +168,7 @@ static void snd_usbmidi_input_packet(snd_usb_midi_in_endpoint_t* ep, /* * Processes the data read from the device. */ -static void snd_usbmidi_in_urb_complete(struct urb* urb) +static void snd_usbmidi_in_urb_complete(struct urb* urb, struct pt_regs *regs) { snd_usb_midi_in_endpoint_t* ep = snd_magic_cast(snd_usb_midi_in_endpoint_t, urb->context, return); @@ -191,7 +191,7 @@ static void snd_usbmidi_in_urb_complete(struct urb* urb) /* * Converts the data read from a Midiman device to standard USB MIDI packets. */ -static void snd_usbmidi_in_midiman_complete(struct urb* urb) +static void snd_usbmidi_in_midiman_complete(struct urb* urb, struct pt_regs *regs) { if (urb->status == 0) { uint8_t* buffer = (uint8_t*)urb->transfer_buffer; @@ -220,7 +220,7 @@ static void snd_usbmidi_in_midiman_complete(struct urb* urb) snd_usbmidi_in_urb_complete(urb); } -static void snd_usbmidi_out_urb_complete(struct urb* urb) +static void snd_usbmidi_out_urb_complete(struct urb* urb, struct pt_regs *regs) { snd_usb_midi_out_endpoint_t* ep = snd_magic_cast(snd_usb_midi_out_endpoint_t, urb->context, return); |
