Commit 131701c6 authored by Linus Torvalds's avatar Linus Torvalds

Merge tag 'leds-5.5-rc8' of git://git.kernel.org/pub/scm/linux/kernel/git/pavel/linux-leds

Pull LED fixes from Pavel Machek:
 "Jacek's fix for an uninitialized gpio label is why I'm requesting this
  pull; it fixes regression in debugging output in sysfs. Others are
  just bugfixes that should be safe.

  Everything has been in -next for while"

* tag 'leds-5.5-rc8' of git://git.kernel.org/pub/scm/linux/kernel/git/pavel/linux-leds:
  leds: lm3532: add pointer to documentation and fix typo
  leds: rb532: cleanup whitespace
  ledtrig-pattern: fix email address quoting in MODULE_AUTHOR()
  led: max77650: add of_match table
  leds-as3645a: Drop fwnode reference on ignored node
  leds: gpio: Fix uninitialized gpio label for fwnode based probe
parents 1b4e677f 43108c72
...@@ -493,16 +493,17 @@ static int as3645a_parse_node(struct as3645a *flash, ...@@ -493,16 +493,17 @@ static int as3645a_parse_node(struct as3645a *flash,
switch (id) { switch (id) {
case AS_LED_FLASH: case AS_LED_FLASH:
flash->flash_node = child; flash->flash_node = child;
fwnode_handle_get(child);
break; break;
case AS_LED_INDICATOR: case AS_LED_INDICATOR:
flash->indicator_node = child; flash->indicator_node = child;
fwnode_handle_get(child);
break; break;
default: default:
dev_warn(&flash->client->dev, dev_warn(&flash->client->dev,
"unknown LED %u encountered, ignoring\n", id); "unknown LED %u encountered, ignoring\n", id);
break; break;
} }
fwnode_handle_get(child);
} }
if (!flash->flash_node) { if (!flash->flash_node) {
......
...@@ -151,9 +151,14 @@ static struct gpio_leds_priv *gpio_leds_create(struct platform_device *pdev) ...@@ -151,9 +151,14 @@ static struct gpio_leds_priv *gpio_leds_create(struct platform_device *pdev)
struct gpio_led led = {}; struct gpio_led led = {};
const char *state = NULL; const char *state = NULL;
/*
* Acquire gpiod from DT with uninitialized label, which
* will be updated after LED class device is registered,
* Only then the final LED name is known.
*/
led.gpiod = devm_fwnode_get_gpiod_from_child(dev, NULL, child, led.gpiod = devm_fwnode_get_gpiod_from_child(dev, NULL, child,
GPIOD_ASIS, GPIOD_ASIS,
led.name); NULL);
if (IS_ERR(led.gpiod)) { if (IS_ERR(led.gpiod)) {
fwnode_handle_put(child); fwnode_handle_put(child);
return ERR_CAST(led.gpiod); return ERR_CAST(led.gpiod);
...@@ -186,6 +191,9 @@ static struct gpio_leds_priv *gpio_leds_create(struct platform_device *pdev) ...@@ -186,6 +191,9 @@ static struct gpio_leds_priv *gpio_leds_create(struct platform_device *pdev)
fwnode_handle_put(child); fwnode_handle_put(child);
return ERR_PTR(ret); return ERR_PTR(ret);
} }
/* Set gpiod label to match the corresponding LED name. */
gpiod_set_consumer_name(led_dat->gpiod,
led_dat->cdev.dev->kobj.name);
priv->num_leds++; priv->num_leds++;
} }
......
// SPDX-License-Identifier: GPL-2.0 // SPDX-License-Identifier: GPL-2.0
// TI LM3532 LED driver // TI LM3532 LED driver
// Copyright (C) 2019 Texas Instruments Incorporated - http://www.ti.com/ // Copyright (C) 2019 Texas Instruments Incorporated - http://www.ti.com/
// http://www.ti.com/lit/ds/symlink/lm3532.pdf
#include <linux/i2c.h> #include <linux/i2c.h>
#include <linux/leds.h> #include <linux/leds.h>
...@@ -623,7 +624,7 @@ static int lm3532_parse_node(struct lm3532_data *priv) ...@@ -623,7 +624,7 @@ static int lm3532_parse_node(struct lm3532_data *priv)
led->num_leds = fwnode_property_count_u32(child, "led-sources"); led->num_leds = fwnode_property_count_u32(child, "led-sources");
if (led->num_leds > LM3532_MAX_LED_STRINGS) { if (led->num_leds > LM3532_MAX_LED_STRINGS) {
dev_err(&priv->client->dev, "To many LED string defined\n"); dev_err(&priv->client->dev, "Too many LED string defined\n");
continue; continue;
} }
......
...@@ -135,9 +135,16 @@ static int max77650_led_probe(struct platform_device *pdev) ...@@ -135,9 +135,16 @@ static int max77650_led_probe(struct platform_device *pdev)
return rv; return rv;
} }
static const struct of_device_id max77650_led_of_match[] = {
{ .compatible = "maxim,max77650-led" },
{ }
};
MODULE_DEVICE_TABLE(of, max77650_led_of_match);
static struct platform_driver max77650_led_driver = { static struct platform_driver max77650_led_driver = {
.driver = { .driver = {
.name = "max77650-led", .name = "max77650-led",
.of_match_table = max77650_led_of_match,
}, },
.probe = max77650_led_probe, .probe = max77650_led_probe,
}; };
......
...@@ -21,7 +21,6 @@ static void rb532_led_set(struct led_classdev *cdev, ...@@ -21,7 +21,6 @@ static void rb532_led_set(struct led_classdev *cdev,
{ {
if (brightness) if (brightness)
set_latch_u5(LO_ULED, 0); set_latch_u5(LO_ULED, 0);
else else
set_latch_u5(0, LO_ULED); set_latch_u5(0, LO_ULED);
} }
......
...@@ -455,7 +455,7 @@ static void __exit pattern_trig_exit(void) ...@@ -455,7 +455,7 @@ static void __exit pattern_trig_exit(void)
module_init(pattern_trig_init); module_init(pattern_trig_init);
module_exit(pattern_trig_exit); module_exit(pattern_trig_exit);
MODULE_AUTHOR("Raphael Teysseyre <rteysseyre@gmail.com"); MODULE_AUTHOR("Raphael Teysseyre <rteysseyre@gmail.com>");
MODULE_AUTHOR("Baolin Wang <baolin.wang@linaro.org"); MODULE_AUTHOR("Baolin Wang <baolin.wang@linaro.org>");
MODULE_DESCRIPTION("LED Pattern trigger"); MODULE_DESCRIPTION("LED Pattern trigger");
MODULE_LICENSE("GPL v2"); MODULE_LICENSE("GPL v2");
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment