1c942fddfSThomas Gleixner /* SPDX-License-Identifier: GPL-2.0-or-later */
22e0bc452SZach Brown /* Copyright (C) 2016 National Instruments Corp.
32e0bc452SZach Brown  */
42e0bc452SZach Brown #ifndef __PHY_LED_TRIGGERS
52e0bc452SZach Brown #define __PHY_LED_TRIGGERS
62e0bc452SZach Brown 
72e0bc452SZach Brown struct phy_device;
82e0bc452SZach Brown 
92e0bc452SZach Brown #ifdef CONFIG_LED_TRIGGER_PHY
102e0bc452SZach Brown 
112e0bc452SZach Brown #include <linux/leds.h>
123c880eb0SGeert Uytterhoeven #include <linux/phy.h>
132e0bc452SZach Brown 
14457937bdSKyle Roeschley #define PHY_LED_TRIGGER_SPEED_SUFFIX_SIZE	11
152e0bc452SZach Brown 
163c880eb0SGeert Uytterhoeven #define PHY_LINK_LED_TRIGGER_NAME_SIZE (MII_BUS_ID_SIZE + \
17c593642cSPankaj Bharadiya 				       sizeof_field(struct mdio_device, addr)+\
182e0bc452SZach Brown 				       PHY_LED_TRIGGER_SPEED_SUFFIX_SIZE)
192e0bc452SZach Brown 
202e0bc452SZach Brown struct phy_led_trigger {
212e0bc452SZach Brown 	struct led_trigger trigger;
222e0bc452SZach Brown 	char name[PHY_LINK_LED_TRIGGER_NAME_SIZE];
232e0bc452SZach Brown 	unsigned int speed;
242e0bc452SZach Brown };
252e0bc452SZach Brown 
262e0bc452SZach Brown 
272e0bc452SZach Brown extern int phy_led_triggers_register(struct phy_device *phy);
282e0bc452SZach Brown extern void phy_led_triggers_unregister(struct phy_device *phy);
292e0bc452SZach Brown extern void phy_led_trigger_change_speed(struct phy_device *phy);
302e0bc452SZach Brown 
312e0bc452SZach Brown #else
322e0bc452SZach Brown 
phy_led_triggers_register(struct phy_device * phy)332e0bc452SZach Brown static inline int phy_led_triggers_register(struct phy_device *phy)
342e0bc452SZach Brown {
352e0bc452SZach Brown 	return 0;
362e0bc452SZach Brown }
phy_led_triggers_unregister(struct phy_device * phy)372e0bc452SZach Brown static inline void phy_led_triggers_unregister(struct phy_device *phy) { }
phy_led_trigger_change_speed(struct phy_device * phy)382e0bc452SZach Brown static inline void phy_led_trigger_change_speed(struct phy_device *phy) { }
392e0bc452SZach Brown 
402e0bc452SZach Brown #endif
412e0bc452SZach Brown 
422e0bc452SZach Brown #endif
43