|
@@ -62,9 +62,6 @@ static struct phy_driver genphy_driver[GENPHY_DRV_MAX];
|
|
|
static LIST_HEAD(phy_fixup_list);
|
|
|
static DEFINE_MUTEX(phy_fixup_lock);
|
|
|
|
|
|
-static int phy_attach_direct(struct net_device *dev, struct phy_device *phydev,
|
|
|
- u32 flags, phy_interface_t interface);
|
|
|
-
|
|
|
/**
|
|
|
* phy_register_fixup - creates a new phy_fixup and adds it to the list
|
|
|
* @bus_id: A string which matches phydev->dev.bus_id (or PHY_ANY_ID)
|
|
@@ -567,13 +564,13 @@ EXPORT_SYMBOL(phy_init_hw);
|
|
|
*
|
|
|
* Description: Called by drivers to attach to a particular PHY
|
|
|
* device. The phy_device is found, and properly hooked up
|
|
|
- * to the phy_driver. If no driver is attached, then the
|
|
|
- * genphy_driver is used. The phy_device is given a ptr to
|
|
|
+ * to the phy_driver. If no driver is attached, then a
|
|
|
+ * generic driver is used. The phy_device is given a ptr to
|
|
|
* the attaching device, and given a callback for link status
|
|
|
* change. The phy_device is returned to the attaching driver.
|
|
|
*/
|
|
|
-static int phy_attach_direct(struct net_device *dev, struct phy_device *phydev,
|
|
|
- u32 flags, phy_interface_t interface)
|
|
|
+int phy_attach_direct(struct net_device *dev, struct phy_device *phydev,
|
|
|
+ u32 flags, phy_interface_t interface)
|
|
|
{
|
|
|
struct device *d = &phydev->dev;
|
|
|
int err;
|
|
@@ -582,12 +579,10 @@ static int phy_attach_direct(struct net_device *dev, struct phy_device *phydev,
|
|
|
* exist, and we should use the genphy driver.
|
|
|
*/
|
|
|
if (NULL == d->driver) {
|
|
|
- if (phydev->is_c45) {
|
|
|
- pr_err("No driver for phy %x\n", phydev->phy_id);
|
|
|
- return -ENODEV;
|
|
|
- }
|
|
|
-
|
|
|
- d->driver = &genphy_driver[GENPHY_DRV_1G].driver;
|
|
|
+ if (phydev->is_c45)
|
|
|
+ d->driver = &genphy_driver[GENPHY_DRV_10G].driver;
|
|
|
+ else
|
|
|
+ d->driver = &genphy_driver[GENPHY_DRV_1G].driver;
|
|
|
|
|
|
err = d->driver->probe(d);
|
|
|
if (err >= 0)
|
|
@@ -623,6 +618,7 @@ static int phy_attach_direct(struct net_device *dev, struct phy_device *phydev,
|
|
|
|
|
|
return err;
|
|
|
}
|
|
|
+EXPORT_SYMBOL(phy_attach_direct);
|
|
|
|
|
|
/**
|
|
|
* phy_attach - attach a network device to a particular PHY device
|