]> git.baikalelectronics.ru Git - kernel.git/commitdiff
serial: fsl_lpuart: RS485 RTS polariy is inverse
authorShenwei Wang <shenwei.wang@nxp.com>
Fri, 5 Aug 2022 14:45:29 +0000 (09:45 -0500)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Thu, 15 Sep 2022 10:04:50 +0000 (12:04 +0200)
commit a5c2a1f334d72c164505dc26abad3dd88ac87965 upstream.

The setting of RS485 RTS polarity is inverse in the current driver.

When the property of 'rs485-rts-active-low' is enabled in the dts node,
the RTS signal should be LOW during sending. Otherwise, if there is no
such a property, the RTS should be HIGH during sending.

Fixes: 108c7ba32a62 ("tty: serial: fsl_lpuart: Add support for RS-485")
Cc: stable <stable@kernel.org>
Signed-off-by: Nicolas Diaz <nicolas.diaz@nxp.com>
Signed-off-by: Shenwei Wang <shenwei.wang@nxp.com>
Link: https://lore.kernel.org/r/20220805144529.604856-1-shenwei.wang@nxp.com
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
drivers/tty/serial/fsl_lpuart.c

index 4bdc12908146ec339bbbc7b6e249c4350ccd4e72..5c44dc7be62f3e8ea9dfa9af48479d9f1aad8d01 100644 (file)
@@ -1277,9 +1277,9 @@ static int lpuart_config_rs485(struct uart_port *port,
                 * Note: UART is assumed to be active high.
                 */
                if (rs485->flags & SER_RS485_RTS_ON_SEND)
-                       modem &= ~UARTMODEM_TXRTSPOL;
-               else if (rs485->flags & SER_RS485_RTS_AFTER_SEND)
                        modem |= UARTMODEM_TXRTSPOL;
+               else if (rs485->flags & SER_RS485_RTS_AFTER_SEND)
+                       modem &= ~UARTMODEM_TXRTSPOL;
        }
 
        /* Store the new configuration */