net: phy: Dealing with 88e1543 dual-port mode

Tobias Waldekranz tobias at waldekranz.com
Thu Nov 19 19:11:12 EST 2020


On Thu, Nov 19, 2020 at 23:16, Russell King - ARM Linux admin <linux at armlinux.org.uk> wrote:
> On Thu, Nov 19, 2020 at 11:43:39PM +0100, Tobias Waldekranz wrote:
>> On Thu, Nov 19, 2020 at 16:24, Maxime Chevallier <maxime.chevallier at bootlin.com> wrote:
>> > I don't think we have a way to distinguish from the DT if we are in
>> > SGMII-to-Fibre or in SGMII-to-{Copper + Fibre}, since the description is
>> > the same, we don't have any information in DT about wether or not the
>> > PHY is wired to a Copper RJ45 port.
>> >
>> > Maybe we should have a way to indicate if a PHY is wired to a Copper
>> > port in DT ?
>> 
>> Do you mean something like:
>> 
>> SGMII->SGMII (Fibre):
>> ethernet-phy at 0 {
>>    sfp = <&sfp0>;
>> };
>> 
>> SGMII->MDI (Copper):
>> ethernet-phy at 0 {
>>     mdi;
>> };
>> 
>> SGMII->Auto Media Detect
>> ethernet-phy at 0 {
>>     mdi;
>>     sfp = <&sfp0>;
>> };
>
> This isn't something we could realistically do - think about how many
> DT files are out there today which would not have this for an existing
> PHY. The default has to be that today's DT descriptions continue to work
> as-is, and that includes ones which already support copper and fibre
> either with or without a sfp property.
>
> So, we can't draw any conclusion about whether the fiber interface is
> wired from whether there is a sfp property or not.
>
> We also can't draw a conclusion about whether the copper side is wired
> using a "mdi" property, or whether there is a "sfp" property or not.
>
> The only thing we could realistically do today is to introduce a
> property like:
>
> 	mdi = "disabled" | "okay";
>
> to indicate whether the copper port can be used, and maybe something
> similar for the fiber interface.  Maybe as you suggest, not "okay"
> but specifying the number of connected pairs would be a good idea,
> or maybe that should be a separate property?

Maybe you could have optional media nodes under the PHY instead, so that
you don't involve the SFP property in the logic (SGMII can be connected
to lots of things after all):

    ethernet-phy at 0 {
        ...

        sgmii {
            status = "okay";
            preferred;
        };

        mdi {
           status = "okay";
           pairs = <2>;
        };
    };

In the absence of any media declarations, you fall back to the driver's
default behavior (keeping compatibility with older DTs). But you can
still add support for more configurations if the information is
available.



More information about the linux-arm-kernel mailing list