X-Git-Url: http://git.onelab.eu/?a=blobdiff_plain;f=drivers%2Fusb%2Fserial%2Fir-usb.c;h=3003cd04300ef401c31f95433ad976dd9f82a580;hb=6a77f38946aaee1cd85eeec6cf4229b204c15071;hp=0adcbb1f813b4595a77092fe36560fb8099cec25;hpb=9213980e6a70d8473e0ffd4b39ab5b6caaba9ff5;p=linux-2.6.git diff --git a/drivers/usb/serial/ir-usb.c b/drivers/usb/serial/ir-usb.c index 0adcbb1f8..3003cd043 100644 --- a/drivers/usb/serial/ir-usb.c +++ b/drivers/usb/serial/ir-usb.c @@ -58,13 +58,6 @@ #include #include #include - -#ifdef CONFIG_USB_SERIAL_DEBUG - static int debug = 1; -#else - static int debug; -#endif - #include "usb-serial.h" /* @@ -101,16 +94,18 @@ struct irda_class_desc { u8 bMaxUnicastList; } __attribute__ ((packed)); +static int debug; + /* if overridden by the user, then use their value for the size of the read and * write urbs */ -static int buffer_size = 0; +static int buffer_size; /* if overridden by the user, then use the specified number of XBOFs */ static int xbof = -1; 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 int ir_write (struct usb_serial_port *port, const unsigned char *buf, int count); 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); @@ -327,10 +322,10 @@ static void ir_close (struct usb_serial_port *port, struct file * filp) dbg("%s - port %d", __FUNCTION__, port->number); /* shutdown our bulk read */ - usb_unlink_urb (port->read_urb); + usb_kill_urb(port->read_urb); } -static int ir_write (struct usb_serial_port *port, int from_user, const unsigned char *buf, int count) +static int ir_write (struct usb_serial_port *port, const unsigned char *buf, int count) { unsigned char *transfer_buffer; int result; @@ -364,12 +359,7 @@ static int ir_write (struct usb_serial_port *port, int from_user, const unsigned *transfer_buffer = ir_xbof | ir_baud; ++transfer_buffer; - if (from_user) { - if (copy_from_user (transfer_buffer, buf, transfer_size)) - return -EFAULT; - } else { - memcpy (transfer_buffer, buf, transfer_size); - } + memcpy (transfer_buffer, buf, transfer_size); usb_fill_bulk_urb ( port->write_urb, @@ -404,7 +394,8 @@ static void ir_write_bulk_callback (struct urb *urb, struct pt_regs *regs) } usb_serial_debug_data ( - __FILE__, + debug, + &port->dev, __FUNCTION__, urb->actual_length, urb->transfer_buffer); @@ -439,7 +430,8 @@ static void ir_read_bulk_callback (struct urb *urb, struct pt_regs *regs) ir_baud = *data & 0x0f; usb_serial_debug_data ( - __FILE__, + debug, + &port->dev, __FUNCTION__, urb->actual_length, data); @@ -452,6 +444,10 @@ static void ir_read_bulk_callback (struct urb *urb, struct pt_regs *regs) */ tty = port->tty; + /* + * FIXME: must not do this in IRQ context, + * must honour TTY_DONT_FLIP + */ tty->ldisc.receive_buf( tty, data+1, @@ -614,10 +610,10 @@ MODULE_AUTHOR(DRIVER_AUTHOR); MODULE_DESCRIPTION(DRIVER_DESC); MODULE_LICENSE("GPL"); -MODULE_PARM(debug, "i"); +module_param(debug, bool, S_IRUGO | S_IWUSR); MODULE_PARM_DESC(debug, "Debug enabled or not"); -MODULE_PARM(xbof, "i"); +module_param(xbof, int, 0); MODULE_PARM_DESC(xbof, "Force specific number of XBOFs"); -MODULE_PARM(buffer_size, "i"); +module_param(buffer_size, int, 0); MODULE_PARM_DESC(buffer_size, "Size of the transfer buffers");