git://git.onelab.eu
/
linux-2.6.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Revert to Fedora kernel-2.6.17-1.2187_FC5 patched with vs2.0.2.1; there are too many...
[linux-2.6.git]
/
drivers
/
usb
/
serial
/
whiteheat.c
diff --git
a/drivers/usb/serial/whiteheat.c
b/drivers/usb/serial/whiteheat.c
index
6e6c793
..
3ced09c
100644
(file)
--- a/
drivers/usb/serial/whiteheat.c
+++ b/
drivers/usb/serial/whiteheat.c
@@
-65,6
+65,7
@@
*
*/
*
*/
+#include <linux/config.h>
#include <linux/kernel.h>
#include <linux/errno.h>
#include <linux/init.h>
#include <linux/kernel.h>
#include <linux/errno.h>
#include <linux/init.h>
@@
-79,7
+80,7
@@
#include <linux/usb.h>
#include <linux/serial_reg.h>
#include <linux/serial.h>
#include <linux/usb.h>
#include <linux/serial_reg.h>
#include <linux/serial.h>
-#include
<linux/usb/serial.h>
+#include
"usb-serial.h"
#include "whiteheat_fw.h" /* firmware for the ConnectTech WhiteHEAT device */
#include "whiteheat.h" /* WhiteHEAT specific commands */
#include "whiteheat_fw.h" /* firmware for the ConnectTech WhiteHEAT device */
#include "whiteheat.h" /* WhiteHEAT specific commands */
@@
-685,16
+686,19
@@
static void whiteheat_close(struct usb_serial_port *port, struct file * filp)
wrap = list_entry(tmp, struct whiteheat_urb_wrap, list);
urb = wrap->urb;
usb_kill_urb(urb);
wrap = list_entry(tmp, struct whiteheat_urb_wrap, list);
urb = wrap->urb;
usb_kill_urb(urb);
- list_move(tmp, &info->rx_urbs_free);
+ list_del(tmp);
+ list_add(tmp, &info->rx_urbs_free);
+ }
+ list_for_each_safe(tmp, tmp2, &info->rx_urb_q) {
+ list_del(tmp);
+ list_add(tmp, &info->rx_urbs_free);
}
}
- list_for_each_safe(tmp, tmp2, &info->rx_urb_q)
- list_move(tmp, &info->rx_urbs_free);
-
list_for_each_safe(tmp, tmp2, &info->tx_urbs_submitted) {
wrap = list_entry(tmp, struct whiteheat_urb_wrap, list);
urb = wrap->urb;
usb_kill_urb(urb);
list_for_each_safe(tmp, tmp2, &info->tx_urbs_submitted) {
wrap = list_entry(tmp, struct whiteheat_urb_wrap, list);
urb = wrap->urb;
usb_kill_urb(urb);
- list_move(tmp, &info->tx_urbs_free);
+ list_del(tmp);
+ list_add(tmp, &info->tx_urbs_free);
}
spin_unlock_irqrestore(&info->lock, flags);
}
spin_unlock_irqrestore(&info->lock, flags);
@@
-1076,7
+1080,8
@@
static void whiteheat_write_callback(struct urb *urb, struct pt_regs *regs)
err("%s - Not my urb!", __FUNCTION__);
return;
}
err("%s - Not my urb!", __FUNCTION__);
return;
}
- list_move(&wrap->list, &info->tx_urbs_free);
+ list_del(&wrap->list);
+ list_add(&wrap->list, &info->tx_urbs_free);
spin_unlock(&info->lock);
if (urb->status) {
spin_unlock(&info->lock);
if (urb->status) {
@@
-1084,7
+1089,9
@@
static void whiteheat_write_callback(struct urb *urb, struct pt_regs *regs)
return;
}
return;
}
- usb_serial_port_softint(port);
+ usb_serial_port_softint((void *)port);
+
+ schedule_work(&port->work);
}
}
@@
-1366,7
+1373,8
@@
static int start_port_read(struct usb_serial_port *port)
wrap = list_entry(tmp, struct whiteheat_urb_wrap, list);
urb = wrap->urb;
usb_kill_urb(urb);
wrap = list_entry(tmp, struct whiteheat_urb_wrap, list);
urb = wrap->urb;
usb_kill_urb(urb);
- list_move(tmp, &info->rx_urbs_free);
+ list_del(tmp);
+ list_add(tmp, &info->rx_urbs_free);
}
break;
}
}
break;
}