drivers: net: cpsw: add support for fixed-links.
Subsystems (3)
PATCH 1/1 drivers: net: cpsw: add support for fixed-links.
Add support for fixed-links in configurations without PHY. (e.g. connection to a switch, SGMII point to point, SFPs)
Check: Documentation/devicetree/bindings/net/fixed-link.txt.
--- drivers/net/ethernet/ti/cpsw.c | 40 ++++++++++++++++++++++++++++------------ 1 file changed, 28 insertions(+), 12 deletions(-)
drivers/net/ethernet/ti/cpsw.c +28 -12
@@ -2039,19 +2039,35 @@ static int cpsw_probe_dt(struct cpsw_priv *priv, priv->phy_node =of_parse_phandle (slave_node,"phy-handle" ,0 ); parp =of_get_property (slave_node,"phy_id" , &lenp);if ((parp ==NULL ) || (lenp != (sizeof (void *) *2 ))) { -dev_err (&pdev->dev,"Missing slave[%d] phy_id property\n" , i); - goto no_phy_slave; - } - mdio_node =of_find_node_by_phandle (be32_to_cpup (parp)); - phyid =be32_to_cpup (parp+1 ); - mdio =of_find_device_by_node (mdio_node); -of_node_put (mdio_node); -if (!mdio) { -dev_err (&pdev->dev,"Missing mdio platform device\n" ); -return -EINVAL ; +if (!of_phy_is_fixed_link (slave_node)) { +dev_err (&pdev->dev, +"Missing slave[%d] phy_id property\n" , + i); + goto no_phy_slave; + } + + ret =of_phy_register_fixed_link (slave_node); +if (ret) { +dev_err (&pdev->dev,"cannot register fixed PHY\n" ); +return ret; + } + +/* In the case of a fixed PHY, the DT node associated +* to the PHY is the Ethernet MAC DT node. +*/ + priv->phy_node =of_node_get (slave_node); + }else { + mdio_node =of_find_node_by_phandle (be32_to_cpup (parp)); + phyid =be32_to_cpup (parp +1 ); + mdio =of_find_device_by_node (mdio_node); +of_node_put (mdio_node); +if (!mdio) { +dev_err (&pdev->dev,"Missing mdio platform device\n" ); +return -EINVAL ; + } +snprintf (slave_data->phy_id,sizeof (slave_data->phy_id), +PHY_ID_FMT , mdio->name, phyid); } -snprintf (slave_data->phy_id,sizeof (slave_data->phy_id), -PHY_ID_FMT , mdio->name, phyid); slave_data->phy_if =of_get_phy_mode (slave_node);if (slave_data->phy_if <0 ) { dev_err(&pdev->dev, "Missing or malformed slave[%d] phy-mode property\n",
Signature · 1 line
1.9.1
David Miller
maintainerFrom: Daniel Trautmann <[email protected]>
Date: Mon, 9 Nov 2015 20:24:14 +0100
drivers/net/ethernet/ti/cpsw.c static int cpsw_probe_dt(struct cpsw_priv *priv, · line 2042
Quoted 5 lines
drivers/net/ethernet/ti/cpsw.c +0
-1@@ -2039,19 +2039,35 @@ static int cpsw_probe_dt(struct cpsw_priv *priv, priv->phy_node =of_parse_phandle (slave_node,"phy-handle" ,0 ); parp =of_get_property (slave_node,"phy_id" , &lenp);if ((parp ==NULL ) || (lenp != (sizeof (void *) *2 ))) { -dev_err (&pdev->dev,"Missing slave[%d] phy_id property\n" , i);
I know this has nothing to do with your patch, but that length check is completely bogus.
It should be "sizeof(__be32) * 2" not "sizeof(void *) * 2".
David Miller
maintainerFrom: Daniel Trautmann <[email protected]>
Date: Mon, 9 Nov 2015 20:24:14 +0100
Quoted 6 lines
Add support for fixed-links in configurations without PHY. (e.g. connection to a switch, SGMII point to point, SFPs)
Check:
Documentation/devicetree/bindings/net/fixed-link.txt.Signed-off-by Daniel Trautmann <[email protected]>
This patch doesn't apply cleanly at all.
Quoted 11 lines · David Miller
From: Daniel Trautmann <[email protected]>
Date: Mon, 9 Nov 2015 20:24:14 +0100Quoted 6 lines
Add support for fixed-links in configurations without PHY. (e.g. connection to a switch, SGMII point to point, SFPs)
Check:
Documentation/devicetree/bindings/net/fixed-link.txt.Signed-off-by Daniel Trautmann <[email protected]>This patch doesn't apply cleanly at all.
Sorry, I was working on the wrong branch.
I found there is a similar patch already in netdev-next, I will check this an submit a new Patch if necessary.