X-Git-Url: http://git.onelab.eu/?a=blobdiff_plain;f=drivers%2Fusb%2Fserial%2Fir-usb.c;h=426182ddc42a871d758ae8fc400f460138fd38f5;hb=9464c7cf61b9433057924c36e6e02f303a00e768;hp=1b348df388ed2586a2ce0937c3f4af9e3b61c934;hpb=41689045f6a3cbe0550e1d34e9cc20d2e8c432ba;p=linux-2.6.git diff --git a/drivers/usb/serial/ir-usb.c b/drivers/usb/serial/ir-usb.c index 1b348df38..426182ddc 100644 --- a/drivers/usb/serial/ir-usb.c +++ b/drivers/usb/serial/ir-usb.c @@ -46,6 +46,7 @@ * initial version released. */ +#include #include #include #include @@ -57,7 +58,7 @@ #include #include #include -#include +#include "usb-serial.h" /* * Version Information @@ -342,14 +343,14 @@ static int ir_write (struct usb_serial_port *port, const unsigned char *buf, int if (count == 0) return 0; - spin_lock_bh(&port->lock); + spin_lock(&port->lock); if (port->write_urb_busy) { - spin_unlock_bh(&port->lock); + spin_unlock(&port->lock); dbg("%s - already writing", __FUNCTION__); return 0; } port->write_urb_busy = 1; - spin_unlock_bh(&port->lock); + spin_unlock(&port->lock); transfer_buffer = port->write_urb->transfer_buffer; transfer_size = min(count, port->bulk_out_size - 1); @@ -407,7 +408,7 @@ static void ir_write_bulk_callback (struct urb *urb, struct pt_regs *regs) urb->actual_length, urb->transfer_buffer); - usb_serial_port_softint(port); + schedule_work(&port->work); } static void ir_read_bulk_callback (struct urb *urb, struct pt_regs *regs) @@ -452,7 +453,8 @@ static void ir_read_bulk_callback (struct urb *urb, struct pt_regs *regs) tty = port->tty; /* - * FIXME: must not do this in IRQ context + * FIXME: must not do this in IRQ context, + * must honour TTY_DONT_FLIP */ tty->ldisc.receive_buf( tty,