unsigned long *possible = phydev->possible_interfaces;
        unsigned int serdes_mode, rate_adapt;
        phy_interface_t interface;
-       int i, val, ret;
-
-       ret = phy_read_mmd_poll_timeout(phydev, MDIO_MMD_VEND1,
-                                       VEND1_GLOBAL_CFG_10M, val, val != 0,
-                                       1000, 100000, false);
-       if (ret)
-               return ret;
+       int i, val;
 
        /* Walk the media-speed configuration registers to determine which
         * host-side serdes modes may be used by the PHY depending on the
        return 0;
 }
 
+static int aqr113c_fill_interface_modes(struct phy_device *phydev)
+{
+       int val, ret;
+
+       /* It's been observed on some models that - when coming out of suspend
+        * - the FW signals that the PHY is ready but the GLOBAL_CFG registers
+        * continue on returning zeroes for some time. Let's poll the 100M
+        * register until it returns a real value as both 113c and 115c support
+        * this mode.
+        */
+       ret = phy_read_mmd_poll_timeout(phydev, MDIO_MMD_VEND1,
+                                       VEND1_GLOBAL_CFG_100M, val, val != 0,
+                                       1000, 100000, false);
+       if (ret)
+               return ret;
+
+       return aqr107_fill_interface_modes(phydev);
+}
+
 static int aqr113c_config_init(struct phy_device *phydev)
 {
        int ret;
        if (ret)
                return ret;
 
-       return aqr107_fill_interface_modes(phydev);
+       return aqr113c_fill_interface_modes(phydev);
 }
 
 static int aqr107_probe(struct phy_device *phydev)