mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git
synced 2024-08-28 20:02:17 +00:00
![Marcin Wojtas](/assets/img/avatar_default.png)
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 */
|