[PATCH v3 2/3] net/ftgmac100: Add NC-SI mode support

Ramon Fried rfried.dev at gmail.com
Sat Aug 6 19:52:04 CEST 2022


On Mon, Jul 4, 2022 at 11:20 AM Cédric Le Goater <clg at kaod.org> wrote:
>
> On 7/4/22 09:58, Joel Stanley wrote:
> > From: Samuel Mendoza-Jonas <sam at mendozajonas.com>
> >
> > Update the ftgmac100 driver to support NC-SI instead of an mdio phy
> > where available. This is a common setup for Aspeed AST2x00 platforms.
> >
> > NC-SI mode is determined from the device-tree if either phy-mode sets it
> > or the use-ncsi property exists. If set then normal mdio setup is
> > skipped in favour of the NC-SI phy.
> >
> > Signed-off-by: Samuel Mendoza-Jonas <sam at mendozajonas.com>
> > Signed-off-by: Joel Stanley <joel at jms.id.au>
>
> Reviewed-by: Cédric Le Goater <clg at kaod.org>
>
> Thanks,
>
> C.
>
>
> > ---
> > v3:
> >   - Simplify ncsi enable by re-using pdata->phy_interface parsing.
> >     use-ncsi still overrides this value.
> >   - Fix up freeing in remove callback per Joe's review
> >
> >   drivers/net/ftgmac100.c | 14 ++++++++++----
> >   1 file changed, 10 insertions(+), 4 deletions(-)
> >
> > diff --git a/drivers/net/ftgmac100.c b/drivers/net/ftgmac100.c
> > index 78779d7d60b9..69370ea5cca2 100644
> > --- a/drivers/net/ftgmac100.c
> > +++ b/drivers/net/ftgmac100.c
> > @@ -188,7 +188,7 @@ static int ftgmac100_phy_adjust_link(struct ftgmac100_data *priv)
> >       struct phy_device *phydev = priv->phydev;
> >       u32 maccr;
> >
> > -     if (!phydev->link) {
> > +     if (!phydev->link && priv->phy_mode != PHY_INTERFACE_MODE_NCSI) {
> >               dev_err(phydev->dev, "No link\n");
> >               return -EREMOTEIO;
> >       }
> > @@ -228,7 +228,8 @@ static int ftgmac100_phy_init(struct udevice *dev)
> >       if (!phydev)
> >               return -ENODEV;
> >
> > -     phydev->supported &= PHY_GBIT_FEATURES;
> > +     if (priv->phy_mode != PHY_INTERFACE_MODE_NCSI)
> > +             phydev->supported &= PHY_GBIT_FEATURES;
> >       if (priv->max_speed) {
> >               ret = phy_set_supported(phydev, priv->max_speed);
> >               if (ret)
> > @@ -308,7 +309,8 @@ static void ftgmac100_stop(struct udevice *dev)
> >
> >       writel(0, &ftgmac100->maccr);
> >
> > -     phy_shutdown(priv->phydev);
> > +     if (priv->phy_mode != PHY_INTERFACE_MODE_NCSI)
> > +             phy_shutdown(priv->phydev);
> >   }
> >
> >   static int ftgmac100_start(struct udevice *dev)
> > @@ -580,6 +582,9 @@ static int ftgmac100_probe(struct udevice *dev)
> >       priv->max_speed = pdata->max_speed;
> >       priv->phy_addr = 0;
> >
> > +     if (dev_read_bool(dev, "use-ncsi"))
> > +             priv->phy_mode = PHY_INTERFACE_MODE_NCSI;
> > +
> >   #ifdef CONFIG_PHY_ADDR
> >       priv->phy_addr = CONFIG_PHY_ADDR;
> >   #endif
> > @@ -592,7 +597,8 @@ static int ftgmac100_probe(struct udevice *dev)
> >        * If DM MDIO is enabled, the MDIO bus will be initialized later in
> >        * dm_eth_phy_connect
> >        */
> > -     if (!IS_ENABLED(CONFIG_DM_MDIO)) {
> > +     if (priv->phy_mode != PHY_INTERFACE_MODE_NCSI &&
> > +         !IS_ENABLED(CONFIG_DM_MDIO)) {
> >               ret = ftgmac100_mdio_init(dev);
> >               if (ret) {
> >                       dev_err(dev, "Failed to initialize mdiobus: %d\n", ret);
>
Reviewed-by: Ramon Fried <rfried.dev at gmail.com>


More information about the U-Boot mailing list