Commit 31be641d authored by Heiner Kallweit's avatar Heiner Kallweit Committed by Paolo Abeni
Browse files

net: phy: make mdio consumer / device layer a separate module



After having factored out the provider part from mdio_bus.c, we can
make the mdio consumer / device layer a separate module. This also
allows to remove Kconfig symbol MDIO_DEVICE.
The module init / exit functions from mdio_bus.c no longer have to be
called from phy_device.c. The link order defined in
drivers/net/phy/Makefile ensures that init / exit functions are called
in the right order.

Signed-off-by: default avatarHeiner Kallweit <hkallweit1@gmail.com>
Link: https://patch.msgid.link/dba6b156-5748-44ce-b5e2-e8dc2fcee5a7@gmail.com


Signed-off-by: default avatarPaolo Abeni <pabeni@redhat.com>
parent f685204c
Loading
Loading
Loading
Loading
+2 −14
Original line number Diff line number Diff line
@@ -3,21 +3,10 @@
# MDIO Layer Configuration
#

menuconfig MDIO_DEVICE
	tristate "MDIO bus device drivers"
	help
	  MDIO devices and driver infrastructure code.

if MDIO_DEVICE

config MDIO_BUS
	tristate
	default m if PHYLIB=m
	default MDIO_DEVICE
	tristate "MDIO bus consumer layer"
	help
	  This internal symbol is used for link time dependencies and it
	  reflects whether the mdio_bus/mdio_device code is built as a
	  loadable module or built-in.
	  MDIO bus consumer layer

if PHYLIB

@@ -291,4 +280,3 @@ config MDIO_BUS_MUX_MMIOREG


endif
endif
+1 −1
Original line number Diff line number Diff line
@@ -14,7 +14,7 @@ config PHYLINK

menuconfig PHYLIB
	tristate "PHY Device support and infrastructure"
	select MDIO_DEVICE
	select MDIO_BUS
	help
	  Ethernet controllers are usually attached to PHY
	  devices.  This option provides infrastructure for
+5 −13
Original line number Diff line number Diff line
@@ -6,27 +6,19 @@ libphy-y := phy.o phy-c45.o phy-core.o phy_device.o \
				   phy_package.o phy_caps.o mdio_bus_provider.o
mdio-bus-y			+= mdio_bus.o mdio_device.o

ifdef CONFIG_MDIO_DEVICE
obj-y				+= mdio-boardinfo.o
endif

# PHYLIB implies MDIO_DEVICE, in that case, we have a bunch of circular
# dependencies that does not make it possible to split mdio-bus objects into a
# dedicated loadable module, so we bundle them all together into libphy.ko
ifdef CONFIG_PHYLIB
libphy-y			+= $(mdio-bus-y)
# the stubs are built-in whenever PHYLIB is built-in or module
obj-y				+= stubs.o
else
obj-$(CONFIG_MDIO_DEVICE)	+= mdio-bus.o
# built-in whenever PHYLIB is built-in or module
obj-y				+= stubs.o mdio-boardinfo.o
endif
obj-$(CONFIG_PHYLIB)		+= mdio_devres.o

libphy-$(CONFIG_SWPHY)		+= swphy.o
libphy-$(CONFIG_LED_TRIGGER_PHY)	+= phy_led_triggers.o
libphy-$(CONFIG_OPEN_ALLIANCE_HELPERS) += open_alliance_helpers.o

obj-$(CONFIG_MDIO_BUS)		+= mdio-bus.o
obj-$(CONFIG_PHYLINK)		+= phylink.o
obj-$(CONFIG_PHYLIB)		+= libphy.o
obj-$(CONFIG_PHYLIB)		+= mdio_devres.o

obj-$(CONFIG_NETWORK_PHY_TIMESTAMPING) += mii_timestamper.o

+6 −8
Original line number Diff line number Diff line
@@ -988,7 +988,7 @@ const struct bus_type mdio_bus_type = {
};
EXPORT_SYMBOL(mdio_bus_type);

int __init mdio_bus_init(void)
static int __init mdio_bus_init(void)
{
	int ret;

@@ -1002,16 +1002,14 @@ int __init mdio_bus_init(void)
	return ret;
}

#if IS_ENABLED(CONFIG_PHYLIB)
void mdio_bus_exit(void)
static void __exit mdio_bus_exit(void)
{
	class_unregister(&mdio_bus_class);
	bus_unregister(&mdio_bus_type);
}
EXPORT_SYMBOL_GPL(mdio_bus_exit);
#else
module_init(mdio_bus_init);
/* no module_exit, intentional */

subsys_initcall(mdio_bus_init);
module_exit(mdio_bus_exit);

MODULE_LICENSE("GPL");
MODULE_DESCRIPTION("MDIO bus/device layer");
#endif
+1 −0
Original line number Diff line number Diff line
@@ -45,6 +45,7 @@ int mdio_device_bus_match(struct device *dev, const struct device_driver *drv)

	return strcmp(mdiodev->modalias, drv->name) == 0;
}
EXPORT_SYMBOL_GPL(mdio_device_bus_match);

struct mdio_device *mdio_device_create(struct mii_bus *bus, int addr)
{
Loading