Re: [net-next v1] net: stmmac: starfive: Add serdes PHY init/deinit function

From: Minda Chen
Date: Tue Apr 15 2025 - 23:47:40 EST



>
> On 4/10/25 9:04 AM, Minda Chen wrote:
> > To support SGMII interface, add internal serdes PHY powerup/ powerdown
> > function.
> >
> > Signed-off-by: Minda Chen <minda.chen@xxxxxxxxxxxxxxxx>
> > ---
> > .../ethernet/stmicro/stmmac/dwmac-starfive.c | 33
> > +++++++++++++++++++
> > 1 file changed, 33 insertions(+)
> >
> > diff --git a/drivers/net/ethernet/stmicro/stmmac/dwmac-starfive.c
> > b/drivers/net/ethernet/stmicro/stmmac/dwmac-starfive.c
> > index 2013d7477eb7..f5923f847100 100644
> > --- a/drivers/net/ethernet/stmicro/stmmac/dwmac-starfive.c
> > +++ b/drivers/net/ethernet/stmicro/stmmac/dwmac-starfive.c
> > @@ -9,6 +9,8 @@
> >
> > #include <linux/mod_devicetable.h>
> > #include <linux/platform_device.h>
> > +#include <linux/phy.h>
> > +#include <linux/phy/phy.h>
> > #include <linux/property.h>
> > #include <linux/mfd/syscon.h>
> > #include <linux/regmap.h>
> > @@ -28,6 +30,7 @@ struct starfive_dwmac_data { struct starfive_dwmac
> > {
> > struct device *dev;
> > const struct starfive_dwmac_data *data;
> > + struct phy *serdes_phy;
> > };
> >
> > static int starfive_dwmac_set_mode(struct plat_stmmacenet_data
> > *plat_dat) @@ -80,6 +83,26 @@ static int starfive_dwmac_set_mode(struct
> plat_stmmacenet_data *plat_dat)
> > return 0;
> > }
> >
> > +static int starfive_dwmac_serdes_powerup(struct net_device *ndev,
> > +void *priv) {
> > + struct starfive_dwmac *dwmac = priv;
> > + int ret;
> > +
> > + ret = phy_init(dwmac->serdes_phy);
> > + if (ret)
> > + return ret;
>
> This is called also in case of PM suspend/resume. Do you need to keep the init
> here, or should that moved at probe time only? Similar question for phy_exit()
> below.
>
> Thanks!
>
> Paolo
Yes ,The serdes PHY code is simple. But I am not test with PHY code
I will send next version with PHY code.