mirror of https://gitee.com/openkylin/linux.git
net: phy: replace genphy_10g_driver with genphy_c45_driver
Recently a number of generic functions for Clause 45 PHY's has been added. So let's replace the old very limited genphy_10g_driver with a genphy_c45_driver. This driver isn't limited to 10G, however it's worth to be noted that Clause 45 doesn't cover 1000Base-T. For using 1000Base-T with a Clause 45 PHY a dedicated PHY driver using vendor registers is needed. Signed-off-by: Heiner Kallweit <hkallweit1@gmail.com> Reviewed-by: Andrew Lunn <andrew@lunn.ch> Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:
parent
5af82f5205
commit
22b56e8270
|
@ -516,21 +516,10 @@ int gen10g_config_aneg(struct phy_device *phydev)
|
|||
}
|
||||
EXPORT_SYMBOL_GPL(gen10g_config_aneg);
|
||||
|
||||
static int gen10g_read_status(struct phy_device *phydev)
|
||||
{
|
||||
/* For now just lie and say it's 10G all the time */
|
||||
phydev->speed = SPEED_10000;
|
||||
phydev->duplex = DUPLEX_FULL;
|
||||
|
||||
return genphy_c45_read_link(phydev);
|
||||
}
|
||||
|
||||
struct phy_driver genphy_10g_driver = {
|
||||
struct phy_driver genphy_c45_driver = {
|
||||
.phy_id = 0xffffffff,
|
||||
.phy_id_mask = 0xffffffff,
|
||||
.name = "Generic 10G PHY",
|
||||
.name = "Generic Clause 45 PHY",
|
||||
.soft_reset = genphy_no_soft_reset,
|
||||
.features = PHY_10GBIT_FEATURES,
|
||||
.config_aneg = gen10g_config_aneg,
|
||||
.read_status = gen10g_read_status,
|
||||
.read_status = genphy_c45_read_status,
|
||||
};
|
||||
|
|
|
@ -225,7 +225,7 @@ static void phy_mdio_device_remove(struct mdio_device *mdiodev)
|
|||
}
|
||||
|
||||
static struct phy_driver genphy_driver;
|
||||
extern struct phy_driver genphy_10g_driver;
|
||||
extern struct phy_driver genphy_c45_driver;
|
||||
|
||||
static LIST_HEAD(phy_fixup_list);
|
||||
static DEFINE_MUTEX(phy_fixup_lock);
|
||||
|
@ -1174,7 +1174,7 @@ int phy_attach_direct(struct net_device *dev, struct phy_device *phydev,
|
|||
*/
|
||||
if (!d->driver) {
|
||||
if (phydev->is_c45)
|
||||
d->driver = &genphy_10g_driver.mdiodrv.driver;
|
||||
d->driver = &genphy_c45_driver.mdiodrv.driver;
|
||||
else
|
||||
d->driver = &genphy_driver.mdiodrv.driver;
|
||||
|
||||
|
@ -1335,7 +1335,7 @@ EXPORT_SYMBOL_GPL(phy_driver_is_genphy);
|
|||
bool phy_driver_is_genphy_10g(struct phy_device *phydev)
|
||||
{
|
||||
return phy_driver_is_genphy_kind(phydev,
|
||||
&genphy_10g_driver.mdiodrv.driver);
|
||||
&genphy_c45_driver.mdiodrv.driver);
|
||||
}
|
||||
EXPORT_SYMBOL_GPL(phy_driver_is_genphy_10g);
|
||||
|
||||
|
@ -2308,14 +2308,14 @@ static int __init phy_init(void)
|
|||
|
||||
features_init();
|
||||
|
||||
rc = phy_driver_register(&genphy_10g_driver, THIS_MODULE);
|
||||
rc = phy_driver_register(&genphy_c45_driver, THIS_MODULE);
|
||||
if (rc)
|
||||
goto err_10g;
|
||||
goto err_c45;
|
||||
|
||||
rc = phy_driver_register(&genphy_driver, THIS_MODULE);
|
||||
if (rc) {
|
||||
phy_driver_unregister(&genphy_10g_driver);
|
||||
err_10g:
|
||||
phy_driver_unregister(&genphy_c45_driver);
|
||||
err_c45:
|
||||
mdio_bus_exit();
|
||||
}
|
||||
|
||||
|
@ -2324,7 +2324,7 @@ static int __init phy_init(void)
|
|||
|
||||
static void __exit phy_exit(void)
|
||||
{
|
||||
phy_driver_unregister(&genphy_10g_driver);
|
||||
phy_driver_unregister(&genphy_c45_driver);
|
||||
phy_driver_unregister(&genphy_driver);
|
||||
mdio_bus_exit();
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue