diff mbox series

[v2,2/2] net: axiemac: use a phandle to reference pcs_phy

Message ID 20220317091926.86765-2-andy.chiu@sifive.com (mailing list archive)
State Superseded
Delegated to: Netdev Maintainers
Headers show
Series [v2,1/2] dt-bindings: net: xilinx_axienet: add pcs-handle attribute | expand

Checks

Context Check Description
netdev/fixes_present success Fixes tag not required for -next series
netdev/subject_prefix success Link
netdev/cover_letter success Single patches do not need cover letters
netdev/patch_count success Link
netdev/header_inline success No static functions without inline keyword in header files
netdev/build_32bit success Errors and warnings before: 2 this patch: 2
netdev/cc_maintainers fail 1 blamed authors not CCed: radhey.shyam.pandey@xilinx.com; 5 maintainers not CCed: linux-riscv@lists.infradead.org paul.walmsley@sifive.com palmer@dabbelt.com radhey.shyam.pandey@xilinx.com linux-arm-kernel@lists.infradead.org
netdev/build_clang success Errors and warnings before: 0 this patch: 0
netdev/module_param success Was 0 now: 0
netdev/verify_signedoff success Signed-off-by tag matches author and committer
netdev/verify_fixes success Fixes tag looks correct
netdev/build_allmodconfig_warn success Errors and warnings before: 2 this patch: 2
netdev/checkpatch success total: 0 errors, 0 warnings, 0 checks, 14 lines checked
netdev/kdoc success Errors and warnings before: 0 this patch: 0
netdev/source_inline success Was 0 now: 0
netdev/tree_selection success Guessing tree name failed - patch did not apply

Commit Message

Andy Chiu March 17, 2022, 9:19 a.m. UTC
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@sifive.com>
Reviewed-by: Greentime Hu <greentime.hu@sifive.com>
---
 drivers/net/ethernet/xilinx/xilinx_axienet_main.c | 8 +++++++-
 1 file changed, 7 insertions(+), 1 deletion(-)

Comments

Andy Chiu March 17, 2022, 9:52 a.m. UTC | #1
loop in: radhey.shyam.pandey@xilinx.com

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@sifive.com> 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@sifive.com>
> Reviewed-by: Greentime Hu <greentime.hu@sifive.com>
> ---
>  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
>
diff mbox series

Patch

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;