mirror of
				https://github.com/torvalds/linux.git
				synced 2025-11-04 02:30:34 +02:00 
			
		
		
		
	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