Subject: Re: Fixed PHY Device Tree usage?

From: Florian Fainelli <[email-masked]>
Date: Sat, 13 Jul 2013 01:29:39 +0200

Le 13/07/2013 00:44, Grant Likely a écrit :
> On Wed, Jul 10, 2013 at 6:23 PM, Florian Fainelli <[email-masked]> wrote:
>> Hello Thomas,
>>
>> 2013/7/10 Thomas Petazzoni <[email-masked]>:
>>> Dear Florian Fainelli,
>>>
>>> On Wed, 10 Jul 2013 17:29:44 +0100, Florian Fainelli wrote:
>> [snip]
>>
>>>
>>>>>                  };
>>>>>
>>>>>                  phy1: ethernet-phy@1 {
>>>>>                          ... all the properties you listed ...
>>>>>                          ... maybe the "id" property is not needed
>>>>>                              because of the phandle ...
>>>>>                  };
>>>>>          };
>>>>>
>>>>>          soc {
>>>>>                  ethernet@0 {
>>>>>                          phy = <&phy0>;
>>>>>                          ...
>>>>>                  };
>>>>>
>>>>>                  ethernet@1 {
>>>>>                          phy = <&phy1>;
>>>>>                          ...
>>>>>                  };
>>>>>          };
>>>>>
>>>>> or do you have in mind another representation?
>>>>
>>>> Not really this is more or less what I had in mind. I am wondering
>>>> whether we should really declare the "mdio-fixed" node, or if we
>>>> should not rather make the following:
>>>>
>>>> - declare all PHY nodes in the system as sub nodes of their belonging
>>>> real hardware MDIO bus node
>>>> - flag specific PHY nodes as "fixed" with a "fixed-link" boolean for instance
>>>> - if we see that flag, make that specific PHY node bind to the
>>>> fixed-phy driver instead
>>>
>>> So the fixed PHY driver is going to travel through *all* nodes of the
>>> DT, and whenever some random node has a "fixed" property, it's going to
>>> say it corresponds to a fixed PHY? That doesn't seem like a good idea.
>>
>> Why not? Since we are already have to scan the entire MDIO bus we are
>> attached to, when we encounter such a PHY node with the special
>> "fixed" properties, we just call fixed_phy_add() with the right
>> parameters and voila. Which is also the reason why I was suggesting to
>> put the "fixed" PHY nodes as sub-nodes of the real MDIO node such that
>> we have this logic only in one place.
>
> Hi Florian,
>
> I think this discussion is going in the wrong direction. The concept
> of a dummy phy is really a Linux kernel internal detail. Creating some
> kind of dummy MDIO bus node does not describe the hardware. There is
> already support in the kernel for Ethernet MACs connected directly to
> a switch or other device. It is far better to describe how the MAC
> needs to be configured than to invent a non-existent phy. Search for
> "fixed-link" in the kernel tree to see how it is used.

Errm, fixed-link is deprecated according to the comment which parses it. 
In fact, the code parsing this special property does not parse all the 
integers representing the fixed-link. But fair enough, if that is the 
way to go, then let's stick with it.