From: Ansuel Smith <ansuelsmth@gmail.com>
To: Andrew Lunn <andrew@lunn.ch>,
Vivien Didelot <vivien.didelot@gmail.com>,
Florian Fainelli <f.fainelli@gmail.com>,
Vladimir Oltean <olteanv@gmail.com>,
"David S. Miller" <davem@davemloft.net>,
Jakub Kicinski <kuba@kernel.org>,
Rob Herring <robh+dt@kernel.org>,
Jonathan Corbet <corbet@lwn.net>, Pavel Machek <pavel@ucw.cz>,
Ansuel Smith <ansuelsmth@gmail.com>,
John Crispin <john@phrozen.org>,
netdev@vger.kernel.org, devicetree@vger.kernel.org,
linux-kernel@vger.kernel.org, linux-doc@vger.kernel.org,
linux-leds@vger.kernel.org
Subject: [RFC PATCH 2/6] leds: permit to declare supported offload triggers
Date: Sun, 7 Nov 2021 18:57:14 +0100 [thread overview]
Message-ID: <20211107175718.9151-3-ansuelsmth@gmail.com> (raw)
In-Reply-To: <20211107175718.9151-1-ansuelsmth@gmail.com>
With LEDs that can be offload driven, permit to declare supported triggers
in the dts and add them to the cled struct to be used by the related
offload trigger. This is particurally useful for phy that have support
for HW blinking on tx/rx traffic or based on the speed link.
Signed-off-by: Ansuel Smith <ansuelsmth@gmail.com>
---
Documentation/leds/leds-class.rst | 4 ++++
drivers/leds/led-class.c | 15 ++++++++++++++-
include/linux/leds.h | 5 ++++-
3 files changed, 22 insertions(+), 2 deletions(-)
diff --git a/Documentation/leds/leds-class.rst b/Documentation/leds/leds-class.rst
index 035a738afc4a..ab50b58d6a21 100644
--- a/Documentation/leds/leds-class.rst
+++ b/Documentation/leds/leds-class.rst
@@ -191,6 +191,10 @@ If the second argument (enable) to the trigger_offload() method is false, any
active HW offloading must be deactivated. In this case errors are not permitted
in the trigger_offload() method.
+LEDs can declare the supported offload trigger using linux,supported-offload-triggers
+binding in the dts. This is just an array of string that will be used by any
+offload trigger to check the supported triggers and configure the LED offload mode
+and bheaviour.
Known Issues
============
diff --git a/drivers/leds/led-class.c b/drivers/leds/led-class.c
index f4bb02f6e042..56f75e70b81e 100644
--- a/drivers/leds/led-class.c
+++ b/drivers/leds/led-class.c
@@ -339,7 +339,7 @@ int led_classdev_register_ext(struct device *parent,
char composed_name[LED_MAX_NAME_SIZE];
char final_name[LED_MAX_NAME_SIZE];
const char *proposed_name = composed_name;
- int ret;
+ int count, ret;
if (init_data) {
if (init_data->devname_mandatory && !init_data->devicename) {
@@ -358,6 +358,19 @@ int led_classdev_register_ext(struct device *parent,
if (fwnode_property_present(init_data->fwnode,
"retain-state-shutdown"))
led_cdev->flags |= LED_RETAIN_AT_SHUTDOWN;
+
+ if (fwnode_property_present(init_data->fwnode,
+ "linux,supported-offload-triggers")) {
+ count = fwnode_property_string_array_count(
+ init_data->fwnode, "linux,supported-offload-triggers");
+
+ led_cdev->supported_offload_triggers =
+ kcalloc(count, sizeof(char *), GFP_KERNEL);
+ fwnode_property_read_string_array(
+ init_data->fwnode, "linux,supported-offload-triggers",
+ led_cdev->supported_offload_triggers, count);
+ led_cdev->supported_offload_triggers_count = count;
+ }
}
} else {
proposed_name = led_cdev->name;
diff --git a/include/linux/leds.h b/include/linux/leds.h
index 949ab461287f..ff1f903f8079 100644
--- a/include/linux/leds.h
+++ b/include/linux/leds.h
@@ -157,7 +157,10 @@ struct led_classdev {
#ifdef CONFIG_LEDS_OFFLOAD_TRIGGERS
int offloaded;
- /* some LEDs cne be driven by HW */
+ /* LEDs can have multiple offload triggers */
+ int supported_offload_triggers_count;
+ const char **supported_offload_triggers;
+ /* some LEDs may be able to offload some SW triggers to HW */
int (*trigger_offload)(struct led_classdev *led_cdev,
bool enable);
#endif
--
2.32.0
next prev parent reply other threads:[~2021-11-07 17:58 UTC|newest]
Thread overview: 19+ messages / expand[flat|nested] mbox.gz Atom feed top
2021-11-07 17:57 [RFC PATCH 0/6] Adds support for PHY LEDs with offload triggers Ansuel Smith
2021-11-07 17:57 ` [RFC PATCH 1/6] leds: trigger: add API for HW offloading of triggers Ansuel Smith
2021-11-07 22:52 ` Randy Dunlap
2021-11-07 22:59 ` Ansuel Smith
2021-11-07 17:57 ` Ansuel Smith [this message]
2021-11-07 22:06 ` [RFC PATCH 2/6] leds: permit to declare supported offload triggers Marek Behún
2021-11-07 22:32 ` Ansuel Smith
2021-11-08 13:48 ` Andrew Lunn
2021-11-07 17:57 ` [RFC PATCH 3/6] leds: add function to configure offload leds Ansuel Smith
2021-11-07 22:45 ` Randy Dunlap
2021-11-07 17:57 ` [RFC PATCH 4/6] leds: trigger: add offload-phy-activity trigger Ansuel Smith
2021-11-07 22:10 ` Marek Behún
2021-11-07 22:43 ` Ansuel Smith
2021-11-08 10:00 ` Marek Behún
2021-11-07 22:42 ` Randy Dunlap
2021-11-07 22:46 ` Ansuel Smith
2021-11-07 17:57 ` [RFC PATCH 5/6] net: dsa: qca8k: add LEDs support Ansuel Smith
2021-11-07 22:39 ` Randy Dunlap
2021-11-07 17:57 ` [RFC PATCH 6/6] dt-bindings: net: dsa: qca8k: add LEDs definition example Ansuel Smith
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20211107175718.9151-3-ansuelsmth@gmail.com \
--to=ansuelsmth@gmail.com \
--cc=andrew@lunn.ch \
--cc=corbet@lwn.net \
--cc=davem@davemloft.net \
--cc=devicetree@vger.kernel.org \
--cc=f.fainelli@gmail.com \
--cc=john@phrozen.org \
--cc=kuba@kernel.org \
--cc=linux-doc@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-leds@vger.kernel.org \
--cc=netdev@vger.kernel.org \
--cc=olteanv@gmail.com \
--cc=pavel@ucw.cz \
--cc=robh+dt@kernel.org \
--cc=vivien.didelot@gmail.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).