mirror of
https://mirrors.bfsu.edu.cn/git/linux.git
synced 2024-11-11 04:18:39 +08:00
ravb: Add support for an optional MDIO mode
The driver used the DT node of the device itself when registering the MDIO bus. While this works, it creates a problem: it forces any MDIO bus properties to also be set on the devices DT node. This mixes the properties of two distinctly different things and is confusing. This change adds support for an optional mdio node to be defined as a child to the device DT node. The child node can then be used to describe MDIO bus properties that the MDIO core can act on when registering the bus. If no mdio child node is found the driver fallback to the old behavior and register the MDIO bus using the device DT node. This change is backward compatible with old bindings in use. Signed-off-by: Niklas Söderlund <niklas.soderlund+renesas@ragnatech.se> Reviewed-by: Sergey Shtylyov <s.shtylyov@omp.ru> Reviewed-by: Andrew Lunn <andrew@lunn.ch> Link: https://lore.kernel.org/r/20240325153451.2366083-3-niklas.soderlund+renesas@ragnatech.se Signed-off-by: Jakub Kicinski <kuba@kernel.org>
This commit is contained in:
parent
a87590c45c
commit
2c60c4c008
@ -2564,6 +2564,7 @@ static int ravb_mdio_init(struct ravb_private *priv)
|
||||
{
|
||||
struct platform_device *pdev = priv->pdev;
|
||||
struct device *dev = &pdev->dev;
|
||||
struct device_node *mdio_node;
|
||||
struct phy_device *phydev;
|
||||
struct device_node *pn;
|
||||
int error;
|
||||
@ -2583,7 +2584,13 @@ static int ravb_mdio_init(struct ravb_private *priv)
|
||||
pdev->name, pdev->id);
|
||||
|
||||
/* Register MDIO bus */
|
||||
error = of_mdiobus_register(priv->mii_bus, dev->of_node);
|
||||
mdio_node = of_get_child_by_name(dev->of_node, "mdio");
|
||||
if (!mdio_node) {
|
||||
/* backwards compatibility for DT lacking mdio subnode */
|
||||
mdio_node = of_node_get(dev->of_node);
|
||||
}
|
||||
error = of_mdiobus_register(priv->mii_bus, mdio_node);
|
||||
of_node_put(mdio_node);
|
||||
if (error)
|
||||
goto out_free_bus;
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user