Skip to contentSkip to conversation

dt: bindings: lp8860: Update bindings for lp8860

PATCH In review Dan Murphy 3 participants 9 messages Dec 18, 2017 – Dec 20, 2017

Subsystems (2)
lore
Share & tools
lore

Dan Murphy

author
#0 lore raw

PATCH v5 1/6 dt: bindings: lp8860: Update bindings for lp8860

Update the lp8860 bindings to fix various issues
found. Rename enable-gpio to enable-gpios,
update the node name to the device name and
indent the node example.

---

v5 - Update commit message to remove address and size cells - https://patchwork.kernel.org/patch/10108357/

v4 - No changes
v3 - Indicatd enable-gpios is active high, moved address and size cells to child node patch and updated parent DT node name - https://patchwork.kernel.org/patch/10093745/
v2 - New patch

 Documentation/devicetree/bindings/leds/leds-lp8860.txt | 14 +++++++-------
 1 file changed, 7 insertions(+), 7 deletions(-)
Documentation/devicetree/bindings/leds/leds-lp8860.txt +7 -7
index aad38dd94d4b..b9d09acbaa73 100644
@@ -6,22 +6,22 @@ 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
-	- label - Used for naming LEDs
+	- reg : I2C slave address
+	- label : Used for naming LEDs
 
 Optional properties:
-	- enable-gpio - gpio pin to enable/disable the device.
-	- supply - "vled" - LED supply
+	- enable-gpios : gpio pin to enable (active high)/disable the device.
+	- vled-supply : LED supply
 
 Example:
 
