diff options
author | Linus Torvalds <torvalds@woody.osdl.org> | 2006-12-21 00:01:06 -0800 |
---|---|---|
committer | Linus Torvalds <torvalds@woody.osdl.org> | 2006-12-21 00:01:06 -0800 |
commit | fb34d203d0b5ac1b8284973eb0db3fdff101fc5e (patch) | |
tree | d882cb10f1bb69f0058881df5dad6bd433cd28e5 /drivers/usb/serial/funsoft.c | |
parent | 5576d187a0eef3bb3c47500eaab33fb5485bc352 (diff) | |
parent | c3052905033f8785bcb2c71d5ce40b84259e3a80 (diff) |
Merge master.kernel.org:/pub/scm/linux/kernel/git/gregkh/usb-2.6
* master.kernel.org:/pub/scm/linux/kernel/git/gregkh/usb-2.6: (34 commits)
USB Storage: remove duplicate Nokia entry in unusual_devs.h
[PATCH] bluetooth: add support for another Kensington dongle
[PATCH] usb serial: add support for Novatel S720/U720 CDMA/EV-DO modems
[PATCH] USB: Nokia E70 is an unusual device
USB: fix to usbfs_snoop logging of user defined control urbs
USB: at91_udc: Additional checks
USB: at91_udc: Cleanup variables after failure in usb_gadget_register_driver()
USB: at91_udc: allow drivers that support high speed
USB: u132-hcd/ftdi-elan: add support for Option GT 3G Quad card
USB: at91_udc, misc fixes
USB: at91 udc, support at91sam926x addresses
USB: OHCI support for PNX8550
USB: ohci handles hardware faults during root port resets
USB: ohci at91 warning fix
USB: ohci whitespace/comment fixups
USB: MAINTAINERS update, EHCI and OHCI
USB: gadget driver unbind() is optional; section fixes; misc
UHCI: module parameter to ignore overcurrent changes
USB: Nokia E70 is an unusual device
USB AUERSWALD: replace kmalloc+memset with kzalloc
...
Diffstat (limited to 'drivers/usb/serial/funsoft.c')
-rw-r--r-- | drivers/usb/serial/funsoft.c | 27 |
1 files changed, 27 insertions, 0 deletions
diff --git a/drivers/usb/serial/funsoft.c b/drivers/usb/serial/funsoft.c index 77b977206a8..d3be9214c7c 100644 --- a/drivers/usb/serial/funsoft.c +++ b/drivers/usb/serial/funsoft.c @@ -14,6 +14,9 @@ #include <linux/module.h> #include <linux/usb.h> #include <linux/usb/serial.h> +#include <asm/uaccess.h> + +static int debug; static struct usb_device_id id_table [] = { { USB_DEVICE(0x1404, 0xcddc) }, @@ -21,6 +24,26 @@ static struct usb_device_id id_table [] = { }; MODULE_DEVICE_TABLE(usb, id_table); +static int funsoft_ioctl(struct usb_serial_port *port, struct file *file, + unsigned int cmd, unsigned long arg) +{ + struct termios t; + + dbg("%s - port %d, cmd 0x%04x", __FUNCTION__, port->number, cmd); + + if (cmd == TCSETSF) { + if (user_termios_to_kernel_termios(&t, (void __user *)arg)) + return -EFAULT; + + dbg("%s - iflag:%x oflag:%x cflag:%x lflag:%x", __FUNCTION__, + t.c_iflag, t.c_oflag, t.c_cflag, t.c_lflag); + + if (!(t.c_lflag & ICANON)) + return -EINVAL; + } + return -ENOIOCTLCMD; +} + static struct usb_driver funsoft_driver = { .name = "funsoft", .probe = usb_serial_probe, @@ -39,6 +62,7 @@ static struct usb_serial_driver funsoft_device = { .num_bulk_in = NUM_DONT_CARE, .num_bulk_out = NUM_DONT_CARE, .num_ports = 1, + .ioctl = funsoft_ioctl, }; static int __init funsoft_init(void) @@ -63,3 +87,6 @@ static void __exit funsoft_exit(void) module_init(funsoft_init); module_exit(funsoft_exit); MODULE_LICENSE("GPL"); + +module_param(debug, bool, S_IRUGO | S_IWUSR); +MODULE_PARM_DESC(debug, "Debug enabled or not"); |