Lines Matching +full:serial +full:- +full:out

1 // SPDX-License-Identifier: GPL-2.0
3 * usb-serial driver for Quatech SSU-100
15 #include <linux/serial.h>
17 #include <linux/usb/serial.h>
49 #define DRIVER_DESC "Quatech SSU-100 USB to Serial Driver"
91 ret = -EIO; in ssu100_getdevice()
109 ret = -EIO; in ssu100_getregister()
140 dev_dbg(&dev->dev, "%s - DTR|RTS not being set|cleared\n", __func__); in update_mctrl()
153 dev_dbg(&dev->dev, "%s Error from MODEM_CTRL urb\n", __func__); in update_mctrl()
165 return -ENOMEM; in ssu100_initdevice()
169 dev_dbg(&dev->dev, "%s - get_device failed %i\n", __func__, result); in ssu100_initdevice()
170 goto out; in ssu100_initdevice()
177 dev_dbg(&dev->dev, "%s - setdevice failed %i\n", __func__, result); in ssu100_initdevice()
178 goto out; in ssu100_initdevice()
183 dev_dbg(&dev->dev, "%s - set prebuffer level failed %i\n", __func__, result); in ssu100_initdevice()
184 goto out; in ssu100_initdevice()
189 dev_dbg(&dev->dev, "%s - set ATFprebuffer level failed %i\n", __func__, result); in ssu100_initdevice()
190 goto out; in ssu100_initdevice()
195 dev_dbg(&dev->dev, "%s - get_device failed %i\n", __func__, result); in ssu100_initdevice()
196 goto out; in ssu100_initdevice()
206 dev_dbg(&dev->dev, "%s - setdevice failed %i\n", __func__, result); in ssu100_initdevice()
207 goto out; in ssu100_initdevice()
210 out: kfree(data); in ssu100_initdevice()
220 struct usb_device *dev = port->serial->dev; in ssu100_set_termios()
221 struct ktermios *termios = &tty->termios; in ssu100_set_termios()
223 unsigned int cflag = termios->c_cflag; in ssu100_set_termios()
240 dev_dbg(&port->dev, "%s - got baud = %d\n", __func__, baud); in ssu100_set_termios()
252 dev_dbg(&port->dev, "%s - set uart failed\n", __func__); in ssu100_set_termios()
261 dev_dbg(&port->dev, "%s - set HW flow control failed\n", __func__); in ssu100_set_termios()
273 dev_dbg(&port->dev, "%s - set SW flow control failed\n", __func__); in ssu100_set_termios()
280 struct usb_device *dev = port->serial->dev; in ssu100_open()
288 return -ENOMEM; in ssu100_open()
295 dev_dbg(&port->dev, "%s - open failed %i\n", __func__, result); in ssu100_open()
297 result = -EIO; in ssu100_open()
302 spin_lock_irqsave(&priv->status_lock, flags); in ssu100_open()
303 priv->shadowLSR = data[0]; in ssu100_open()
304 priv->shadowMSR = data[1]; in ssu100_open()
305 spin_unlock_irqrestore(&priv->status_lock, flags); in ssu100_open()
312 dev_dbg(&port->dev, "%s - set uart failed\n", __func__); in ssu100_open()
315 ssu100_set_termios(tty, port, &tty->termios); in ssu100_open()
320 static int ssu100_attach(struct usb_serial *serial) in ssu100_attach() argument
322 return ssu100_initdevice(serial->dev); in ssu100_attach()
331 return -ENOMEM; in ssu100_port_probe()
333 spin_lock_init(&priv->status_lock); in ssu100_port_probe()
350 struct usb_serial_port *port = tty->driver_data; in ssu100_tiocmget()
351 struct usb_device *dev = port->serial->dev; in ssu100_tiocmget()
357 return -ENOMEM; in ssu100_tiocmget()
382 struct usb_serial_port *port = tty->driver_data; in ssu100_tiocmset()
383 struct usb_device *dev = port->serial->dev; in ssu100_tiocmset()
390 struct usb_device *dev = port->serial->dev; in ssu100_dtr_rts()
395 dev_err(&port->dev, "error from flowcontrol urb\n"); in ssu100_dtr_rts()
409 spin_lock_irqsave(&priv->status_lock, flags); in ssu100_update_msr()
410 priv->shadowMSR = msr; in ssu100_update_msr()
411 spin_unlock_irqrestore(&priv->status_lock, flags); in ssu100_update_msr()
416 port->icount.cts++; in ssu100_update_msr()
418 port->icount.dsr++; in ssu100_update_msr()
420 port->icount.dcd++; in ssu100_update_msr()
422 port->icount.rng++; in ssu100_update_msr()
423 wake_up_interruptible(&port->port.delta_msr_wait); in ssu100_update_msr()
433 spin_lock_irqsave(&priv->status_lock, flags); in ssu100_update_lsr()
434 priv->shadowLSR = lsr; in ssu100_update_lsr()
435 spin_unlock_irqrestore(&priv->status_lock, flags); in ssu100_update_lsr()
442 port->icount.brk++; in ssu100_update_lsr()
447 port->icount.parity++; in ssu100_update_lsr()
452 port->icount.frame++; in ssu100_update_lsr()
457 port->icount.overrun++; in ssu100_update_lsr()
458 tty_insert_flip_char(&port->port, 0, TTY_OVERRUN); in ssu100_update_lsr()
466 struct usb_serial_port *port = urb->context; in ssu100_process_read_urb()
467 char *packet = urb->transfer_buffer; in ssu100_process_read_urb()
469 u32 len = urb->actual_length; in ssu100_process_read_urb()
481 len -= 4; in ssu100_process_read_urb()
489 if (port->sysrq) { in ssu100_process_read_urb()
492 tty_insert_flip_char(&port->port, *ch, flag); in ssu100_process_read_urb()
495 tty_insert_flip_string_fixed_flag(&port->port, ch, flag, len); in ssu100_process_read_urb()
498 tty_flip_buffer_push(&port->port); in ssu100_process_read_urb()