Re: [PATCH v8 3/3] tty: 8250_omap: Use software emulated RS485 direction control

From: Peter Hurley
Date: Thu Feb 18 2016 - 11:50:18 EST


On 02/18/2016 01:46 AM, ÐÐÑÑÑ ÐÐÑÐÐÐÐ wrote:
> 2016-02-18 10:18 GMT+03:00 ÐÐÑÑÑ ÐÐÑÐÐÐÐ <torso.nafi@xxxxxxxxx>:
>> Also, forgot to mention that if serial8250_em485_init is called not
>> upon uart startup but elsewhere (upon port register for example), and
>> em485 is set, serial8250_do_startup should call
>> serial8250_em485_rts_after_send, or else RTS might be in wrong state
>> whenever the port device is opened, making it impossible to receive
>> data through RTS-controlled RS232<->RS485 hardware converters.
>
> Just found out that it doesn't help. Actually, it is the behavior of
> tty_open function to call tty_port_block_til_ready after startup, and
> of the latter - to set RTS via ioctl if baud is not zero - both of
> which cannot be overriden within the scope of the 8250 framework. The
> reason this works in legacy omap_serial is that my GPIO which is used
> to emulate RTS is not tied to mctrl there, so the call of
> tty_port_block_til_ready does not affect its state.
>
> Therefore, a check for SER_RS485_ENABLED needs to be introduced to
> tty_port_block_til_ready.

No, that's not the way.

First, there's plenty of driver hooks to properly manage the RTS level
for rs485.
Second, how are you running GPIO rts with the omap8250 driver?