mirror of
				https://github.com/torvalds/linux.git
				synced 2025-11-04 10:40:15 +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);
 | 
					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