*
*/
+#include <linux/config.h>
#include <linux/kernel.h>
#include <linux/errno.h>
#include <linux/init.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 */
err("%s: Unable to retrieve firmware version, try replugging\n", serial->type->description);
err("%s: If the firmware is not running (status led not blinking)\n", serial->type->description);
err("%s: please contact support@connecttech.com\n", serial->type->description);
- kfree(result);
return -ENODEV;
no_command_private:
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_move(tmp, &info->tx_urbs_free);
+ list_del(tmp);
+ list_add(tmp, &info->tx_urbs_free);
}
spin_unlock_irqrestore(&info->lock, flags);
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) {
return;
}
- usb_serial_port_softint(port);
+ usb_serial_port_softint((void *)port);
+
+ schedule_work(&port->work);
}
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;
}