Commit 582aa136 authored by Greg Kroah-Hartman's avatar Greg Kroah-Hartman

[PATCH] USB: usb-serial core: add support for new tty tiocmget and tiocmset functions.

parent a899637c
...@@ -785,6 +785,51 @@ static int serial_read_proc (char *page, char **start, off_t off, int count, int ...@@ -785,6 +785,51 @@ static int serial_read_proc (char *page, char **start, off_t off, int count, int
return ((count < begin+length-off) ? count : begin+length-off); return ((count < begin+length-off) ? count : begin+length-off);
} }
static int serial_tiocmget (struct tty_struct *tty, struct file *file)
{
struct usb_serial_port *port = (struct usb_serial_port *) tty->driver_data;
struct usb_serial *serial = get_usb_serial (port, __FUNCTION__);
if (!serial)
goto exit;
dbg("%s - port %d", __FUNCTION__, port->number);
if (!port->open_count) {
dbg("%s - port not open", __FUNCTION__);
goto exit;
}
if (serial->type->tiocmget)
return serial->type->tiocmget(port, file);
exit:
return -EINVAL;
}
static int serial_tiocmset (struct tty_struct *tty, struct file *file,
unsigned int set, unsigned int clear)
{
struct usb_serial_port *port = (struct usb_serial_port *) tty->driver_data;
struct usb_serial *serial = get_usb_serial (port, __FUNCTION__);
if (!serial)
goto exit;
dbg("%s - port %d", __FUNCTION__, port->number);
if (!port->open_count) {
dbg("%s - port not open", __FUNCTION__);
goto exit;
}
if (serial->type->tiocmset)
return serial->type->tiocmset(port, file, set, clear);
exit:
return -EINVAL;
}
void usb_serial_port_softint(void *private) void usb_serial_port_softint(void *private)
{ {
struct usb_serial_port *port = (struct usb_serial_port *)private; struct usb_serial_port *port = (struct usb_serial_port *)private;
...@@ -1286,6 +1331,8 @@ struct tty_driver usb_serial_tty_driver = { ...@@ -1286,6 +1331,8 @@ struct tty_driver usb_serial_tty_driver = {
.break_ctl = serial_break, .break_ctl = serial_break,
.chars_in_buffer = serial_chars_in_buffer, .chars_in_buffer = serial_chars_in_buffer,
.read_proc = serial_read_proc, .read_proc = serial_read_proc,
.tiocmget = serial_tiocmget,
.tiocmset = serial_tiocmset,
}; };
......
...@@ -251,6 +251,8 @@ struct usb_serial_device_type { ...@@ -251,6 +251,8 @@ struct usb_serial_device_type {
int (*chars_in_buffer) (struct usb_serial_port *port); int (*chars_in_buffer) (struct usb_serial_port *port);
void (*throttle) (struct usb_serial_port *port); void (*throttle) (struct usb_serial_port *port);
void (*unthrottle) (struct usb_serial_port *port); void (*unthrottle) (struct usb_serial_port *port);
int (*tiocmget) (struct usb_serial_port *port, struct file *file);
int (*tiocmset) (struct usb_serial_port *port, struct file *file, unsigned int set, unsigned int clear);
void (*read_int_callback)(struct urb *urb, struct pt_regs *regs); void (*read_int_callback)(struct urb *urb, struct pt_regs *regs);
void (*read_bulk_callback)(struct urb *urb, struct pt_regs *regs); void (*read_bulk_callback)(struct urb *urb, struct pt_regs *regs);
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment