summaryrefslogtreecommitdiffstats
path: root/drivers/net/phy/phy_device.c
diff options
context:
space:
mode:
authorZach Brown2016-10-17 17:49:55 +0200
committerDavid S. Miller2016-10-18 17:56:31 +0200
commit2e0bc452f4721520502575362a9cd3c1248d2337 (patch)
treeab99eed259b226f6294a4540380e15ae9a17432b /drivers/net/phy/phy_device.c
parentnet: phy: Create phy_supported_speeds function which lists speeds currently s... (diff)
downloadkernel-qcow2-linux-2e0bc452f4721520502575362a9cd3c1248d2337.tar.gz
kernel-qcow2-linux-2e0bc452f4721520502575362a9cd3c1248d2337.tar.xz
kernel-qcow2-linux-2e0bc452f4721520502575362a9cd3c1248d2337.zip
net: phy: leds: add support for led triggers on phy link state change
Create an option CONFIG_LED_TRIGGER_PHY (default n), which will create a set of led triggers for each instantiated PHY device. There is one LED trigger per link-speed, per-phy. The triggers are registered during phy_attach and unregistered during phy_detach. This allows for a user to configure their system to allow a set of LEDs not controlled by the phy to represent link state changes on the phy. LEDS controlled by the phy are unaffected. For example, we have a board where some of the leds in the RJ45 socket are controlled by the phy, but others are not. Using the triggers provided by this patch the leds not controlled by the phy can be configured to show the current speed of the ethernet connection. The leds controlled by the phy are unaffected. Signed-off-by: Josh Cartwright <josh.cartwright@ni.com> Signed-off-by: Nathan Sullivan <nathan.sullivan@ni.com> Signed-off-by: Zach Brown <zach.brown@ni.com> Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'drivers/net/phy/phy_device.c')
-rw-r--r--drivers/net/phy/phy_device.c5
1 files changed, 5 insertions, 0 deletions
diff --git a/drivers/net/phy/phy_device.c b/drivers/net/phy/phy_device.c
index ac440a815353..49a1c988d29c 100644
--- a/drivers/net/phy/phy_device.c
+++ b/drivers/net/phy/phy_device.c
@@ -30,6 +30,7 @@
#include <linux/mii.h>
#include <linux/ethtool.h>
#include <linux/phy.h>
+#include <linux/phy_led_triggers.h>
#include <linux/mdio.h>
#include <linux/io.h>
#include <linux/uaccess.h>
@@ -916,6 +917,8 @@ int phy_attach_direct(struct net_device *dev, struct phy_device *phydev,
else
phy_resume(phydev);
+ phy_led_triggers_register(phydev);
+
return err;
error:
@@ -989,6 +992,8 @@ void phy_detach(struct phy_device *phydev)
}
}
+ phy_led_triggers_unregister(phydev);
+
/*
* The phydev might go away on the put_device() below, so avoid
* a use-after-free bug by reading the underlying bus first.