On 02/18/2016 01:46 AM, Ильяс Гасанов wrote: > 2016-02-18 10:18 GMT+03:00 Ильяс Гасанов <torso.n...@gmail.com>: >> 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?