of: mdio: Refactor of_mdiobus_register_phy()
Refactor of_mdiobus_register_phy() to use fwnode_mdiobus_register_phy(). Also, remove the of_find_mii_timestamper() since the fwnode variant is used instead. Signed-off-by: Calvin Johnson <calvin.johnson@oss.nxp.com> Signed-off-by: Ioana Ciornei <ioana.ciornei@nxp.com> Acked-by: Grant Likely <grant.likely@arm.com> Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:
parent
bc1bee3b87
commit
8d2cb3ad31
@ -33,24 +33,6 @@ static int of_get_phy_id(struct device_node *device, u32 *phy_id)
|
||||
return fwnode_get_phy_id(of_fwnode_handle(device), phy_id);
|
||||
}
|
||||
|
||||
static struct mii_timestamper *of_find_mii_timestamper(struct device_node *node)
|
||||
{
|
||||
struct of_phandle_args arg;
|
||||
int err;
|
||||
|
||||
err = of_parse_phandle_with_fixed_args(node, "timestamper", 1, 0, &arg);
|
||||
|
||||
if (err == -ENOENT)
|
||||
return NULL;
|
||||
else if (err)
|
||||
return ERR_PTR(err);
|
||||
|
||||
if (arg.args_count != 1)
|
||||
return ERR_PTR(-EINVAL);
|
||||
|
||||
return register_mii_timestamper(arg.np, arg.args[0]);
|
||||
}
|
||||
|
||||
int of_mdiobus_phy_device_register(struct mii_bus *mdio, struct phy_device *phy,
|
||||
struct device_node *child, u32 addr)
|
||||
{
|
||||
@ -63,43 +45,7 @@ EXPORT_SYMBOL(of_mdiobus_phy_device_register);
|
||||
static int of_mdiobus_register_phy(struct mii_bus *mdio,
|
||||
struct device_node *child, u32 addr)
|
||||
{
|
||||
struct mii_timestamper *mii_ts;
|
||||
struct phy_device *phy;
|
||||
bool is_c45;
|
||||
int rc;
|
||||
u32 phy_id;
|
||||
|
||||
mii_ts = of_find_mii_timestamper(child);
|
||||
if (IS_ERR(mii_ts))
|
||||
return PTR_ERR(mii_ts);
|
||||
|
||||
is_c45 = of_device_is_compatible(child,
|
||||
"ethernet-phy-ieee802.3-c45");
|
||||
|
||||
if (!is_c45 && !of_get_phy_id(child, &phy_id))
|
||||
phy = phy_device_create(mdio, addr, phy_id, 0, NULL);
|
||||
else
|
||||
phy = get_phy_device(mdio, addr, is_c45);
|
||||
if (IS_ERR(phy)) {
|
||||
unregister_mii_timestamper(mii_ts);
|
||||
return PTR_ERR(phy);
|
||||
}
|
||||
|
||||
rc = of_mdiobus_phy_device_register(mdio, phy, child, addr);
|
||||
if (rc) {
|
||||
unregister_mii_timestamper(mii_ts);
|
||||
phy_device_free(phy);
|
||||
return rc;
|
||||
}
|
||||
|
||||
/* phy->mii_ts may already be defined by the PHY driver. A
|
||||
* mii_timestamper probed via the device tree will still have
|
||||
* precedence.
|
||||
*/
|
||||
if (mii_ts)
|
||||
phy->mii_ts = mii_ts;
|
||||
|
||||
return 0;
|
||||
return fwnode_mdiobus_register_phy(mdio, of_fwnode_handle(child), addr);
|
||||
}
|
||||
|
||||
static int of_mdiobus_register_device(struct mii_bus *mdio,
|
||||
|
Loading…
x
Reference in New Issue
Block a user