diff mbox series

[net-next,v3,05/13] leds: trigger: netdev: introduce check for possible hw control

Message ID 20230527112854.2366-6-ansuelsmth@gmail.com
State Superseded
Headers show
Series leds: introduce new LED hw control APIs | expand

Commit Message

Christian Marangi May 27, 2023, 11:28 a.m. UTC
Introduce function to check if the requested mode can use hw control in
preparation for hw control support. Currently everything is handled in
software so can_hw_control will always return false.

Add knob with the new value hw_control in trigger_data struct to
set hw control possible. Useful for future implementation to implement
in set_baseline_state() the required function to set the requested mode
using LEDs hw control ops and in other function to reject set if hw
control is currently active.

Signed-off-by: Christian Marangi <ansuelsmth@gmail.com>
---
 drivers/leds/trigger/ledtrig-netdev.c | 8 ++++++++
 1 file changed, 8 insertions(+)

Comments

Andrew Lunn May 29, 2023, 3:32 p.m. UTC | #1
On Sat, May 27, 2023 at 01:28:46PM +0200, Christian Marangi wrote:
> Introduce function to check if the requested mode can use hw control in
> preparation for hw control support. Currently everything is handled in
> software so can_hw_control will always return false.
> 
> Add knob with the new value hw_control in trigger_data struct to
> set hw control possible. Useful for future implementation to implement
> in set_baseline_state() the required function to set the requested mode
> using LEDs hw control ops and in other function to reject set if hw
> control is currently active.
> 
> Signed-off-by: Christian Marangi <ansuelsmth@gmail.com>

Reviewed-by: Andrew Lunn <andrew@lunn.ch>

    Andrew
diff mbox series

Patch

diff --git a/drivers/leds/trigger/ledtrig-netdev.c b/drivers/leds/trigger/ledtrig-netdev.c
index c93ac3bc85a6..e1f3cedd5d57 100644
--- a/drivers/leds/trigger/ledtrig-netdev.c
+++ b/drivers/leds/trigger/ledtrig-netdev.c
@@ -51,6 +51,7 @@  struct led_netdev_data {
 
 	unsigned long mode;
 	bool carrier_link_up;
+	bool hw_control;
 };
 
 enum led_trigger_netdev_modes {
@@ -91,6 +92,11 @@  static void set_baseline_state(struct led_netdev_data *trigger_data)
 	}
 }
 
+static bool can_hw_control(struct led_netdev_data *trigger_data)
+{
+	return false;
+}
+
 static ssize_t device_name_show(struct device *dev,
 				struct device_attribute *attr, char *buf)
 {
@@ -204,6 +210,8 @@  static ssize_t netdev_led_attr_store(struct device *dev, const char *buf,
 	else
 		clear_bit(bit, &trigger_data->mode);
 
+	trigger_data->hw_control = can_hw_control(trigger_data);
+
 	set_baseline_state(trigger_data);
 
 	return size;