|
@@ -865,6 +865,22 @@ int genphy_config_aneg(struct phy_device *phydev)
|
|
|
}
|
|
|
EXPORT_SYMBOL(genphy_config_aneg);
|
|
|
|
|
|
+/**
|
|
|
+ * genphy_aneg_done - return auto-negotiation status
|
|
|
+ * @phydev: target phy_device struct
|
|
|
+ *
|
|
|
+ * Description: Reads the status register and returns 0 either if
|
|
|
+ * auto-negotiation is incomplete, or if there was an error.
|
|
|
+ * Returns BMSR_ANEGCOMPLETE if auto-negotiation is done.
|
|
|
+ */
|
|
|
+int genphy_aneg_done(struct phy_device *phydev)
|
|
|
+{
|
|
|
+ int retval = phy_read(phydev, MII_BMSR);
|
|
|
+
|
|
|
+ return (retval < 0) ? retval : (retval & BMSR_ANEGCOMPLETE);
|
|
|
+}
|
|
|
+EXPORT_SYMBOL(genphy_aneg_done);
|
|
|
+
|
|
|
static int gen10g_config_aneg(struct phy_device *phydev)
|
|
|
{
|
|
|
return 0;
|