Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 12459cbd authored by David S. Miller's avatar David S. Miller
Browse files

Merge branch 'phy-mdio-split'



Florian Fainelli says:

====================
net: phy: Allow splitting MDIO bus/device support

This patch series allows building support for MDIO bus controllers which
are sometimes usable and necessary in cases where there are no Ethernet PHYs.

Changes in v3:
- corrected of_mdio compile guards for prototypes vs. stubs
- added a missing OF_MDIO dependency for MDIO_BCM_UNIMAC
- fixed Kbuild bot reported errors against mdio-bitbang

Changes in v2:
- implement Russell's feedback
- solve the circular dependency in the CONFIG_MDIO_DEVICE + CONFIG_PHYLIB case
====================

Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
parents 5952fde1 90eff909
Loading
Loading
Loading
Loading
+1 −1
Original line number Diff line number Diff line
@@ -18,7 +18,7 @@ obj-$(CONFIG_MII) += mii.o
obj-$(CONFIG_MDIO) += mdio.o
obj-$(CONFIG_NET) += Space.o loopback.o
obj-$(CONFIG_NETCONSOLE) += netconsole.o
obj-$(CONFIG_PHYLIB) += phy/
obj-$(CONFIG_MDIO_DEVICE) += phy/
obj-$(CONFIG_RIONET) += rionet.o
obj-$(CONFIG_NET_TEAM) += team/
obj-$(CONFIG_TUN) += tun.o
+36 −26
Original line number Diff line number Diff line
@@ -2,33 +2,12 @@
# PHY Layer Configuration
#

menuconfig PHYLIB
	tristate "PHY Device support and infrastructure"
	depends on NETDEVICES
menuconfig MDIO_DEVICE
	tristate "MDIO bus device drivers"
	help
	  Ethernet controllers are usually attached to PHY
	  devices.  This option provides infrastructure for
	  managing PHY devices.

if PHYLIB
	   MDIO devices and driver infrastructure code.

config SWPHY
	bool

config LED_TRIGGER_PHY
	bool "Support LED triggers for tracking link state"
	depends on LEDS_TRIGGERS
	---help---
	  Adds support for a set of LED trigger events per-PHY.  Link
	  state change will trigger the events, for consumption by an
	  LED class driver.  There are triggers for each link speed currently
	  supported by the phy, and are of the form:
	       <mii bus id>:<phy>:<speed>

	  Where speed is in the form:
		<Speed in megabits>Mbps or <Speed in gigabits>Gbps

comment "MDIO bus device drivers"
if MDIO_DEVICE

config MDIO_BCM_IPROC
	tristate "Broadcom iProc MDIO bus controller"
@@ -40,7 +19,7 @@ config MDIO_BCM_IPROC

config MDIO_BCM_UNIMAC
	tristate "Broadcom UniMAC MDIO bus controller"
	depends on HAS_IOMEM
	depends on HAS_IOMEM && OF_MDIO
	help
	  This module provides a driver for the Broadcom UniMAC MDIO busses.
	  This hardware can be found in the Broadcom GENET Ethernet MAC
@@ -49,6 +28,7 @@ config MDIO_BCM_UNIMAC

config MDIO_BITBANG
	tristate "Bitbanged MDIO buses"
	depends on !(MDIO_DEVICE=y && PHYLIB=m)
	help
	  This module implements the MDIO bus protocol in software,
	  for use by low level drivers that export the ability to
@@ -160,6 +140,36 @@ config MDIO_XGENE
	  This module provides a driver for the MDIO busses found in the
	  APM X-Gene SoC's.

endif

menuconfig PHYLIB
	tristate "PHY Device support and infrastructure"
	depends on NETDEVICES
	select MDIO_DEVICE
	help
	  Ethernet controllers are usually attached to PHY
	  devices.  This option provides infrastructure for
	  managing PHY devices.

if PHYLIB

config SWPHY
	bool

config LED_TRIGGER_PHY
	bool "Support LED triggers for tracking link state"
	depends on LEDS_TRIGGERS
	---help---
	  Adds support for a set of LED trigger events per-PHY.  Link
	  state change will trigger the events, for consumption by an
	  LED class driver.  There are triggers for each link speed currently
	  supported by the phy, and are of the form:
	       <mii bus id>:<phy>:<speed>

	  Where speed is in the form:
		<Speed in megabits>Mbps or <Speed in gigabits>Gbps


comment "MII PHY device drivers"

config AMD_PHY
+11 −2
Original line number Diff line number Diff line
# Makefile for Linux PHY drivers and MDIO bus drivers

libphy-y			:= phy.o phy_device.o mdio_bus.o mdio_device.o \
				   mdio-boardinfo.o phy-core.o
libphy-y			:= phy.o phy-core.o phy_device.o
mdio-bus-y			+= mdio_bus.o mdio_device.o mdio-boardinfo.o

# 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)
else
obj-$(CONFIG_MDIO_DEVICE)	+= mdio-bus.o
endif
libphy-$(CONFIG_SWPHY)		+= swphy.o
libphy-$(CONFIG_LED_TRIGGER_PHY)	+= phy_led_triggers.o

+1 −0
Original line number Diff line number Diff line
@@ -84,3 +84,4 @@ int mdiobus_register_board_info(const struct mdio_board_info *info,

	return 0;
}
EXPORT_SYMBOL(mdiobus_register_board_info);
+9 −0
Original line number Diff line number Diff line
@@ -648,9 +648,18 @@ int __init mdio_bus_init(void)

	return ret;
}
EXPORT_SYMBOL_GPL(mdio_bus_init);

#if IS_ENABLED(CONFIG_PHYLIB)
void 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 */
MODULE_LICENSE("GPL");
MODULE_DESCRIPTION("MDIO bus/device layer");
#endif
Loading