Re: [PATCH 1/4] serial: 8250: Copy em485 from port to real port.

From: Giulio Benetti
Date: Thu Jun 07 2018 - 08:43:48 EST


Il 07/06/2018 09:03, Matwey V. Kornilov ha scritto:
2018-06-06 22:15 GMT+03:00 Giulio Benetti <giulio.benetti@xxxxxxxxxxxxxxxx>:
Il 06/06/2018 20:55, Matwey V. Kornilov ha scritto:

2018-06-06 16:11 GMT+03:00 Andy Shevchenko
<andriy.shevchenko@xxxxxxxxxxxxxxx>:

On Wed, 2018-06-06 at 14:15 +0200, Giulio Benetti wrote:

Il 06/06/2018 13:56, Andy Shevchenko ha scritto:

On Wed, 2018-06-06 at 11:49 +0200, Giulio Benetti wrote:

em485 gets lost during

Copy em485 to final uart port.


Is it needed at all?

The individual driver decides either to use software emulation (and
calls explicitly serial8250_em485_init() for that) or do HW assisted
stuff.


In 8250_dw.c, during probe(), I need to call dw8250_rs485_config()
against local struct uart_8250_port uart = {};
Inside serial8250_register_8250_port() not all uart fields are
copied(em485 too).
So after probe, em485 is NULL.

Another way could be to call dw8250_rs485_config() against real uart
port, after calling serial8250_register_8250_port(),
would it make sense?


Look at OMAP case closely. They have a callback to configure RS485 which
is called in uart_set_rs485_config() which is called whenever user
space does TIOCGRS485 IOCTL.

So, it's completely driven by user space which makes sense by my
opinion.


AFAIU, Giulio wants to add support for rs485-enabled-at-boot-time
device tree option (see bindings/serial/rs485.txt for reference).


Yes, I want to add support for "rs485-enabled-at-boot-time" property,
maybe I had to write better commit log and a cover letter. Sorry.

I suppose it is only important for use-case when rs485 used as slave
(peripheral role).


It's important also for master, because RTS, if RTS_AFTER_SEND is set,
remains not asserted(trasnmission) until userspace opens that serial port.


And it makes no sense, because how are you going to transmit and
receive not opening the port and not running an application?
It is master who transmits the data first. So, before all systems
going to work you have to open the port from userspace.

In case of slave this of course makes sense.


Yes it's true, my mistake, it works as master, even if bus will be held busy by master until port is open.

As slave it keeps bus busy.

IMHO it would be the best to have rs485 free until port is open,
this also reflects the reality:
when rs485 ON and RTS_AFTER_SEND is set, if port is closed or open without transmitting RTS must be asserted(pin low, rx mode).
Agree?

--
Giulio Benetti
CTO

MICRONOVA SRL
Sede: Via A. Niedda 3 - 35010 Vigonza (PD)
Tel. 049/8931563 - Fax 049/8931346
Cod.Fiscale - P.IVA 02663420285
Capitale Sociale â 26.000 i.v.
Iscritta al Reg. Imprese di Padova N. 02663420285
Numero R.E.A. 258642