Hi, > On 25. 06. 21, 2:15, Lino Sanfilippo wrote: > >>> +static int pl011_rs485_config(struct uart_port *port, > >>> + struct serial_rs485 *rs485) > >>> +{ > >>> + struct uart_amba_port *uap = > >>> + container_of(port, struct uart_amba_port, port); > >>> + > >>> + /* pick sane settings if the user hasn't */ > >>> + if (!!(rs485->flags & SER_RS485_RTS_ON_SEND) == > >> > >> Why the !! in an if statement? > >> > >>> + !!(rs485->flags & SER_RS485_RTS_AFTER_SEND)) { > >> > >> Same here, why? > >> > > > > This was copied from serial8250_em485_config(). But I think we can simply use > > > > if (rs485->flags & SER_RS485_RTS_AFTER_SEND) > > rs485->flags &= ~SER_RS485_RTS_ON_SEND; > > else > > rs485->flags |= SER_RS485_RTS_ON_SEND; > > > > instead. I will adjust the code accordingly. > > This is different. You want to set ON_SEND when none is set. And unset > AFTER_SEND when both are set. In your code, when both are set, you leave > AFTER_SEND. > > regards, > -- > js > suse labs > Thats right, the logic has slightly changed. I thought this does not matter as long as we make sure that exactly one of both ON_SEND or AFTER_SEND is set. We can stick with the logic in serial8250_em485_config() (i.e. always set ON_SEND and delete AFTER_SEND in case of an invalid setting), but I think this will require more than the four lines that we have now (especially if we want to avoid the !!). Thanks, Lino