* [PATCH 0/5] Numerous fixes for LP8860
@ 2017-12-04 21:20 Dan Murphy
2017-12-04 21:20 ` [PATCH 2/5] leds: lp8860: Update the dt parsing for LED labeling Dan Murphy
` (3 more replies)
0 siblings, 4 replies; 6+ messages in thread
From: Dan Murphy @ 2017-12-04 21:20 UTC (permalink / raw)
To: robh+dt, mark.rutland, rpurdie, jacek.anaszewski, pavel
Cc: linux-kernel, linux-leds, Dan Murphy
All
After creating a new LED driver for the LM3692x device I went back to the
LP8860 driver that I authored and found some updates that need to be applied.
First the way the LP8860 retrieved the label from the DT was incorrect as the
label should have been from a child node as opposed to the parent. This is now
fixed with this series.
Second, since that device can be used to as either a backlight driver or as a
string agnostic driver a trigger to the backlight needed to be added.
Finally there are changes to the driver that need to be made as either
unnoticed bugs or updates to the driver to align with the current LED
framework. For instance moving to the devm LED class registration, destroying
the mutex upon driver removal and removing the in driver dependency on CONFIG_OF
and moving it to the Kconfig.
With these changes this should at least bring the driver into a better shape.
There are additional changes coming for this driver but I wanted to get the
driver up to snuff before adding a feature to it.
Dan
Dan Murphy (5):
dt: bindings: lp8860: Update DT label binding
leds: lp8860: Update the dt parsing for LED labeling
dt: bindings: lp8860: Add trigger binding to the lp8860
leds: lp8860: Add DT parsing to retrieve the trigger node
leds: lp8860: Various fixes to align with LED framework
.../devicetree/bindings/leds/leds-lp8860.txt | 20 +++++++----
drivers/leds/Kconfig | 2 +-
drivers/leds/leds-lp8860.c | 40 ++++++++++++----------
3 files changed, 35 insertions(+), 27 deletions(-)
--
2.15.0.124.g7668cbc60
^ permalink raw reply [flat|nested] 6+ messages in thread
* [PATCH 1/5] dt: bindings: lp8860: Update DT label binding
[not found] ` <20171204212026.14214-1-dmurphy-l0cyMroinI0@public.gmane.org>
@ 2017-12-04 21:20 ` Dan Murphy
2017-12-04 21:20 ` [PATCH 3/5] dt: bindings: lp8860: Add trigger binding to the lp8860 Dan Murphy
1 sibling, 0 replies; 6+ messages in thread
From: Dan Murphy @ 2017-12-04 21:20 UTC (permalink / raw)
To: robh+dt-DgEjT+Ai2ygdnm+yROfE0A, mark.rutland-5wv7dgnIgG8,
rpurdie-Fm38FmjxZ/leoWH0uzbU5w,
jacek.anaszewski-Re5JQEeQqe8AvxtiuMwx3w, pavel-+ZI9xUNit7I
Cc: linux-kernel-u79uwXL29TY76Z2rM5mHXA,
linux-leds-u79uwXL29TY76Z2rM5mHXA, Dan Murphy,
devicetree-u79uwXL29TY76Z2rM5mHXA
Update the lp8860 label binding to the LED
standard as documented in
Documentation/devicetree/bindings/leds/common.txt
Signed-off-by: Dan Murphy <dmurphy-l0cyMroinI0@public.gmane.org>
cc: devicetree-u79uwXL29TY76Z2rM5mHXA@public.gmane.org
---
Documentation/devicetree/bindings/leds/leds-lp8860.txt | 7 +++++--
1 file changed, 5 insertions(+), 2 deletions(-)
diff --git a/Documentation/devicetree/bindings/leds/leds-lp8860.txt b/Documentation/devicetree/bindings/leds/leds-lp8860.txt
index aad38dd94d4b..e3a5e91f965b 100644
--- a/Documentation/devicetree/bindings/leds/leds-lp8860.txt
+++ b/Documentation/devicetree/bindings/leds/leds-lp8860.txt
@@ -9,9 +9,9 @@ Required properties:
- compatible:
"ti,lp8860"
- reg - I2C slave address
- - label - Used for naming LEDs
Optional properties:
+ - label : see Documentation/devicetree/bindings/leds/common.txt
- enable-gpio - gpio pin to enable/disable the device.
- supply - "vled" - LED supply
@@ -20,9 +20,12 @@ Example:
leds: leds@6 {
compatible = "ti,lp8860";
reg = <0x2d>;
- label = "display_cluster";
enable-gpio = <&gpio1 28 GPIO_ACTIVE_HIGH>;
vled-supply = <&vbatt>;
+
+ display_cluster: display_cluster@0 {
+ label = "display_cluster";
+ };
}
For more product information please see the link below:
--
2.15.0.124.g7668cbc60
--
To unsubscribe from this list: send the line "unsubscribe devicetree" in
the body of a message to majordomo-u79uwXL29TY76Z2rM5mHXA@public.gmane.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
^ permalink raw reply related [flat|nested] 6+ messages in thread
* [PATCH 2/5] leds: lp8860: Update the dt parsing for LED labeling
2017-12-04 21:20 [PATCH 0/5] Numerous fixes for LP8860 Dan Murphy
@ 2017-12-04 21:20 ` Dan Murphy
[not found] ` <20171204212026.14214-1-dmurphy-l0cyMroinI0@public.gmane.org>
` (2 subsequent siblings)
3 siblings, 0 replies; 6+ messages in thread
From: Dan Murphy @ 2017-12-04 21:20 UTC (permalink / raw)
To: robh+dt, mark.rutland, rpurdie, jacek.anaszewski, pavel
Cc: linux-kernel, linux-leds, Dan Murphy
Update the DT parsing for the label node so that
the label is retrieved from the device child as
opposed to being part of the parent.
This will align this driver with the LED
binding documentation
Documentation/devicetree/bindings/leds/common.txt
Signed-off-by: Dan Murphy <dmurphy@ti.com>
---
drivers/leds/leds-lp8860.c | 23 ++++++++++++-----------
1 file changed, 12 insertions(+), 11 deletions(-)
diff --git a/drivers/leds/leds-lp8860.c b/drivers/leds/leds-lp8860.c
index 3e70775a2d54..13d6210cba85 100644
--- a/drivers/leds/leds-lp8860.c
+++ b/drivers/leds/leds-lp8860.c
@@ -22,6 +22,7 @@
#include <linux/of_gpio.h>
#include <linux/gpio/consumer.h>
#include <linux/slab.h>
+#include <uapi/linux/uleds.h>
#define LP8860_DISP_CL1_BRT_MSB 0x00
#define LP8860_DISP_CL1_BRT_LSB 0x01
@@ -86,8 +87,6 @@
#define LP8860_CLEAR_FAULTS 0x01
-#define LP8860_DISP_LED_NAME "display_cluster"
-
/**
* struct lp8860_led -
* @lock - Lock for reading/writing the device
@@ -107,7 +106,7 @@ struct lp8860_led {
struct regmap *eeprom_regmap;
struct gpio_desc *enable_gpio;
struct regulator *regulator;
- const char *label;
+ char label[LED_MAX_NAME_SIZE];
};
struct lp8860_eeprom_reg {
@@ -365,19 +364,21 @@ static int lp8860_probe(struct i2c_client *client,
int ret;
struct lp8860_led *led;
struct device_node *np = client->dev.of_node;
+ struct device_node *child_node;
+ const char *name;
led = devm_kzalloc(&client->dev, sizeof(*led), GFP_KERNEL);
if (!led)
return -ENOMEM;
- led->label = LP8860_DISP_LED_NAME;
-
- if (client->dev.of_node) {
- ret = of_property_read_string(np, "label", &led->label);
- if (ret) {
- dev_err(&client->dev, "Missing label in dt\n");
- return -EINVAL;
- }
+ for_each_available_child_of_node(np, child_node) {
+ ret = of_property_read_string(child_node, "label", &name);
+ if (!ret)
+ snprintf(led->label, sizeof(led->label), "%s:%s",
+ np->name, name);
+ else
+ snprintf(led->label, sizeof(led->label),
+ "%s::display_cluster", np->name);
}
led->enable_gpio = devm_gpiod_get_optional(&client->dev,
--
2.15.0.124.g7668cbc60
^ permalink raw reply related [flat|nested] 6+ messages in thread
* [PATCH 3/5] dt: bindings: lp8860: Add trigger binding to the lp8860
[not found] ` <20171204212026.14214-1-dmurphy-l0cyMroinI0@public.gmane.org>
2017-12-04 21:20 ` [PATCH 1/5] dt: bindings: lp8860: Update DT label binding Dan Murphy
@ 2017-12-04 21:20 ` Dan Murphy
1 sibling, 0 replies; 6+ messages in thread
From: Dan Murphy @ 2017-12-04 21:20 UTC (permalink / raw)
To: robh+dt-DgEjT+Ai2ygdnm+yROfE0A, mark.rutland-5wv7dgnIgG8,
rpurdie-Fm38FmjxZ/leoWH0uzbU5w,
jacek.anaszewski-Re5JQEeQqe8AvxtiuMwx3w, pavel-+ZI9xUNit7I
Cc: linux-kernel-u79uwXL29TY76Z2rM5mHXA,
linux-leds-u79uwXL29TY76Z2rM5mHXA, Dan Murphy,
devicetree-u79uwXL29TY76Z2rM5mHXA
Add a default trigger optional node to the child node.
This will allow the driver to set the trigger for a backlight.
Signed-off-by: Dan Murphy <dmurphy-l0cyMroinI0@public.gmane.org>
cc: devicetree-u79uwXL29TY76Z2rM5mHXA@public.gmane.org
---
Documentation/devicetree/bindings/leds/leds-lp8860.txt | 13 ++++++++-----
1 file changed, 8 insertions(+), 5 deletions(-)
diff --git a/Documentation/devicetree/bindings/leds/leds-lp8860.txt b/Documentation/devicetree/bindings/leds/leds-lp8860.txt
index e3a5e91f965b..40543e62da48 100644
--- a/Documentation/devicetree/bindings/leds/leds-lp8860.txt
+++ b/Documentation/devicetree/bindings/leds/leds-lp8860.txt
@@ -6,25 +6,28 @@ current sinks that can be controlled by a PWM input
signal, a SPI/I2C master, or both.
Required properties:
- - compatible:
+ - compatible :
"ti,lp8860"
- - reg - I2C slave address
+ - reg : I2C slave address
Optional properties:
- label : see Documentation/devicetree/bindings/leds/common.txt
- - enable-gpio - gpio pin to enable/disable the device.
- - supply - "vled" - LED supply
+ - enable-gpios : gpio pin to enable/disable the device.
+ - supply : "vled" - LED supply
+ - linux,default-trigger : (optional)
+ see Documentation/devicetree/bindings/leds/common.txt
Example:
leds: leds@6 {
compatible = "ti,lp8860";
reg = <0x2d>;
- enable-gpio = <&gpio1 28 GPIO_ACTIVE_HIGH>;
+ enable-gpios = <&gpio1 28 GPIO_ACTIVE_HIGH>;
vled-supply = <&vbatt>;
display_cluster: display_cluster@0 {
label = "display_cluster";
+ linux,default-trigger = "backlight";
};
}
--
2.15.0.124.g7668cbc60
--
To unsubscribe from this list: send the line "unsubscribe devicetree" in
the body of a message to majordomo-u79uwXL29TY76Z2rM5mHXA@public.gmane.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
^ permalink raw reply related [flat|nested] 6+ messages in thread
* [PATCH 4/5] leds: lp8860: Add DT parsing to retrieve the trigger node
2017-12-04 21:20 [PATCH 0/5] Numerous fixes for LP8860 Dan Murphy
2017-12-04 21:20 ` [PATCH 2/5] leds: lp8860: Update the dt parsing for LED labeling Dan Murphy
[not found] ` <20171204212026.14214-1-dmurphy-l0cyMroinI0@public.gmane.org>
@ 2017-12-04 21:20 ` Dan Murphy
2017-12-04 21:20 ` [PATCH 5/5] leds: lp8860: Various fixes to align with LED framework Dan Murphy
3 siblings, 0 replies; 6+ messages in thread
From: Dan Murphy @ 2017-12-04 21:20 UTC (permalink / raw)
To: robh+dt, mark.rutland, rpurdie, jacek.anaszewski, pavel
Cc: linux-kernel, linux-leds, Dan Murphy
Add the ability to parse the DT and set the default
trigger mode for the LED.
Signed-off-by: Dan Murphy <dmurphy@ti.com>
---
drivers/leds/leds-lp8860.c | 4 ++++
1 file changed, 4 insertions(+)
diff --git a/drivers/leds/leds-lp8860.c b/drivers/leds/leds-lp8860.c
index 13d6210cba85..4fed603ee728 100644
--- a/drivers/leds/leds-lp8860.c
+++ b/drivers/leds/leds-lp8860.c
@@ -372,6 +372,10 @@ static int lp8860_probe(struct i2c_client *client,
return -ENOMEM;
for_each_available_child_of_node(np, child_node) {
+ led->led_dev.default_trigger = of_get_property(child_node,
+ "linux,default-trigger",
+ NULL);
+
ret = of_property_read_string(child_node, "label", &name);
if (!ret)
snprintf(led->label, sizeof(led->label), "%s:%s",
--
2.15.0.124.g7668cbc60
^ permalink raw reply related [flat|nested] 6+ messages in thread
* [PATCH 5/5] leds: lp8860: Various fixes to align with LED framework
2017-12-04 21:20 [PATCH 0/5] Numerous fixes for LP8860 Dan Murphy
` (2 preceding siblings ...)
2017-12-04 21:20 ` [PATCH 4/5] leds: lp8860: Add DT parsing to retrieve the trigger node Dan Murphy
@ 2017-12-04 21:20 ` Dan Murphy
3 siblings, 0 replies; 6+ messages in thread
From: Dan Murphy @ 2017-12-04 21:20 UTC (permalink / raw)
To: robh+dt, mark.rutland, rpurdie, jacek.anaszewski, pavel
Cc: linux-kernel, linux-leds, Dan Murphy
Update the driver to conform with the LED framework.
Use devm_led_classdev_register
Destroy mutex on exit
Remove dependency on CONFIG_OF in the driver and move
to the Kconfig
Update the MODULE_LICENSE to GPL v2
Remove setting of MAX brightness as the LED framework
does this.
Signed-off-by: Dan Murphy <dmurphy@ti.com>
---
drivers/leds/Kconfig | 2 +-
drivers/leds/leds-lp8860.c | 13 +++++--------
2 files changed, 6 insertions(+), 9 deletions(-)
diff --git a/drivers/leds/Kconfig b/drivers/leds/Kconfig
index 318a28fd58fe..ac4d9d8bf96b 100644
--- a/drivers/leds/Kconfig
+++ b/drivers/leds/Kconfig
@@ -347,7 +347,7 @@ config LEDS_LP8788
config LEDS_LP8860
tristate "LED support for the TI LP8860 4 channel LED driver"
- depends on LEDS_CLASS && I2C
+ depends on LEDS_CLASS && I2C && OF
select REGMAP_I2C
help
If you say yes here you get support for the TI LP8860 4 channel
diff --git a/drivers/leds/leds-lp8860.c b/drivers/leds/leds-lp8860.c
index 4fed603ee728..e94041e0e693 100644
--- a/drivers/leds/leds-lp8860.c
+++ b/drivers/leds/leds-lp8860.c
@@ -399,7 +399,6 @@ static int lp8860_probe(struct i2c_client *client,
led->client = client;
led->led_dev.name = led->label;
- led->led_dev.max_brightness = LED_FULL;
led->led_dev.brightness_set_blocking = lp8860_brightness_set;
mutex_init(&led->lock);
@@ -426,7 +425,7 @@ static int lp8860_probe(struct i2c_client *client,
if (ret)
return ret;
- ret = led_classdev_register(&client->dev, &led->led_dev);
+ ret = devm_led_classdev_register(&client->dev, &led->led_dev);
if (ret) {
dev_err(&client->dev, "led register err: %d\n", ret);
return ret;
@@ -440,8 +439,6 @@ static int lp8860_remove(struct i2c_client *client)
struct lp8860_led *led = i2c_get_clientdata(client);
int ret;
- led_classdev_unregister(&led->led_dev);
-
if (led->enable_gpio)
gpiod_direction_output(led->enable_gpio, 0);
@@ -452,6 +449,8 @@ static int lp8860_remove(struct i2c_client *client)
"Failed to disable regulator\n");
}
+ mutex_destroy(&led->lock);
+
return 0;
}
@@ -461,18 +460,16 @@ static const struct i2c_device_id lp8860_id[] = {
};
MODULE_DEVICE_TABLE(i2c, lp8860_id);
-#ifdef CONFIG_OF
static const struct of_device_id of_lp8860_leds_match[] = {
{ .compatible = "ti,lp8860", },
{},
};
MODULE_DEVICE_TABLE(of, of_lp8860_leds_match);
-#endif
static struct i2c_driver lp8860_driver = {
.driver = {
.name = "lp8860",
- .of_match_table = of_match_ptr(of_lp8860_leds_match),
+ .of_match_table = of_lp8860_leds_match,
},
.probe = lp8860_probe,
.remove = lp8860_remove,
@@ -482,4 +479,4 @@ module_i2c_driver(lp8860_driver);
MODULE_DESCRIPTION("Texas Instruments LP8860 LED driver");
MODULE_AUTHOR("Dan Murphy <dmurphy@ti.com>");
-MODULE_LICENSE("GPL");
+MODULE_LICENSE("GPL v2");
--
2.15.0.124.g7668cbc60
^ permalink raw reply related [flat|nested] 6+ messages in thread
end of thread, other threads:[~2017-12-04 21:21 UTC | newest]
Thread overview: 6+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2017-12-04 21:20 [PATCH 0/5] Numerous fixes for LP8860 Dan Murphy
2017-12-04 21:20 ` [PATCH 2/5] leds: lp8860: Update the dt parsing for LED labeling Dan Murphy
[not found] ` <20171204212026.14214-1-dmurphy-l0cyMroinI0@public.gmane.org>
2017-12-04 21:20 ` [PATCH 1/5] dt: bindings: lp8860: Update DT label binding Dan Murphy
2017-12-04 21:20 ` [PATCH 3/5] dt: bindings: lp8860: Add trigger binding to the lp8860 Dan Murphy
2017-12-04 21:20 ` [PATCH 4/5] leds: lp8860: Add DT parsing to retrieve the trigger node Dan Murphy
2017-12-04 21:20 ` [PATCH 5/5] leds: lp8860: Various fixes to align with LED framework 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).