1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465 |
- From 4bb7aac70b5d8a4bddf4ee0791b834f9f56883d2 Mon Sep 17 00:00:00 2001
- From: Arnd Bergmann <[email protected]>
- Date: Thu, 20 Apr 2023 10:45:51 +0200
- Subject: [PATCH] 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: 01e5b728e9e4 ("net: phy: Add a binding for PHY LEDs")
- Signed-off-by: Arnd Bergmann <[email protected]>
- Reviewed-by: Andrew Lunn <[email protected]>
- Link: https://lore.kernel.org/r/[email protected]
- Signed-off-by: Jakub Kicinski <[email protected]>
- ---
- drivers/net/phy/Kconfig | 9 ++++++++-
- drivers/net/phy/phy_device.c | 3 ++-
- 2 files changed, 10 insertions(+), 2 deletions(-)
- --- a/drivers/net/phy/Kconfig
- +++ b/drivers/net/phy/Kconfig
- @@ -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"
- --- a/drivers/net/phy/phy_device.c
- +++ b/drivers/net/phy/phy_device.c
- @@ -3210,7 +3210,8 @@ static int phy_probe(struct device *dev)
- /* Get the LEDs from the device tree, and instantiate standard
- * LEDs for them.
- */
- - err = of_phy_leds(phydev);
- + if (IS_ENABLED(CONFIG_PHYLIB_LEDS))
- + err = of_phy_leds(phydev);
-
- out:
- /* Re-assert the reset signal on error */
|