/* If something weird is required to be done with link/speed, network driver is able to assign a function to implement this. May be useful for PHY's that need to be software-driven.  */
int fixed_phy_set_link_update(struct phy_device *phydev, int(*link_update)(struct net_device *, struct fixed_phy_status *))
/* If something weird is required to be done with link/speed, network driver is able to assign a function to implement this. May be useful for PHY's that need to be software-driven.  */
int fixed_phy_set_link_update(struct phy_device *phydev, int(*link_update)(struct net_device *, struct fixed_phy_status *))
{
	struct fixed_mdio_bus *fmb = &platform_fmb;
	struct fixed_phy *fp;
	if (!link_update || !phydev || !phydev->bus)
		return -EINVAL;
	list_for_each_entry(fp, &fmb->phys, node) {
		if (fp->id == phydev->phy_id) {
			fp->link_update = link_update;
			fp->phydev = phydev;
			return 0;
		}
	}
	return -ENOENT;
}