mirror of
https://github.com/torvalds/linux.git
synced 2026-05-31 02:24:24 +02:00
net: ftgmac100: Move DT probe into a helper
By moving all the DT probe code into a helper, the complex if else if else structure can be simplified. No functional change intended. 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-11-ad28a9067ea7@aspeedtech.com Signed-off-by: Paolo Abeni <pabeni@redhat.com>
This commit is contained in:
parent
3e523741aa
commit
20248a719d
|
|
@ -1886,6 +1886,58 @@ static int ftgmac100_probe_ncsi(struct net_device *netdev,
|
|||
return err;
|
||||
}
|
||||
|
||||
static int ftgmac100_probe_dt(struct net_device *netdev,
|
||||
struct platform_device *pdev,
|
||||
struct ftgmac100 *priv,
|
||||
struct device_node *np)
|
||||
{
|
||||
struct phy_device *phy;
|
||||
int err;
|
||||
|
||||
if (of_get_property(np, "use-ncsi", NULL))
|
||||
return ftgmac100_probe_ncsi(netdev, priv, pdev);
|
||||
|
||||
if (of_phy_is_fixed_link(np) ||
|
||||
of_get_property(np, "phy-handle", NULL)) {
|
||||
/* Support "mdio"/"phy" child nodes for ast2400/2500
|
||||
* with an embedded MDIO controller. Automatically
|
||||
* scan the DTS for available PHYs and register
|
||||
* them. 2600 has an independent MDIO controller, not
|
||||
* part of the MAC.
|
||||
*/
|
||||
phy = of_phy_get_and_connect(priv->netdev, np,
|
||||
&ftgmac100_adjust_link);
|
||||
if (!phy) {
|
||||
dev_err(&pdev->dev, "Failed to connect to phy\n");
|
||||
return -EINVAL;
|
||||
}
|
||||
|
||||
/* Indicate that we support PAUSE frames (see comment in
|
||||
* Documentation/networking/phy.rst)
|
||||
*/
|
||||
phy_support_asym_pause(phy);
|
||||
|
||||
/* Display what we found */
|
||||
phy_attached_info(phy);
|
||||
return 0;
|
||||
}
|
||||
|
||||
if (!ftgmac100_has_child_node(np, "mdio")) {
|
||||
/* Support legacy ASPEED devicetree descriptions that
|
||||
* decribe a MAC with an embedded MDIO controller but
|
||||
* have no "mdio" child node. Automatically scan the
|
||||
* MDIO bus for available PHYs.
|
||||
*/
|
||||
err = ftgmac100_mii_probe(netdev);
|
||||
if (err) {
|
||||
dev_err(priv->dev, "MII probe failed!\n");
|
||||
return err;
|
||||
}
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
static int ftgmac100_probe(struct platform_device *pdev)
|
||||
{
|
||||
const struct ftgmac100_match_data *match_data;
|
||||
|
|
@ -1981,41 +2033,10 @@ static int ftgmac100_probe(struct platform_device *pdev)
|
|||
return err;
|
||||
}
|
||||
|
||||
if (np && of_get_property(np, "use-ncsi", NULL)) {
|
||||
err = ftgmac100_probe_ncsi(netdev, priv, pdev);
|
||||
if (np) {
|
||||
err = ftgmac100_probe_dt(netdev, pdev, priv, np);
|
||||
if (err)
|
||||
goto err;
|
||||
} else if (np && (of_phy_is_fixed_link(np) ||
|
||||
of_get_property(np, "phy-handle", NULL))) {
|
||||
struct phy_device *phy;
|
||||
|
||||
phy = of_phy_get_and_connect(priv->netdev, np,
|
||||
&ftgmac100_adjust_link);
|
||||
if (!phy) {
|
||||
dev_err(&pdev->dev, "Failed to connect to phy\n");
|
||||
err = -EINVAL;
|
||||
goto err;
|
||||
}
|
||||
|
||||
/* Indicate that we support PAUSE frames (see comment in
|
||||
* Documentation/networking/phy.rst)
|
||||
*/
|
||||
phy_support_asym_pause(phy);
|
||||
|
||||
/* Display what we found */
|
||||
phy_attached_info(phy);
|
||||
} else if (np && !ftgmac100_has_child_node(np, "mdio")) {
|
||||
/* Support legacy ASPEED devicetree descriptions that decribe a
|
||||
* MAC with an embedded MDIO controller but have no "mdio"
|
||||
* child node. Automatically scan the MDIO bus for available
|
||||
* PHYs.
|
||||
*/
|
||||
err = ftgmac100_mii_probe(netdev);
|
||||
if (err) {
|
||||
dev_err(priv->dev, "MII probe failed!\n");
|
||||
goto err;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
priv->rst = devm_reset_control_get_optional_exclusive(priv->dev, NULL);
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user