Lines Matching +full:odd +full:- +full:parity
1 // SPDX-License-Identifier: GPL-2.0
8 * μPD78F0730 8-bit Single-Chip Microcontroller
9 * USB-to-Serial Conversion Software
10 * <https://www.renesas.com/en-eu/doc/DocumentServer/026/U19660EJ1V0AN00.pdf>
13 * - data bits: 7 or 8
14 * - stop bits: 1 or 2
15 * - parity: even, odd or none
16 * - flow control: none
17 * - baud rates: 0, 2400, 4800, 9600, 19200, 38400, 57600, 115200, 153600
18 * - signals: DTR, RTS and BREAK
32 { USB_DEVICE(0x0409, 0x0063) }, /* V850ESJX3-STICK */
34 { USB_DEVICE(0x064B, 0x7825) }, /* Analog Devices EVAL-ADXL362Z-DB */
49 /* Op-codes of control commands */
61 /* Stop-bit modes in UPD78F0730_CMD_LINE_CONTROL command */
66 /* Parity modes in UPD78F0730_CMD_LINE_CONTROL command */
131 struct usb_device *usbdev = port->serial->dev; in upd78f0730_send_ctl()
136 return -EINVAL; in upd78f0730_send_ctl()
140 return -ENOMEM; in upd78f0730_send_ctl()
149 struct device *dev = &port->dev; in upd78f0730_send_ctl()
155 res = -EIO; in upd78f0730_send_ctl()
169 return -ENOMEM; in upd78f0730_port_probe()
171 mutex_init(&private->lock); in upd78f0730_port_probe()
182 mutex_destroy(&private->lock); in upd78f0730_port_remove()
190 struct device *dev = tty->dev; in upd78f0730_tiocmget()
192 struct usb_serial_port *port = tty->driver_data; in upd78f0730_tiocmget()
198 mutex_lock(&private->lock); in upd78f0730_tiocmget()
199 signals = private->line_signals; in upd78f0730_tiocmget()
200 mutex_unlock(&private->lock); in upd78f0730_tiocmget()
205 dev_dbg(dev, "%s - res = %x\n", __func__, res); in upd78f0730_tiocmget()
213 struct device *dev = tty->dev; in upd78f0730_tiocmset()
214 struct usb_serial_port *port = tty->driver_data; in upd78f0730_tiocmset()
221 mutex_lock(&private->lock); in upd78f0730_tiocmset()
223 private->line_signals |= UPD78F0730_DTR; in upd78f0730_tiocmset()
224 dev_dbg(dev, "%s - set DTR\n", __func__); in upd78f0730_tiocmset()
227 private->line_signals |= UPD78F0730_RTS; in upd78f0730_tiocmset()
228 dev_dbg(dev, "%s - set RTS\n", __func__); in upd78f0730_tiocmset()
231 private->line_signals &= ~UPD78F0730_DTR; in upd78f0730_tiocmset()
232 dev_dbg(dev, "%s - clear DTR\n", __func__); in upd78f0730_tiocmset()
235 private->line_signals &= ~UPD78F0730_RTS; in upd78f0730_tiocmset()
236 dev_dbg(dev, "%s - clear RTS\n", __func__); in upd78f0730_tiocmset()
239 request.params = private->line_signals; in upd78f0730_tiocmset()
242 mutex_unlock(&private->lock); in upd78f0730_tiocmset()
249 struct device *dev = tty->dev; in upd78f0730_break_ctl()
251 struct usb_serial_port *port = tty->driver_data; in upd78f0730_break_ctl()
256 mutex_lock(&private->lock); in upd78f0730_break_ctl()
258 private->line_signals |= UPD78F0730_BREAK; in upd78f0730_break_ctl()
259 dev_dbg(dev, "%s - set BREAK\n", __func__); in upd78f0730_break_ctl()
261 private->line_signals &= ~UPD78F0730_BREAK; in upd78f0730_break_ctl()
262 dev_dbg(dev, "%s - clear BREAK\n", __func__); in upd78f0730_break_ctl()
265 request.params = private->line_signals; in upd78f0730_break_ctl()
268 mutex_unlock(&private->lock); in upd78f0730_break_ctl()
273 struct tty_struct *tty = port->port.tty; in upd78f0730_dtr_rts()
293 for (i = ARRAY_SIZE(supported) - 1; i >= 0; i--) { in upd78f0730_get_baud_rate()
308 struct device *dev = &port->dev; in upd78f0730_set_termios()
312 if (old_termios && !tty_termios_hw_change(&tty->termios, old_termios)) in upd78f0730_set_termios()
317 else if (old_termios && (old_termios->c_cflag & CBAUD) == B0) in upd78f0730_set_termios()
324 dev_dbg(dev, "%s - baud rate = %d\n", __func__, baud_rate); in upd78f0730_set_termios()
329 dev_dbg(dev, "%s - 7 data bits\n", __func__); in upd78f0730_set_termios()
332 tty->termios.c_cflag &= ~CSIZE; in upd78f0730_set_termios()
333 tty->termios.c_cflag |= CS8; in upd78f0730_set_termios()
338 dev_dbg(dev, "%s - 8 data bits\n", __func__); in upd78f0730_set_termios()
345 dev_dbg(dev, "%s - odd parity\n", __func__); in upd78f0730_set_termios()
348 dev_dbg(dev, "%s - even parity\n", __func__); in upd78f0730_set_termios()
352 tty->termios.c_cflag &= ~CMSPAR; in upd78f0730_set_termios()
353 dev_warn(dev, "MARK/SPACE parity is not supported\n"); in upd78f0730_set_termios()
357 dev_dbg(dev, "%s - no parity\n", __func__); in upd78f0730_set_termios()
362 dev_dbg(dev, "%s - 2 stop bits\n", __func__); in upd78f0730_set_termios()
365 dev_dbg(dev, "%s - 1 stop bit\n", __func__); in upd78f0730_set_termios()
369 tty->termios.c_cflag &= ~CRTSCTS; in upd78f0730_set_termios()
373 tty->termios.c_iflag &= ~(IXOFF | IXON); in upd78f0730_set_termios()
377 dev_dbg(dev, "%s - no flow control\n", __func__); in upd78f0730_set_termios()