Commit bc2be239 authored by Fabio Estevam's avatar Fabio Estevam Committed by Greg Kroah-Hartman

serial: imx: Fix the CTS_B polarity in RS485 mode

When userspace passes the SER_RS485_RTS_ON_SEND flag it means that the
CTS_B pin should go to logic level high before the transmission begins.

CTS_B goes to logic level high when both CTSC and CTS bits are cleared.

When userspace passes the SER_RS485_RTS_AFTER_SEND flag it means that the
CTS_B pin should go to logic level low after the transmission finishes.

CTS_B goes to logic level low when CTSC bit is cleared and CTS bit is set.

So fix the CTS_B polarity logic.
Signed-off-by: default avatarFabio Estevam <fabio.estevam@nxp.com>
Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
parent 1a613626
...@@ -336,15 +336,15 @@ static void imx_port_ucrs_restore(struct uart_port *port, ...@@ -336,15 +336,15 @@ static void imx_port_ucrs_restore(struct uart_port *port,
static void imx_port_rts_active(struct imx_port *sport, unsigned long *ucr2) static void imx_port_rts_active(struct imx_port *sport, unsigned long *ucr2)
{ {
*ucr2 &= ~UCR2_CTSC; *ucr2 &= ~(UCR2_CTSC | UCR2_CTS);
*ucr2 |= UCR2_CTS;
mctrl_gpio_set(sport->gpios, sport->port.mctrl | TIOCM_RTS); mctrl_gpio_set(sport->gpios, sport->port.mctrl | TIOCM_RTS);
} }
static void imx_port_rts_inactive(struct imx_port *sport, unsigned long *ucr2) static void imx_port_rts_inactive(struct imx_port *sport, unsigned long *ucr2)
{ {
*ucr2 &= ~(UCR2_CTSC | UCR2_CTS); *ucr2 &= ~UCR2_CTSC;
*ucr2 |= UCR2_CTS;
mctrl_gpio_set(sport->gpios, sport->port.mctrl & ~TIOCM_RTS); mctrl_gpio_set(sport->gpios, sport->port.mctrl & ~TIOCM_RTS);
} }
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment