mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git
synced 2024-10-14 12:37:32 +00:00
tty: max310x: Optionally enable rs485 on startup
UART port might be pre-configured with rs485 enabled flag at the time of the port starting up process. In this case we need to have the hardware rs485-related registers initialized in accordance with the rs485 flags and settings provided by the configs descriptor. Signed-off-by: Serge Semin <fancer.lancer@gmail.com> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
This commit is contained in:
parent
68f22c0c99
commit
2b9e6f0a40
1 changed files with 16 additions and 0 deletions
|
@ -1030,6 +1030,22 @@ static int max310x_startup(struct uart_port *port)
|
|||
max310x_port_update(port, MAX310X_MODE2_REG,
|
||||
MAX310X_MODE2_FIFORST_BIT, 0);
|
||||
|
||||
/* Configure mode1/mode2 to have rs485/rs232 enabled at startup */
|
||||
val = (clamp(port->rs485.delay_rts_before_send, 0U, 15U) << 4) |
|
||||
clamp(port->rs485.delay_rts_after_send, 0U, 15U);
|
||||
max310x_port_write(port, MAX310X_HDPIXDELAY_REG, val);
|
||||
|
||||
if (port->rs485.flags & SER_RS485_ENABLED) {
|
||||
max310x_port_update(port, MAX310X_MODE1_REG,
|
||||
MAX310X_MODE1_TRNSCVCTRL_BIT,
|
||||
MAX310X_MODE1_TRNSCVCTRL_BIT);
|
||||
|
||||
if (!(port->rs485.flags & SER_RS485_RX_DURING_TX))
|
||||
max310x_port_update(port, MAX310X_MODE2_REG,
|
||||
MAX310X_MODE2_ECHOSUPR_BIT,
|
||||
MAX310X_MODE2_ECHOSUPR_BIT);
|
||||
}
|
||||
|
||||
/* Configure flow control levels */
|
||||
/* Flow control halt level 96, resume level 48 */
|
||||
max310x_port_write(port, MAX310X_FLOWLVL_REG,
|
||||
|
|
Loading…
Reference in a new issue