Commit 0d50877d authored by Greg Kroah-Hartman's avatar Greg Kroah-Hartman

Merge kroah.com:/home/greg/linux/BK/bleeding_edge-2.5

into kroah.com:/home/greg/linux/BK/gregkh-2.5
parents 2becf2fd 35945ccf
......@@ -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 @@ static void hci_usb_interrupt(struct urb *urb)
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;
......
......@@ -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;
......
......@@ -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;
......
......@@ -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 @@ static int irda_usb_hard_xmit(struct sk_buff *skb, struct net_device *netdev)
/*
* 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;
......
......@@ -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;
......
......@@ -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 @@ static void bluetooth_int_callback (struct urb *urb)
}
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 @@ static void bluetooth_read_bulk_callback (struct urb *urb)
}
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__);
......
......@@ -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 @@ static void acm_ctrl_irq(struct urb *urb)
__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)
......
......@@ -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; */
......
......@@ -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;
......
......@@ -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;
......
......@@ -433,7 +433,7 @@ static int rh_call_control (struct usb_hcd *hcd, struct urb *urb)
}
/* any errors get returned through the urb completion */
usb_hcd_giveback_urb (hcd, urb);
usb_hcd_giveback_urb (hcd, urb, NULL);
return 0;
}
......@@ -494,7 +494,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
......@@ -509,7 +509,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);
}
}
......@@ -544,7 +544,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);
}
/*-------------------------------------------------------------------------*/
......@@ -1060,11 +1060,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;
......@@ -1073,7 +1073,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);
......@@ -1273,6 +1273,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
......@@ -1281,7 +1282,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);
......@@ -1304,7 +1305,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);
......@@ -1315,7 +1316,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
......@@ -1329,7 +1330,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);
}
......
......@@ -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);
......
......@@ -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;
......
......@@ -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;
......
......@@ -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);
......
......@@ -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);
}
......
......@@ -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 */
......
......@@ -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;
......
......@@ -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;
......
......@@ -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, &regs->intrdisable);
dl_done_list (ohci, dl_reverse_done_list (ohci));
dl_done_list (ohci, dl_reverse_done_list (ohci), ptregs);
writel (OHCI_INTR_WDH, &regs->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, &regs->intrdisable);
spin_unlock (&ohci->lock);
......
......@@ -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 */
......
......@@ -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 @@ static void finish_unlinks (struct ohci_hcd *ohci, u16 tick)
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 @@ static void finish_unlinks (struct ohci_hcd *ohci, u16 tick)
* 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);
}
......
......@@ -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)
......
......@@ -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;
......
......@@ -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);
......
......@@ -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;
......
......@@ -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();
......
......@@ -9,7 +9,6 @@
*/
typedef void (*mts_scsi_cmnd_callback)(Scsi_Cmnd *);
typedef void (*mts_usb_urb_callback) (struct urb *);
struct mts_transfer_context
......
......@@ -354,7 +354,7 @@
#include "scanner.h"
static void
irq_scanner(struct urb *urb)
irq_scanner(struct urb *urb, struct pt_regs *regs)
{
/*
......
......@@ -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;
......
......@@ -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;
......
......@@ -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");
......
......@@ -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;
......
......@@ -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;
......
......@@ -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;
......
......@@ -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 @@ static void wacom_pl_irq(struct urb *urb)
__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 @@ static void wacom_penpartner_irq(struct urb *urb)
__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 @@ static void wacom_graphire_irq(struct urb *urb)
__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;
......
......@@ -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;
......
......@@ -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;
......
......@@ -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;
......
......@@ -3843,7 +3843,7 @@ ov518_move_data(struct usb_ov511 *ov, unsigned char *in, int n)
}
static void
ov51x_isoc_irq(struct urb *urb)
ov51x_isoc_irq(struct urb *urb, struct pt_regs *regs)
{
int i;
struct usb_ov511 *ov;
......
......@@ -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;
......
......@@ -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 @@ static void se401_button_irq(struct urb *urb)
__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;
......
......@@ -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;
......
......@@ -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;
......
......@@ -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 @@ static int auerchain_setup (pauerchain_t acp, unsigned int numElements)
/* 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:
......
......@@ -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;
......
......@@ -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;
......
......@@ -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;
......
......@@ -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;
......
......@@ -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;
......
......@@ -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 @@ static void read_bulk_callback( struct urb *urb )
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;
......
......@@ -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) {
......
......@@ -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 @@ static void rx_fixup(unsigned long data)
}
}
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);
}
......
......@@ -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 @@ static void rx_fixup(unsigned long data)
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;
......
......@@ -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 @@ static inline void rx_process (struct usbnet *dev, struct sk_buff *skb)
/*-------------------------------------------------------------------------*/
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;
......
......@@ -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;
......
......@@ -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;
......
......@@ -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;
......
......@@ -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__);
......
......@@ -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;
......
......@@ -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__);
......
......@@ -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 @@ static void edge_interrupt_callback (struct urb *urb)
* 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;
......
......@@ -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 @@ static void edge_interrupt_callback (struct urb *urb)
__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 @@ static void edge_bulk_in_callback (struct urb *urb)
__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__);
......
......@@ -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;
......
......@@ -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__);
......
......@@ -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 */
......
......@@ -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 @@ static int keyspan_pda_write(struct usb_serial_port *port, int from_user,
}
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;
......
......@@ -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 @@ static int klsi_105_write (struct usb_serial_port *port, int from_user,
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;
......
......@@ -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;
......
......@@ -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;
......
......@@ -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 @@ static void pl2303_read_int_callback (struct urb *urb)
}
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;
......
......@@ -25,3 +25,6 @@
#define MA620_VENDOR_ID 0x0df7
#define MA620_PRODUCT_ID 0x0620
#define RATOC_VENDOR_ID 0x0584
#define RATOC_PRODUCT_ID 0xb000
......@@ -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__);
......
......@@ -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);
......
......@@ -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__);
......
......@@ -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__);
......
......@@ -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;
......
......@@ -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*);
......
......@@ -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;
......
......@@ -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
......
......@@ -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);
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment