|
|
@@ -1930,6 +1930,14 @@ int phy_driver_register(struct phy_driver *new_driver, struct module *owner)
|
|
|
new_driver->mdiodrv.driver.remove = phy_remove;
|
|
|
new_driver->mdiodrv.driver.owner = owner;
|
|
|
|
|
|
+ /* The following works around an issue where the PHY driver doesn't bind
|
|
|
+ * to the device, resulting in the genphy driver being used instead of
|
|
|
+ * the dedicated driver. The root cause of the issue isn't known yet
|
|
|
+ * and seems to be in the base driver core. Once this is fixed we may
|
|
|
+ * remove this workaround.
|
|
|
+ */
|
|
|
+ new_driver->mdiodrv.driver.probe_type = PROBE_FORCE_SYNCHRONOUS;
|
|
|
+
|
|
|
retval = driver_register(&new_driver->mdiodrv.driver);
|
|
|
if (retval) {
|
|
|
pr_err("%s: Error %d in registering driver\n",
|