mirror of
https://github.com/openwrt/openwrt.git
synced 2024-12-22 15:02:32 +00:00
cf08db988b
Backport initial LEDs hw control support. Currently this is limited to
only rx/tx and link events for the netdev trigger but the API got
accepted and the additional modes are working on and will be backported
later.
Refresh every patch and add the additional config flag for QCA8K new
LEDs support.
Signed-off-by: Christian Marangi <ansuelsmth@gmail.com>
Signed-off-by: Daniel Golle <daniel@makrotopia.org>
(cherry picked from commit 0a4b309f41
)
55 lines
1.7 KiB
Diff
55 lines
1.7 KiB
Diff
From 4fd1b6d47a7a38e81fdc6f8be2ccd4216b3f93db Mon Sep 17 00:00:00 2001
|
|
From: Christian Marangi <ansuelsmth@gmail.com>
|
|
Date: Mon, 29 May 2023 18:32:35 +0200
|
|
Subject: [PATCH 05/13] leds: trigger: netdev: introduce check for possible hw
|
|
control
|
|
|
|
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 | 8 ++++++++
|
|
1 file changed, 8 insertions(+)
|
|
|
|
--- 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 le
|
|
}
|
|
}
|
|
|
|
+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(str
|
|
else
|
|
clear_bit(bit, &trigger_data->mode);
|
|
|
|
+ trigger_data->hw_control = can_hw_control(trigger_data);
|
|
+
|
|
set_baseline_state(trigger_data);
|
|
|
|
return size;
|