On Tue, Mar 31, 2015 at 07:37:13PM +0200, moorray3@xxxxx wrote: > From: Jakub Kicinski <kubakici@xxxxx> > > Hardware is capable of inverting RTS signal when working > in RS-485 mode. Expose this functionality to user space. > Relay on a matching combination of standard flags > (SER_RS485_RTS_ON_SEND and SER_RS485_RTS_AFTER_SEND) to > detect when user space is requesting inverted RTS mode. > > Signed-off-by: Jakub Kicinski <kubakici@xxxxx> > --- > v2: print a warning instead of returning -EINVAL to avoid > breaking existing apps > --- > drivers/tty/serial/sc16is7xx.c | 33 ++++++++++++++++++++++++--------- > 1 file changed, 24 insertions(+), 9 deletions(-) > > diff --git a/drivers/tty/serial/sc16is7xx.c b/drivers/tty/serial/sc16is7xx.c > index 36b3c266925d..964453a3cb4c 100644 > --- a/drivers/tty/serial/sc16is7xx.c > +++ b/drivers/tty/serial/sc16is7xx.c > @@ -829,16 +829,31 @@ static void sc16is7xx_set_termios(struct uart_port *port, > } > > static int sc16is7xx_config_rs485(struct uart_port *port, > - struct serial_rs485 *rs485) > + struct serial_rs485 *rs485) > { > - if (port->rs485.flags & SER_RS485_ENABLED) > - sc16is7xx_port_update(port, SC16IS7XX_EFCR_REG, > - SC16IS7XX_EFCR_AUTO_RS485_BIT, > - SC16IS7XX_EFCR_AUTO_RS485_BIT); > - else > - sc16is7xx_port_update(port, SC16IS7XX_EFCR_REG, > - SC16IS7XX_EFCR_AUTO_RS485_BIT, > - 0); > + const u32 mask = SC16IS7XX_EFCR_AUTO_RS485_BIT | > + SC16IS7XX_EFCR_RTS_INVERT_BIT; > + u32 efcr = 0; > + > + if (rs485->flags & SER_RS485_ENABLED) { > + bool rts_during_rx, rts_during_tx; > + > + rts_during_rx = rs485->flags & SER_RS485_RTS_AFTER_SEND; > + rts_during_tx = rs485->flags & SER_RS485_RTS_ON_SEND; > + > + efcr |= SC16IS7XX_EFCR_AUTO_RS485_BIT; > + > + if (!rts_during_rx && rts_during_tx) > + /* default */; > + else if (rts_during_rx && !rts_during_tx) > + efcr |= SC16IS7XX_EFCR_RTS_INVERT_BIT; > + else > + dev_warn(port->dev, > + "unsupported RTS signalling selected\n"); dev_err()? What is a user to do if they get this message? Is there anything they should do differently that you should tell them about? thanks, greg k-h -- 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