forked from mirrors/linux
		
	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
					
				
					 2 changed files with 11 additions and 22 deletions
				
			
		|  | @ -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 a new issue
	
	 Heiner Kallweit
						Heiner Kallweit