return 1; /* Return any positive value */
}
-static int ip17xx_update_link(struct phy_device *pdev)
-{
- pdev->link = 1;
- return 0;
-}
-
static int ip17xx_read_status(struct phy_device *pdev)
{
pdev->speed = SPEED_100;
.config_init = ip17xx_config_init,
.config_aneg = ip17xx_config_aneg,
.aneg_done = ip17xx_aneg_done,
- .update_link = ip17xx_update_link,
.read_status = ip17xx_read_status,
}
};
+++ /dev/null
---- a/include/linux/phy.h
-+++ b/include/linux/phy.h
-@@ -524,6 +524,12 @@ struct phy_driver {
- /* Determines the negotiated speed and duplex */
- int (*read_status)(struct phy_device *phydev);
-
-+ /*
-+ * Update the value in phydev->link to reflect the
-+ * current link value
-+ */
-+ int (*update_link)(struct phy_device *phydev);
-+
- /* Clears any pending interrupts */
- int (*ack_interrupt)(struct phy_device *phydev);
-
---- a/drivers/net/phy/phy_device.c
-+++ b/drivers/net/phy/phy_device.c
-@@ -1912,6 +1912,9 @@ int genphy_update_link(struct phy_device
- if (bmcr & BMCR_ANRESTART)
- goto done;
-
-+ if (phydev->drv && phydev->drv->update_link)
-+ return phydev->drv->update_link(phydev);
-+
- /* The link state is latched low so that momentary link
- * drops can be detected. Do not double-read the status
- * in polling mode to detect such short link drops.