loop in: radhey.shyam.pandey@xxxxxxxxxx I am sending this out since I forgot to CC the maintainer of the driver, again... Sorry for being noisy here. Regards, Andy On Thu, Mar 17, 2022 at 5:21 PM Andy Chiu <andy.chiu@xxxxxxxxxx> wrote: > > In some SGMII use cases where both an external PHY and the internal > PCS/PMA PHY need to be configured, we should explicitly use a phandle > "pcs-phy" to get the reference to the PCS/PMA PHY. Otherwise, the driver > would use "phy-handle" in the DT as the reference to both external and > the internal PCS/PMA PHY. > > In other cases where the core is connected to a SFP cage, we could > fallback, pointing phy-handle to the intenal PCS/PMA PHY, and let the > driver connect to the SFP module, if exist, via phylink. > > Fixes: 1a02556086fc (net: axienet: Properly handle PCS/PMA PHY for 1000BaseX mode) > Signed-off-by: Andy Chiu <andy.chiu@xxxxxxxxxx> > Reviewed-by: Greentime Hu <greentime.hu@xxxxxxxxxx> > --- > drivers/net/ethernet/xilinx/xilinx_axienet_main.c | 8 +++++++- > 1 file changed, 7 insertions(+), 1 deletion(-) > > diff --git a/drivers/net/ethernet/xilinx/xilinx_axienet_main.c b/drivers/net/ethernet/xilinx/xilinx_axienet_main.c > index 6fd5157f0a6d..17de81cc0ca5 100644 > --- a/drivers/net/ethernet/xilinx/xilinx_axienet_main.c > +++ b/drivers/net/ethernet/xilinx/xilinx_axienet_main.c > @@ -2078,7 +2078,13 @@ static int axienet_probe(struct platform_device *pdev) > ret = -EINVAL; > goto cleanup_mdio; > } > - lp->pcs_phy = of_mdio_find_device(lp->phy_node); > + np = of_parse_phandle(pdev->dev.of_node, "pcs-handle", 0); > + if (np) { > + lp->pcs_phy = of_mdio_find_device(np); > + of_node_put(np); > + } else { > + lp->pcs_phy = of_mdio_find_device(lp->phy_node); > + } > if (!lp->pcs_phy) { > ret = -EPROBE_DEFER; > goto cleanup_mdio; > -- > 2.34.1 >