linux-kernel.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [PATCH v6 1/6] leds: Add new API to derive a LED name
@ 2017-12-01 16:56 Dan Murphy
  2017-12-01 16:56 ` [PATCH v6 2/6] dt: bindings: lm3692x: Add bindings for lm3692x LED driver Dan Murphy
                   ` (5 more replies)
  0 siblings, 6 replies; 20+ messages in thread
From: Dan Murphy @ 2017-12-01 16:56 UTC (permalink / raw)
  To: rpurdie, jacek.anaszewski, pavel; +Cc: linux-leds, linux-kernel, Dan Murphy

Create an API that is called to derive the
LED name from either the DT label in the child
node or if that does not exist from the parent
node name and an alternate label that is passed in.

Signed-off-by: Dan Murphy <dmurphy@ti.com>
---

v6 - New patch to add the api to generate a LED label

 drivers/leds/led-class.c | 34 ++++++++++++++++++++++++++++++++++
 include/linux/leds.h     |  6 ++++++
 2 files changed, 40 insertions(+)

diff --git a/drivers/leds/led-class.c b/drivers/leds/led-class.c
index b0e2d55acbd6..d3e035488737 100644
--- a/drivers/leds/led-class.c
+++ b/drivers/leds/led-class.c
@@ -17,6 +17,7 @@
 #include <linux/leds.h>
 #include <linux/list.h>
 #include <linux/module.h>
+#include <linux/of.h>
 #include <linux/slab.h>
 #include <linux/spinlock.h>
 #include <linux/timer.h>
@@ -243,6 +244,39 @@ static int led_classdev_next_name(const char *init_name, char *name,
 	return i;
 }
 
+/**
+ * of_led_compose_name - derive the LED name based on DT or alternate name.
+ *
+ * @parent: parent of LED device
+ * @child: child node of LED device
+ * @alt_name: an alternate name if the label node is not found
+ * @len: length of the alt_name
+ * @led_name: derived name from either DT label or alt_name
+ */
+void of_led_compose_name(struct device_node *parent,
+                     struct device_node *child,
+		     const char *alt_name,
+		     size_t len,
+		     char *led_name)
+{
+	int ret;
+	int length;
+	const char *name;
+
+	if (len == 0 || alt_name == NULL)
+		return;
+
+	ret = of_property_read_string(child, "label", &name);
+	if (!ret) {
+		strlcpy(led_name, name, sizeof(led_name));
+	} else {
+		length = len + strlen(parent->name) + 1;
+		snprintf(led_name, len, "%s:%s", parent->name, alt_name);
+	}
+
+}
+EXPORT_SYMBOL_GPL(of_led_compose_name);
+
 /**
  * of_led_classdev_register - register a new object of led_classdev class.
  *
diff --git a/include/linux/leds.h b/include/linux/leds.h
index 5579c64c8fd6..9e18dbe196e2 100644
--- a/include/linux/leds.h
+++ b/include/linux/leds.h
@@ -123,6 +123,12 @@ struct led_classdev {
 	struct mutex		led_access;
 };
 
+extern void of_led_compose_name(struct device_node *parent,
+                     struct device_node *child,
+		     const char *alt_name,
+		     size_t len,
+		     char *led_name);
+
 extern int of_led_classdev_register(struct device *parent,
 				    struct device_node *np,
 				    struct led_classdev *led_cdev);
-- 
2.15.0.124.g7668cbc60

^ permalink raw reply related	[flat|nested] 20+ messages in thread

end of thread, other threads:[~2017-12-05 19:59 UTC | newest]

Thread overview: 20+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2017-12-01 16:56 [PATCH v6 1/6] leds: Add new API to derive a LED name Dan Murphy
2017-12-01 16:56 ` [PATCH v6 2/6] dt: bindings: lm3692x: Add bindings for lm3692x LED driver Dan Murphy
2017-12-01 16:56 ` [PATCH v6 3/6] leds: lm3692x: Introduce LM3692x dual string driver Dan Murphy
2017-12-01 16:56 ` [PATCH v6 4/6] dt: bindings: lp8860: Update the bindings to the standard Dan Murphy
2017-12-03 13:27   ` Jacek Anaszewski
2017-12-04 22:35     ` Rob Herring
2017-12-05 13:06       ` Dan Murphy
2017-12-03 13:49   ` Jacek Anaszewski
2017-12-03 14:34     ` Jacek Anaszewski
2017-12-01 16:56 ` [PATCH v6 5/6] leds: lp8860: Update the LED label generation Dan Murphy
2017-12-01 16:59   ` Dan Murphy
2017-12-03 14:00     ` Jacek Anaszewski
2017-12-03 13:57   ` Jacek Anaszewski
2017-12-04 13:11     ` Dan Murphy
2017-12-05 19:56       ` Jacek Anaszewski
2017-12-05 19:59         ` Dan Murphy
2017-12-01 16:56 ` [PATCH v6 6/6] leds: as3645a: " Dan Murphy
2017-12-01 16:58   ` Dan Murphy
2017-12-03 13:27 ` [PATCH v6 1/6] leds: Add new API to derive a LED name Jacek Anaszewski
2017-12-04 13:09   ` Dan Murphy

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).