static void sierra_set_termios(struct tty_struct *tty, struct usb_serial_port *port, struct ktermios *old_termios) { dev_dbg(&port->dev, "%s", __func__); tty_termios_copy_hw(tty->termios, old_termios); sierra_send_setup(tty, port); }
static void sierra_close(struct tty_struct *tty, struct usb_serial_port *port, struct file *filp) { int i; struct usb_serial *serial = port->serial; struct sierra_port_private *portdata; dev_dbg(&port->dev, "%s", __func__); portdata = usb_get_serial_port_data(port); portdata->rts_state = 0; portdata->dtr_state = 0; if (serial->dev) { mutex_lock(&serial->disc_mutex); if (!serial->disconnected) sierra_send_setup(tty, port); mutex_unlock(&serial->disc_mutex); /* Stop reading/writing urbs */ for (i = 0; i < N_IN_URB; i++) usb_kill_urb(portdata->in_urbs[i]); } usb_kill_urb(port->interrupt_in_urb); port->port.tty = NULL; /* FIXME */ }
static void sierra_set_termios(struct usb_serial_port *port, struct ktermios *old_termios) { dbg("%s", __FUNCTION__); tty_termios_copy_hw(port->tty->termios, old_termios); sierra_send_setup(port); }
static void sierra_set_termios(struct usb_serial_port *port, struct termios *old_termios) { dbg("%s", __FUNCTION__); sierra_send_setup(port); }
static void sierra_dtr_rts(struct usb_serial_port *port, int on) { struct sierra_port_private *portdata; portdata = usb_get_serial_port_data(port); portdata->rts_state = on; portdata->dtr_state = on; sierra_send_setup(port); }
static int sierra_open(struct tty_struct *tty, struct usb_serial_port *port, struct file *filp) { struct sierra_port_private *portdata; struct usb_serial *serial = port->serial; int i; struct urb *urb; int result; portdata = usb_get_serial_port_data(port); dev_dbg(&port->dev, "%s", __func__); /* Set some sane defaults */ portdata->rts_state = 1; portdata->dtr_state = 1; /* Reset low level data toggle and start reading from endpoints */ for (i = 0; i < N_IN_URB; i++) { urb = portdata->in_urbs[i]; if (!urb) continue; if (urb->dev != serial->dev) { dev_dbg(&port->dev, "%s: dev %p != %p", __func__, urb->dev, serial->dev); continue; } /* * make sure endpoint data toggle is synchronized with the * device */ usb_clear_halt(urb->dev, urb->pipe); result = usb_submit_urb(urb, GFP_KERNEL); if (result) { dev_err(&port->dev, "submit urb %d failed (%d) %d\n", i, result, urb->transfer_buffer_length); } } if (tty) tty->low_latency = 1; sierra_send_setup(tty, port); /* start up the interrupt endpoint if we have one */ if (port->interrupt_in_urb) { result = usb_submit_urb(port->interrupt_in_urb, GFP_KERNEL); if (result) dev_err(&port->dev, "submit irq_in urb failed %d\n", result); } return 0; }
static int sierra_tiocmset(struct usb_serial_port *port, struct file *file, unsigned int set, unsigned int clear) { struct sierra_port_private *portdata; portdata = usb_get_serial_port_data(port); if (set & TIOCM_RTS) portdata->rts_state = 1; if (set & TIOCM_DTR) portdata->dtr_state = 1; if (clear & TIOCM_RTS) portdata->rts_state = 0; if (clear & TIOCM_DTR) portdata->dtr_state = 0; return sierra_send_setup(port); }
static void sierra_close(struct usb_serial_port *port, struct file *filp) { int i; struct usb_serial *serial = port->serial; struct sierra_port_private *portdata; dbg("%s", __FUNCTION__); portdata = usb_get_serial_port_data(port); portdata->rts_state = 0; portdata->dtr_state = 0; if (serial->dev) { sierra_send_setup(port); /* Stop reading/writing urbs */ for (i = 0; i < N_IN_URB; i++) usb_kill_urb(portdata->in_urbs[i]); } usb_kill_urb(port->interrupt_in_urb); port->tty = NULL; }