[PATCH v3] leds: rgb: lp5860: add enable-gpio
From: Steffen Trumtrar
Date: Wed Apr 08 2026 - 02:53:10 EST
The VIO_EN pin can either be connected with VIO power supply or GPIO.
Get the GPIO from DT if provided and set it on chip enable and disable.
Signed-off-by: Steffen Trumtrar <s.trumtrar@xxxxxxxxxxxxxx>
---
Changes in v3:
- remove unnecessary validation checks
- update dep to newer lp5860 series
- Link to v2: https://lore.kernel.org/r/20260310-v6-19-topic-ti-lp5860-enable-gpio-v2-0-3fcc617fe03a@xxxxxxxxxxxxxx
Changes in v2:
- add acked-by
- updated deps to newer lp5860 series
- rebased to v7.0-rc1
- Link to v1: https://lore.kernel.org/r/20260217-v6-19-topic-ti-lp5860-enable-gpio-v1-0-f5e8edeb5d74@xxxxxxxxxxxxxx
---
drivers/leds/rgb/leds-lp5860-core.c | 9 +++++++++
drivers/leds/rgb/leds-lp5860.h | 1 +
2 files changed, 10 insertions(+)
diff --git a/drivers/leds/rgb/leds-lp5860-core.c b/drivers/leds/rgb/leds-lp5860-core.c
index 31eebaf0269ab..5bccca47b20a1 100644
--- a/drivers/leds/rgb/leds-lp5860-core.c
+++ b/drivers/leds/rgb/leds-lp5860-core.c
@@ -5,6 +5,7 @@
* Author: Steffen Trumtrar <kernel@xxxxxxxxxxxxxx>
*/
+#include <linux/gpio/consumer.h>
#include <linux/led-class-multicolor.h>
#include <linux/module.h>
#include <linux/of_platform.h>
@@ -59,6 +60,8 @@ static int lp5860_set_mc_brightness(struct led_classdev *cdev,
static int lp5860_chip_enable(struct lp5860 *lp, bool enable)
{
+ gpiod_direction_output(lp->enable_gpiod, enable);
+
return regmap_write(lp->regmap, LP5860_REG_CHIP_EN, enable);
}
@@ -189,6 +192,12 @@ int lp5860_device_init(struct device *dev)
struct lp5860 *lp = dev_get_drvdata(dev);
int ret;
+ lp->enable_gpiod = devm_gpiod_get_optional(lp->dev, "enable", GPIOD_ASIS);
+ if (IS_ERR(lp->enable_gpiod))
+ return PTR_ERR(lp->enable_gpiod);
+
+ gpiod_set_consumer_name(lp->enable_gpiod, "LP5860 VIO enable");
+
ret = lp5860_chip_enable(lp, LP5860_CHIP_ENABLE);
if (ret)
return ret;
diff --git a/drivers/leds/rgb/leds-lp5860.h b/drivers/leds/rgb/leds-lp5860.h
index b3ad8c46720cd..48a6afc4227d6 100644
--- a/drivers/leds/rgb/leds-lp5860.h
+++ b/drivers/leds/rgb/leds-lp5860.h
@@ -257,6 +257,7 @@ struct lp5860_led {
struct lp5860 {
struct device *dev;
struct regmap *regmap;
+ struct gpio_desc *enable_gpiod;
unsigned int leds_count;
DECLARE_FLEX_ARRAY(struct lp5860_led, leds);
---
base-commit: 559f264e403e4d58d56a17595c60a1de011c5e20
change-id: 20260217-v6-19-topic-ti-lp5860-enable-gpio-83c0652d34ad
prerequisite-message-id: <20260403-v6-14-topic-ti-lp5860-v8-1-e127e80e875a@xxxxxxxxxxxxxx>
prerequisite-patch-id: 2fc7123c98bf6c53d946af75269ecb1a7b421f14
Best regards,
--
Steffen Trumtrar <s.trumtrar@xxxxxxxxxxxxxx>