Skip to content

Commit 7535d70

Browse files
lunnPaolo Abeni
authored andcommitted
net: ftgmac100: Move NCSI probe code into a helper
To help reduce the complexity of the probe function, move the NCSI probe code into a helper. The refactoring results in improved cleanup of the fixed PHY in error paths. Signed-off-by: Andrew Lunn <andrew@lunn.ch> Reviewed-by: Simon Horman <horms@kernel.org> Signed-off-by: Jacky Chou <jacky_chou@aspeedtech.com> Link: https://patch.msgid.link/20260206-ftgmac-cleanup-v5-8-ad28a9067ea7@aspeedtech.com Signed-off-by: Paolo Abeni <pabeni@redhat.com>
1 parent d1d8392 commit 7535d70

1 file changed

Lines changed: 45 additions & 27 deletions

File tree

drivers/net/ethernet/faraday/ftgmac100.c

Lines changed: 45 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -1839,14 +1839,55 @@ static bool ftgmac100_has_child_node(struct device_node *np, const char *name)
18391839
return ret;
18401840
}
18411841

1842+
static int ftgmac100_probe_ncsi(struct net_device *netdev,
1843+
struct ftgmac100 *priv,
1844+
struct platform_device *pdev)
1845+
{
1846+
struct device_node *np = pdev->dev.of_node;
1847+
struct phy_device *phydev;
1848+
int err;
1849+
1850+
if (!IS_ENABLED(CONFIG_NET_NCSI)) {
1851+
dev_err(&pdev->dev, "NCSI stack not enabled\n");
1852+
return -EINVAL;
1853+
}
1854+
1855+
dev_info(&pdev->dev, "Using NCSI interface\n");
1856+
priv->use_ncsi = true;
1857+
priv->ndev = ncsi_register_dev(netdev, ftgmac100_ncsi_handler);
1858+
if (!priv->ndev)
1859+
return -EINVAL;
1860+
1861+
phydev = fixed_phy_register(&ncsi_phy_status, np);
1862+
if (IS_ERR(phydev)) {
1863+
dev_err(&pdev->dev, "failed to register fixed PHY device\n");
1864+
err = PTR_ERR(phydev);
1865+
goto err_register_ndev;
1866+
}
1867+
err = phy_connect_direct(netdev, phydev, ftgmac100_adjust_link,
1868+
PHY_INTERFACE_MODE_RMII);
1869+
if (err) {
1870+
dev_err(&pdev->dev, "Connecting PHY failed\n");
1871+
goto err_register_phy;
1872+
}
1873+
1874+
return 0;
1875+
err_register_phy:
1876+
fixed_phy_unregister(phydev);
1877+
err_register_ndev:
1878+
if (priv->ndev)
1879+
ncsi_unregister_dev(priv->ndev);
1880+
priv->ndev = NULL;
1881+
return err;
1882+
}
1883+
18421884
static int ftgmac100_probe(struct platform_device *pdev)
18431885
{
18441886
const struct ftgmac100_match_data *match_data;
18451887
enum ftgmac100_mac_id mac_id;
18461888
struct resource *res;
18471889
int irq;
18481890
struct net_device *netdev;
1849-
struct phy_device *phydev;
18501891
struct ftgmac100 *priv;
18511892
struct device_node *np;
18521893
int err = 0;
@@ -1928,32 +1969,9 @@ static int ftgmac100_probe(struct platform_device *pdev)
19281969
}
19291970

19301971
if (np && of_get_property(np, "use-ncsi", NULL)) {
1931-
if (!IS_ENABLED(CONFIG_NET_NCSI)) {
1932-
dev_err(&pdev->dev, "NCSI stack not enabled\n");
1933-
err = -EINVAL;
1934-
goto err_phy_connect;
1935-
}
1936-
1937-
dev_info(&pdev->dev, "Using NCSI interface\n");
1938-
priv->use_ncsi = true;
1939-
priv->ndev = ncsi_register_dev(netdev, ftgmac100_ncsi_handler);
1940-
if (!priv->ndev) {
1941-
err = -EINVAL;
1942-
goto err_phy_connect;
1943-
}
1944-
1945-
phydev = fixed_phy_register(&ncsi_phy_status, np);
1946-
if (IS_ERR(phydev)) {
1947-
dev_err(&pdev->dev, "failed to register fixed PHY device\n");
1948-
err = PTR_ERR(phydev);
1949-
goto err_phy_connect;
1950-
}
1951-
err = phy_connect_direct(netdev, phydev, ftgmac100_adjust_link,
1952-
PHY_INTERFACE_MODE_RMII);
1953-
if (err) {
1954-
dev_err(&pdev->dev, "Connecting PHY failed\n");
1955-
goto err_phy_connect;
1956-
}
1972+
err = ftgmac100_probe_ncsi(netdev, priv, pdev);
1973+
if (err)
1974+
goto err_setup_mdio;
19571975
} else if (np && (of_phy_is_fixed_link(np) ||
19581976
of_get_property(np, "phy-handle", NULL))) {
19591977
struct phy_device *phy;

0 commit comments

Comments
 (0)