[PATCH 4/9] net: introduce a helper to determine whether to use in-band autoneg

Ramon Fried rfried.dev at gmail.com
Tue Sep 28 15:34:47 CEST 2021


On Tue, Sep 28, 2021 at 2:48 AM Vladimir Oltean <vladimir.oltean at nxp.com> wrote:
>
> Certain serial SERDES protocols like 1000base-x, 2500base-x, SGMII,
> USXGMII can operate either in a mode where the PHY (be it on-board or
> inside an SFP module) passes the link parameters (speed, duplex, pause)
> to the MAC through in-band through control words standardized by IEEE
> 802.3 clause 37, or in a mode where the MAC must configure (force) its
> link parameters based on information obtained out-of-band (MDIO reads,
> guesswork etc).
>
> In Linux, the OF node property named "managed" is parsed by the phylink
> framework, and the convention is that if a driver uses phylink, then the
> presence of this property means that in-band autoneg should be enabled,
> otherwise it shouldn't.
>
> To be compatible with the OF node bindings of drivers that use phylink
> in Linux, introduce parsing support for this property in U-Boot too.
>
> Signed-off-by: Vladimir Oltean <vladimir.oltean at nxp.com>
> ---
>  drivers/core/of_extra.c | 12 ++++++++++++
>  include/dm/of_extra.h   | 14 ++++++++++++++
>  2 files changed, 26 insertions(+)
>
> diff --git a/drivers/core/of_extra.c b/drivers/core/of_extra.c
> index 632a1c2210e8..59ce9174ad07 100644
> --- a/drivers/core/of_extra.c
> +++ b/drivers/core/of_extra.c
> @@ -155,3 +155,15 @@ bool ofnode_phy_is_fixed_link(ofnode eth_node, ofnode *phy_node)
>
>         return true;
>  }
> +
> +bool ofnode_eth_uses_inband_aneg(ofnode eth_node)
> +{
> +       bool inband_aneg = false;
> +       const char *managed;
> +
> +       managed = ofnode_read_string(eth_node, "managed");
> +       if (managed && !strcmp(managed, "in-band-status"))
> +               inband_aneg = true;
> +
> +       return inband_aneg;
> +}
> diff --git a/include/dm/of_extra.h b/include/dm/of_extra.h
> index f0d205491c16..c2498aa5859c 100644
> --- a/include/dm/of_extra.h
> +++ b/include/dm/of_extra.h
> @@ -114,4 +114,18 @@ int ofnode_decode_memory_region(ofnode config_node, const char *mem_type,
>   */
>  bool ofnode_phy_is_fixed_link(ofnode eth_node, ofnode *phy_node);
>
> +/**
> + * ofnode_eth_uses_inband_aneg() - Detect whether MAC should use in-band autoneg
> + *
> + * This function detects whether the Ethernet controller should use IEEE 802.3
> + * clause 37 in-band autonegotiation for serial protocols such as 1000base-x,
> + * SGMII, USXGMII, etc. The property is relevant when the Ethernet controller
> + * is connected to an on-board PHY or an SFP cage, and is not relevant when it
> + * has a fixed link (in that case, in-band autoneg should not be used).
> + *
> + * @param eth_node     ofnode belonging to the Ethernet controller
> + * @return true if in-band autoneg should be used, false otherwise
> + */
> +bool ofnode_eth_uses_inband_aneg(ofnode eth_node);
> +
>  #endif
> --
> 2.25.1
>
Reviewed-by: Ramon Fried <rfried.dev at gmail.com>


More information about the U-Boot mailing list