leds: trigger: netdev: introduce check for possible hw control
authorChristian Marangi <ansuelsmth@gmail.com>
Mon, 29 May 2023 16:32:35 +0000 (18:32 +0200)
committerDavid S. Miller <davem@davemloft.net>
Wed, 31 May 2023 08:42:08 +0000 (09:42 +0100)
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>
Signed-off-by: David S. Miller <davem@davemloft.net>
drivers/leds/trigger/ledtrig-netdev.c

index c93ac3bc85a63d0fae4b8a995e8024ee5c121f6d..e1f3cedd5d5710b34a629d8202c1b362c440932e 100644 (file)
@@ -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;