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); | EXPORT_SYMBOL_GPL(gen10g_config_aneg); | ||||||
| 
 | 
 | ||||||
| static int gen10g_read_status(struct phy_device *phydev) | struct phy_driver genphy_c45_driver = { | ||||||
| { |  | ||||||
| 	/* 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 = { |  | ||||||
| 	.phy_id         = 0xffffffff, | 	.phy_id         = 0xffffffff, | ||||||
| 	.phy_id_mask    = 0xffffffff, | 	.phy_id_mask    = 0xffffffff, | ||||||
| 	.name           = "Generic 10G PHY", | 	.name           = "Generic Clause 45 PHY", | ||||||
| 	.soft_reset	= genphy_no_soft_reset, | 	.soft_reset	= genphy_no_soft_reset, | ||||||
| 	.features       = PHY_10GBIT_FEATURES, | 	.read_status    = genphy_c45_read_status, | ||||||
| 	.config_aneg    = gen10g_config_aneg, |  | ||||||
| 	.read_status    = gen10g_read_status, |  | ||||||
| }; | }; | ||||||
|  |  | ||||||
|  | @ -225,7 +225,7 @@ static void phy_mdio_device_remove(struct mdio_device *mdiodev) | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| static struct phy_driver genphy_driver; | 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 LIST_HEAD(phy_fixup_list); | ||||||
| static DEFINE_MUTEX(phy_fixup_lock); | 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 (!d->driver) { | ||||||
| 		if (phydev->is_c45) | 		if (phydev->is_c45) | ||||||
| 			d->driver = &genphy_10g_driver.mdiodrv.driver; | 			d->driver = &genphy_c45_driver.mdiodrv.driver; | ||||||
| 		else | 		else | ||||||
| 			d->driver = &genphy_driver.mdiodrv.driver; | 			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) | bool phy_driver_is_genphy_10g(struct phy_device *phydev) | ||||||
| { | { | ||||||
| 	return phy_driver_is_genphy_kind(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); | EXPORT_SYMBOL_GPL(phy_driver_is_genphy_10g); | ||||||
| 
 | 
 | ||||||
|  | @ -2308,14 +2308,14 @@ static int __init phy_init(void) | ||||||
| 
 | 
 | ||||||
| 	features_init(); | 	features_init(); | ||||||
| 
 | 
 | ||||||
| 	rc = phy_driver_register(&genphy_10g_driver, THIS_MODULE); | 	rc = phy_driver_register(&genphy_c45_driver, THIS_MODULE); | ||||||
| 	if (rc) | 	if (rc) | ||||||
| 		goto err_10g; | 		goto err_c45; | ||||||
| 
 | 
 | ||||||
| 	rc = phy_driver_register(&genphy_driver, THIS_MODULE); | 	rc = phy_driver_register(&genphy_driver, THIS_MODULE); | ||||||
| 	if (rc) { | 	if (rc) { | ||||||
| 		phy_driver_unregister(&genphy_10g_driver); | 		phy_driver_unregister(&genphy_c45_driver); | ||||||
| err_10g: | err_c45: | ||||||
| 		mdio_bus_exit(); | 		mdio_bus_exit(); | ||||||
| 	} | 	} | ||||||
| 
 | 
 | ||||||
|  | @ -2324,7 +2324,7 @@ static int __init phy_init(void) | ||||||
| 
 | 
 | ||||||
| static void __exit phy_exit(void) | static void __exit phy_exit(void) | ||||||
| { | { | ||||||
| 	phy_driver_unregister(&genphy_10g_driver); | 	phy_driver_unregister(&genphy_c45_driver); | ||||||
| 	phy_driver_unregister(&genphy_driver); | 	phy_driver_unregister(&genphy_driver); | ||||||
| 	mdio_bus_exit(); | 	mdio_bus_exit(); | ||||||
| } | } | ||||||
|  |  | ||||||
		Loading…
	
		Reference in a new issue
	
	 Heiner Kallweit
						Heiner Kallweit