Commit 4bb7aac7 authored by Arnd Bergmann's avatar Arnd Bergmann Committed by Jakub Kicinski
Browse files

net: phy: fix circular LEDS_CLASS dependencies



The CONFIG_PHYLIB symbol is selected by a number of device drivers that
need PHY support, but it now has a dependency on CONFIG_LEDS_CLASS,
which may not be enabled, causing build failures.

Avoid the risk of missing and circular dependencies by guarding the
phylib LED support itself in another Kconfig symbol that can only be
enabled if the dependency is met.

This could be made a hidden symbol and always enabled when both CONFIG_OF
and CONFIG_LEDS_CLASS are reachable from the phylib, but there may be an
advantage in having users see this option when they have a misconfigured
kernel without built-in LED support.

Fixes: 01e5b728 ("net: phy: Add a binding for PHY LEDs")
Signed-off-by: default avatarArnd Bergmann <arnd@arndb.de>
Reviewed-by: default avatarAndrew Lunn <andrew@lunn.ch>
Link: https://lore.kernel.org/r/20230420084624.3005701-1-arnd@kernel.org


Signed-off-by: default avatarJakub Kicinski <kuba@kernel.org>
parent 681c5b51
Loading
Loading
Loading
Loading
+8 −1
Original line number Diff line number Diff line
@@ -18,7 +18,6 @@ menuconfig PHYLIB
	depends on NETDEVICES
	select MDIO_DEVICE
	select MDIO_DEVRES
	depends on LEDS_CLASS || LEDS_CLASS=n
	help
	  Ethernet controllers are usually attached to PHY
	  devices.  This option provides infrastructure for
@@ -45,6 +44,14 @@ config LED_TRIGGER_PHY
		<Speed in megabits>Mbps OR <Speed in gigabits>Gbps OR link
		for any speed known to the PHY.

config PHYLIB_LEDS
	bool "Support probing LEDs from device tree"
	depends on LEDS_CLASS=y || LEDS_CLASS=PHYLIB
	depends on OF
	default y
	help
	  When LED class support is enabled, phylib can automatically
	  probe LED setting from device tree.

config FIXED_PHY
	tristate "MDIO Bus/PHY emulation with fixed speed/link PHYs"
+2 −1
Original line number Diff line number Diff line
@@ -3284,6 +3284,7 @@ static int phy_probe(struct device *dev)
	/* Get the LEDs from the device tree, and instantiate standard
	 * LEDs for them.
	 */
	if (IS_ENABLED(CONFIG_PHYLIB_LEDS))
		err = of_phy_leds(phydev);

out: