forked from mirrors/linux
		
	 ac53c26433
			
		
	
	
		ac53c26433
		
	
	
	
	
		
			
			The newly implemented fwnode_mdbiobus_register turned out to be
problematic - in case the fwnode_/of_/acpi_mdio are built as
modules, a dependency cycle can be observed during the depmod phase of
modules_install, eg.:
depmod: ERROR: Cycle detected: fwnode_mdio -> of_mdio -> fwnode_mdio
depmod: ERROR: Found 2 modules in dependency cycles!
OR:
depmod: ERROR: Cycle detected: acpi_mdio -> fwnode_mdio -> acpi_mdio
depmod: ERROR: Found 2 modules in dependency cycles!
A possible solution could be to rework fwnode_mdiobus_register,
so that to merge the contents of acpi_mdiobus_register and
of_mdiobus_register. However feasible, such change would
be very intrusive and affect huge amount of the of_mdiobus_register
users.
Since there are currently 2 users of ACPI and MDIO
(xgmac_mdio and mvmdio), withdraw the fwnode_mdbiobus_register
and roll back to a simple 'if' condition in affected drivers.
Fixes: 62a6ef6a99 ("net: mdiobus: Introduce fwnode_mdbiobus_register()")
Signed-off-by: Marcin Wojtas <mw@semihalf.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
		
	
			
		
			
				
	
	
		
			35 lines
		
	
	
	
		
			858 B
		
	
	
	
		
			C
		
	
	
	
	
	
			
		
		
	
	
			35 lines
		
	
	
	
		
			858 B
		
	
	
	
		
			C
		
	
	
	
	
	
| /* SPDX-License-Identifier: GPL-2.0-only */
 | |
| /*
 | |
|  * FWNODE helper for the MDIO (Ethernet PHY) API
 | |
|  */
 | |
| 
 | |
| #ifndef __LINUX_FWNODE_MDIO_H
 | |
| #define __LINUX_FWNODE_MDIO_H
 | |
| 
 | |
| #include <linux/phy.h>
 | |
| 
 | |
| #if IS_ENABLED(CONFIG_FWNODE_MDIO)
 | |
| int fwnode_mdiobus_phy_device_register(struct mii_bus *mdio,
 | |
| 				       struct phy_device *phy,
 | |
| 				       struct fwnode_handle *child, u32 addr);
 | |
| 
 | |
| int fwnode_mdiobus_register_phy(struct mii_bus *bus,
 | |
| 				struct fwnode_handle *child, u32 addr);
 | |
| 
 | |
| #else /* CONFIG_FWNODE_MDIO */
 | |
| int fwnode_mdiobus_phy_device_register(struct mii_bus *mdio,
 | |
| 				       struct phy_device *phy,
 | |
| 				       struct fwnode_handle *child, u32 addr)
 | |
| {
 | |
| 	return -EINVAL;
 | |
| }
 | |
| 
 | |
| static inline int fwnode_mdiobus_register_phy(struct mii_bus *bus,
 | |
| 					      struct fwnode_handle *child,
 | |
| 					      u32 addr)
 | |
| {
 | |
| 	return -EINVAL;
 | |
| }
 | |
| #endif
 | |
| 
 | |
| #endif /* __LINUX_FWNODE_MDIO_H */
 |