-leds: leds@6 {
+led-controller@2d {
 	compatible = "ti,lp8860";
 	reg = <0x2d>;
 	label = "display_cluster";
-	enable-gpio = <&gpio1 28 GPIO_ACTIVE_HIGH>;
+	enable-gpios = <&gpio1 28 GPIO_ACTIVE_HIGH>;
 	vled-supply = <&vbatt>;
 }
 
Signature · 6 lines
2.15.0.124.g7668cbc60

--
To unsubscribe from this list: send the line "unsubscribe devicetree" in
the body of a message to [email protected]
More majordomo info at  http://vger.kernel.org/majordomo-info.html
author
#1 lore raw

PATCH v5 2/6 dt: bindings: lp8860: Update DT label binding

Update the lp8860 label binding to the LED
standard as documented in

Documentation/devicetree/bindings/leds/common.txt

---

v5 - Renamed label to just white:backlight - https://patchwork.kernel.org/patch/10108361
Comment was made on patch 4 https://patchwork.kernel.org/patch/10108351/

v4 - No changes
v3 - Added address and size cells, updated label with color and inserted spaces around the reg node - https://patchwork.kernel.org/patch/10093749/
v2 - Added reg to child node and made it required

 Documentation/devicetree/bindings/leds/leds-lp8860.txt | 17 +++++++++++++++--
 1 file changed, 15 insertions(+), 2 deletions(-)
Documentation/devicetree/bindings/leds/leds-lp8860.txt +15 -2
index b9d09acbaa73..77ddd22c20dc 100644
@@ -9,20 +9,33 @@ Required properties:
 	- compatible :
 		"ti,lp8860"
 	- reg : I2C slave address
-	- label : Used for naming LEDs
+	- #address-cells : 1
+	- #size-cells : 0
 
 Optional properties:
 	- enable-gpios : gpio pin to enable (active high)/disable the device.
 	- vled-supply : LED supply
 
+Required child properties:
+	- reg : 0
+
+Optional child properties:
+	- label : see Documentation/devicetree/bindings/leds/common.txt
+
 Example:
 
 led-controller@2d {
 	compatible = "ti,lp8860";
+	#address-cells = <1>;
+	#size-cells = <0>;
 	reg = <0x2d>;
-	label = "display_cluster";
 	enable-gpios = <&gpio1 28 GPIO_ACTIVE_HIGH>;
 	vled-supply = <&vbatt>;
+
+	led@0 {
+		reg = <0>;
+		label = "white:backlight";
+	};
 }
 
 For more product information please see the link below:
Signature · 6 lines
2.15.0.124.g7668cbc60

--
To unsubscribe from this list: send the line "unsubscribe devicetree" in
the body of a message to [email protected]
More majordomo info at  http://vger.kernel.org/majordomo-info.html
maintainer Reviewed-by on v5 2/6
#2 lore raw

Re: [PATCH v5 2/6] dt: bindings: lp8860: Update DT label binding

Quoted 11 lines · Dan Murphy

Update the lp8860 label binding to the LED
standard as documented in

Documentation/devicetree/bindings/leds/common.txt

---

v5 - Renamed label to just white:backlight - https://patchwork.kernel.org/patch/10108361
Comment was made on patch 4 https://patchwork.kernel.org/patch/10108351/

Quoted 7 lines

v4 - No changes
v3 - Added address and size cells, updated label with color and inserted spaces around the reg node - https://patchwork.kernel.org/patch/10093749/
v2 - Added reg to child node and made it required

 Documentation/devicetree/bindings/leds/leds-lp8860.txt | 17 +++++++++++++++--
 1 file changed, 15 insertions(+), 2 deletions(-)
author
#3 lore raw

PATCH v5 3/6 leds: lp8860: Update the dt parsing for LED labeling

In reply to 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

---

v5 - no changes

v4 - Fix checkpatch warning for code indentation - https://patchwork.kernel.org/patch/10108157/
v3 - Changed the label generation to pull the name from the i2c device id
as opposed to pulling the id from the parent dt node since that will just be led-controller - https://patchwork.kernel.org/patch/10093753/
v2 - no changes

 drivers/leds/leds-lp8860.c | 23 ++++++++++++-----------
 1 file changed, 12 insertions(+), 11 deletions(-)
drivers/leds/leds-lp8860.c +12 -11
index 3e70775a2d54..46578fbc36be 100644
@@ -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",
+				 id->name, name);
+		else
+			snprintf(led->label, sizeof(led->label),
+				"%s::display_cluster", id->name);
 	}
 
 	led->enable_gpio = devm_gpiod_get_optional(&client->dev,
Signature · 6 lines
2.15.0.124.g7668cbc60

--
To unsubscribe from this list: send the line "unsubscribe devicetree" in
the body of a message to [email protected]
More majordomo info at  http://vger.kernel.org/majordomo-info.html
author
#4 lore raw

PATCH v5 4/6 dt: bindings: lp8860: Add trigger binding to the lp8860

In reply to Dan Murphy

Add a default trigger optional node to the child node. This will allow the driver to set the trigger for a backlight.

---

v5 - No changes

v4 - No changes
v3 - Removed optional and rebased - https://patchwork.kernel.org/patch/10093755/
v2 - Moved binding changes to first patch in the series.

 Documentation/devicetree/bindings/leds/leds-lp8860.txt | 3 +++
 1 file changed, 3 insertions(+)
Documentation/devicetree/bindings/leds/leds-lp8860.txt +3 -0
index 77ddd22c20dc..5f0e892ad759 100644
@@ -21,6 +21,8 @@ Required child properties:
 
 Optional child properties:
 	- label : see Documentation/devicetree/bindings/leds/common.txt
+	- linux,default-trigger :
+	   see Documentation/devicetree/bindings/leds/common.txt
 
 Example:
 
@@ -35,6 +37,7 @@ led-controller@2d {
 	led@0 {
 		reg = <0>;
 		label = "white:backlight";
+		linux,default-trigger = "backlight";
 	};
 }
 
Signature · 1 line
2.15.0.124.g7668cbc60
maintainer Reviewed-by on v5 4/6
#5 lore raw

Re: [PATCH v5 4/6] dt: bindings: lp8860: Add trigger binding to the lp8860

Quoted 6 lines · Dan Murphy

Add a default trigger optional node to the child node. This will allow the driver to set the trigger for a backlight.

---

Quoted 8 lines

v5 - No changes

v4 - No changes
v3 - Removed optional and rebased - https://patchwork.kernel.org/patch/10093755/
v2 - Moved binding changes to first patch in the series.

 Documentation/devicetree/bindings/leds/leds-lp8860.txt | 3 +++
 1 file changed, 3 insertions(+)
author
#6 lore raw

PATCH v5 5/6 leds: lp8860: Add DT parsing to retrieve the trigger node

In reply to Dan Murphy

Add the ability to parse the DT and set the default trigger mode for the LED.

---

v5 - No changes

v4 - No changes
v3 - no changes - https://patchwork.kernel.org/patch/10093751/
v2 - no changes

 drivers/leds/leds-lp8860.c | 4 ++++
 1 file changed, 4 insertions(+)
drivers/leds/leds-lp8860.c +4 -0
index 46578fbc36be..bb1d7bbc928c 100644
@@ -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",
Signature · 1 line
2.15.0.124.g7668cbc60
author
#7 lore raw

PATCH v5 6/6 leds: lp8860: Various fixes to align with LED framework

In reply to 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.

---

v5 - No changes

v4 - No changes
v3 - no changes - https://patchwork.kernel.org/patch/10093747/
v2 - no changes

 drivers/leds/Kconfig       |  2 +-
 drivers/leds/leds-lp8860.c | 13 +++++--------
 2 files changed, 6 insertions(+), 9 deletions(-)
drivers/leds/Kconfig +1 -1
index 318a28fd58fe..ac4d9d8bf96b 100644
@@ -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
drivers/leds/leds-lp8860.c +5 -8
index bb1d7bbc928c..c7716f774431 100644
@@ -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 <[email protected]>");
-MODULE_LICENSE("GPL");
+MODULE_LICENSE("GPL v2");
Signature · 6 lines
2.15.0.124.g7668cbc60

--
To unsubscribe from this list: send the line "unsubscribe devicetree" in
the body of a message to [email protected]
More majordomo info at  http://vger.kernel.org/majordomo-info.html
#8 lore raw
In reply to Dan Murphy

Dan,

Thanks for the updated patch set.
Applied to linux-leds.git.

Signature · 2 lines
Best regards,
Jacek Anaszewski
Quoted 44 lines · Dan Murphy

Update the lp8860 bindings to fix various issues
found. Rename enable-gpio to enable-gpios,
update the node name to the device name and
indent the node example.

---

v5 - Update commit message to remove address and size cells - https://patchwork.kernel.org/patch/10108357/

v4 - No changes
v3 - Indicatd enable-gpios is active high, moved address and size cells to child node patch and updated parent DT node name - https://patchwork.kernel.org/patch/10093745/
v2 - New patch

 Documentation/devicetree/bindings/leds/leds-lp8860.txt | 14 +++++++-------
 1 file changed, 7 insertions(+), 7 deletions(-)
Documentation/devicetree/bindings/leds/leds-lp8860.txt +5 -5
index aad38dd94d4b..b9d09acbaa73 100644
@@ -6,22 +6,22 @@ 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
-	- label - Used for naming LEDs
+	- reg : I2C slave address
+	- label : Used for naming LEDs
 
 Optional properties:
-	- enable-gpio - gpio pin to enable/disable the device.
-	- supply - "vled" - LED supply
+	- enable-gpios : gpio pin to enable (active high)/disable the device.
+	- vled-supply : LED supply
 
 Example:
 

Documentation/devicetree/bindings/leds/leds-lp8860.txt current sinks that can be controlled by a PWM input · line 27

Quoted 10 lines
Documentation/devicetree/bindings/leds/leds-lp8860.txt +2 -2
-leds: leds@6 {
+led-controller@2d {
 	compatible = "ti,lp8860";
 	reg = <0x2d>;
 	label = "display_cluster";
-	enable-gpio = <&gpio1 28 GPIO_ACTIVE_HIGH>;
+	enable-gpios = <&gpio1 28 GPIO_ACTIVE_HIGH>;
 	vled-supply = <&vbatt>;
 }
 

--
To unsubscribe from this list: send the line "unsubscribe devicetree" in the body of a message to [email protected] More majordomo info at http://vger.kernel.org/majordomo-info.html