Lines Matching +full:auto +full:- +full:baud
1 // SPDX-License-Identifier: GPL-2.0
5 * Copyright (C) 2014-2016 Ricardo Ribalda, Qtechnology A/S
104 outb(reg, pdata->base_port + ADDR_PORT); in sio_read_reg()
105 return inb(pdata->base_port + DATA_PORT); in sio_read_reg()
110 outb(reg, pdata->base_port + ADDR_PORT); in sio_write_reg()
111 outb(data, pdata->base_port + DATA_PORT); in sio_write_reg()
126 return -EBUSY; in fintek_8250_enter_key()
148 return -ENODEV; in fintek_8250_check_id()
151 return -ENODEV; in fintek_8250_check_id()
165 return -ENODEV; in fintek_8250_check_id()
168 pdata->pid = chip; in fintek_8250_check_id()
175 switch (pdata->pid) { in fintek_8250_get_ldn_range()
191 return -ENODEV; in fintek_8250_get_ldn_range()
198 struct fintek_8250 *pdata = port->private_data; in fintek_8250_rs485_config()
201 return -EINVAL; in fintek_8250_rs485_config()
204 if (rs485->flags & SER_RS485_ENABLED) { in fintek_8250_rs485_config()
206 if (!(rs485->flags & SER_RS485_RTS_ON_SEND) == in fintek_8250_rs485_config()
207 !(rs485->flags & SER_RS485_RTS_AFTER_SEND)) in fintek_8250_rs485_config()
208 return -EINVAL; in fintek_8250_rs485_config()
212 if (rs485->delay_rts_before_send) { in fintek_8250_rs485_config()
213 rs485->delay_rts_before_send = 1; in fintek_8250_rs485_config()
217 if (rs485->delay_rts_after_send) { in fintek_8250_rs485_config()
218 rs485->delay_rts_after_send = 1; in fintek_8250_rs485_config()
222 if (rs485->flags & SER_RS485_RTS_ON_SEND) in fintek_8250_rs485_config()
225 if (fintek_8250_enter_key(pdata->base_port, pdata->key)) in fintek_8250_rs485_config()
226 return -EBUSY; in fintek_8250_rs485_config()
228 sio_write_reg(pdata, LDN, pdata->index); in fintek_8250_rs485_config()
230 fintek_8250_exit_key(pdata->base_port); in fintek_8250_rs485_config()
237 sio_write_reg(pdata, LDN, pdata->index); in fintek_8250_set_irq_mode()
239 switch (pdata->pid) { in fintek_8250_set_irq_mode()
265 switch (pdata->pid) { in fintek_8250_set_max_fifo()
283 struct fintek_8250 *pdata = port->private_data; in fintek_8250_set_termios()
284 unsigned int baud = tty_termios_baud_rate(termios); in fintek_8250_set_termios() local
293 * We'll use serial8250_do_set_termios() for baud = 0, otherwise It'll in fintek_8250_set_termios()
294 * crash on baudrate_table[i] % baud with "division by zero". in fintek_8250_set_termios()
296 if (!baud) in fintek_8250_set_termios()
299 switch (pdata->pid) { in fintek_8250_set_termios()
309 dev_warn(port->dev, in fintek_8250_set_termios()
311 __func__, pdata->pid); in fintek_8250_set_termios()
316 if (baud > baudrate_table[i] || baudrate_table[i] % baud != 0) in fintek_8250_set_termios()
319 if (port->uartclk == baudrate_table[i] * 16) in fintek_8250_set_termios()
322 if (fintek_8250_enter_key(pdata->base_port, pdata->key)) in fintek_8250_set_termios()
325 port->uartclk = baudrate_table[i] * 16; in fintek_8250_set_termios()
327 sio_write_reg(pdata, LDN, pdata->index); in fintek_8250_set_termios()
331 fintek_8250_exit_key(pdata->base_port); in fintek_8250_set_termios()
336 baud = tty_termios_baud_rate(old); in fintek_8250_set_termios()
337 tty_termios_encode_baud_rate(termios, baud, baud); in fintek_8250_set_termios()
346 struct fintek_8250 *pdata = uart->port.private_data; in fintek_8250_set_termios_handler()
348 switch (pdata->pid) { in fintek_8250_set_termios_handler()
352 uart->port.set_termios = fintek_8250_set_termios; in fintek_8250_set_termios_handler()
371 pdata->base_port = addr[i]; in probe_setup_port()
372 pdata->key = keys[j]; in probe_setup_port()
388 if (aux != uart->port.iobase) in probe_setup_port()
391 pdata->index = k; in probe_setup_port()
393 irq_data = irq_get_irq_data(uart->port.irq); in probe_setup_port()
410 return -ENODEV; in probe_setup_port()
426 struct fintek_8250 *pdata = uart->port.private_data; in fintek_8250_set_rs485_handler()
428 switch (pdata->pid) { in fintek_8250_set_rs485_handler()
434 uart->port.rs485_config = fintek_8250_rs485_config; in fintek_8250_set_rs485_handler()
435 if (!pdata->index) in fintek_8250_set_rs485_handler()
436 uart->port.rs485_supported = fintek_8250_rs485_supported_port0; in fintek_8250_set_rs485_handler()
438 uart->port.rs485_supported = fintek_8250_rs485_supported; in fintek_8250_set_rs485_handler()
441 default: /* No RS485 Auto direction functional */ in fintek_8250_set_rs485_handler()
452 return -ENODEV; in fintek_8250_probe()
454 pdata = devm_kzalloc(uart->port.dev, sizeof(*pdata), GFP_KERNEL); in fintek_8250_probe()
456 return -ENOMEM; in fintek_8250_probe()
459 uart->port.private_data = pdata; in fintek_8250_probe()