On Sat, Jan 07, 2017 at 07:38:31PM -0200, Fabio Estevam wrote: > From: Fabio Estevam <fabio.estevam@xxxxxxx> > > On a board that needs to drive RTS GPIO high in order to enable the > transmissionof a RS485 transceiver the following description is passed > in the devide tree: > > &uart4 { > pinctrl-names = "default"; > pinctrl-0 = <&pinctrl_uart4>; > rts-gpios = <&gpio6 2 GPIO_ACTIVE_HIGH>; > status = "okay"; > }; > > However the polarity observed on the oscilloscope is inverted. > > Change the mctrl_gpio_set() logic so that the RTS gpio pin can > behave correctly. > > Signed-off-by: Fabio Estevam <fabio.estevam@xxxxxxx> > --- > Hi, > > Marking as RFC as I don't know if this is the proper way to fix it. > > Is my device tree description correct assuming I need RTS pin going to > high to enable the TXEN pin of the RS485 transceiver? > > Thanks > > drivers/tty/serial/imx.c | 4 ++-- > 1 file changed, 2 insertions(+), 2 deletions(-) > > diff --git a/drivers/tty/serial/imx.c b/drivers/tty/serial/imx.c > index 33fcc84..451e50f 100644 > --- a/drivers/tty/serial/imx.c > +++ b/drivers/tty/serial/imx.c > @@ -339,14 +339,14 @@ static void imx_port_rts_active(struct imx_port *sport, unsigned long *ucr2) > *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); > } > > static void imx_port_rts_inactive(struct imx_port *sport, unsigned long *ucr2) > { > *ucr2 &= ~(UCR2_CTSC | 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_auto(struct imx_port *sport, unsigned long *ucr2) > -- > 2.7.4 > Tested-by: Clemens Gruber <clemens.gruber@xxxxxxxxxxxx> Regards, Clemens -- To unsubscribe from this list: send the line "unsubscribe linux-serial" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html