Subject: Re: [PATCH net-next 09/12] ARM: dts: r9a06g032: describe MII converter

From: Clément Léger <[email-masked]>
Date: Tue, 19 Apr 2022 11:03:28 +0200

Le Sat, 16 Apr 2022 15:48:51 +0200,
Andrew Lunn <[email-masked]> a écrit :

> On Fri, Apr 15, 2022 at 06:45:41PM +0200, Clément Léger wrote:
> > Le Fri, 15 Apr 2022 18:19:46 +0200,
> > Andrew Lunn <[email-masked]> a écrit :
> >   
> > > > I think it would be good to modify it like this:
> > > > 
> > > > eth-miic@44030000 {
> > > >     ...
> > > >   converters {
> > > >     mii_conv0: mii-conv@0 {
> > > >       // Even if useless, maybe keeping it for the sake of coherency
> > > >       renesas,miic-input = <MIIC_GMAC1>;
> > > >       reg = <0>;
> > > >     };    
> > > 
> > > This is not a 'bus', so using reg, and @0, etc is i think wrong.  You
> > > just have a collection of properties.  
> > 
> > Agreed, but this is the same thing that is done for DSA ports (at least
> > I think). It uses reg which describe the port number, this is not a
> > real bus per se, it only refer to port indices.  
> 
> True. That is an old binding, before a lot of good practices were
> enforced. I'm not sure it would be accepted today.
> 
> I suggest you make a proposal and see what the DT Maintainers say.

Acked.

> 
> > But if you think this should not be done like this, what do you
> > propose then ? These nodes are also reference from "pcs-handle"
> > properties in switch to retrieve the PCS.  
> 
> This i was not thinking about. Make this clear in the binding
> documentation for what you propose.
> 
> Humm, this last point just gave me an idea. How are you representing
> the PCS in DT? Are they memory mapped? So you have a nodes something
> like:
> 
> eth-pcs-conv1@44040100 {
> 	compatible = "acm-inc,pcs"
> }
> 
> eth-pcs-conv2@44040200 {
> 	compatible = "acm-inc,pcs"
> }

That is a good idea since the converter are indeed (partly) memory
mapped, but the hardware guys decided that it was a good idea to share
some registers. Amongst shared registers, we have the reset for each
converter and the muxing control which as stated before is contained in
a single register.

> 
> The MAC node than has a pcs-handle pointing to one of these nodes?
> 
> You implicitly have the information you need to configure the MII
> muxes here. The information is a lot more distributed, but it is
> there. As each MAC probes, it can ask the MII MUX driver to connect
> its MAC to the converter pointed to by its pcs-handle.

Hum, that could be done but since only some values/combinations are
allowed, it would potentially require to validate the setting at each
request, leading to potential non working devices due to invalid MUX
configuration required. I think the fact that we could have everything
in one single node allows to validate it at probe time.

Anyway, I'll make a proposal an we'll see ! Thanks again for your
feedback.

-- 
Clément Léger,
Embedded Linux and Kernel engineer at Bootlin
https://bootlin.com