* [PATCH leds] leds: regulator: remove driver
@ 2020-09-20 20:42 Marek Behún
2020-09-20 21:46 ` Pavel Machek
0 siblings, 1 reply; 4+ messages in thread
From: Marek Behún @ 2020-09-20 20:42 UTC (permalink / raw)
To: linux-leds
Cc: Pavel Machek, Jacek Anaszewski, dmurphy, linux-kernel,
Antonio Ospite, Marek Behún
The leds-regulator driver only supports the old platform data binding
and no in-tree code uses it. It also seems that no OpenWRT board uses
it.
Remove this driver.
Signed-off-by: Marek Behún <marek.behun@nic.cz>
---
drivers/leds/Kconfig | 7 --
drivers/leds/Makefile | 1 -
drivers/leds/leds-regulator.c | 200 ---------------------------------
include/linux/leds-regulator.h | 42 -------
4 files changed, 250 deletions(-)
delete mode 100644 drivers/leds/leds-regulator.c
delete mode 100644 include/linux/leds-regulator.h
diff --git a/drivers/leds/Kconfig b/drivers/leds/Kconfig
index a008170e73cd8..905e1ff367f33 100644
--- a/drivers/leds/Kconfig
+++ b/drivers/leds/Kconfig
@@ -586,13 +586,6 @@ config LEDS_PWM
help
This option enables support for pwm driven LEDs
-config LEDS_REGULATOR
- tristate "REGULATOR driven LED support"
- depends on LEDS_CLASS
- depends on REGULATOR
- help
- This option enables support for regulator driven LEDs.
-
config LEDS_BD2802
tristate "LED driver for BD2802 RGB LED"
depends on LEDS_CLASS
diff --git a/drivers/leds/Makefile b/drivers/leds/Makefile
index 778cb4bb8c520..159878eb95f28 100644
--- a/drivers/leds/Makefile
+++ b/drivers/leds/Makefile
@@ -78,7 +78,6 @@ obj-$(CONFIG_LEDS_PCA963X) += leds-pca963x.o
obj-$(CONFIG_LEDS_PM8058) += leds-pm8058.o
obj-$(CONFIG_LEDS_POWERNV) += leds-powernv.o
obj-$(CONFIG_LEDS_PWM) += leds-pwm.o
-obj-$(CONFIG_LEDS_REGULATOR) += leds-regulator.o
obj-$(CONFIG_LEDS_S3C24XX) += leds-s3c24xx.o
obj-$(CONFIG_LEDS_SC27XX_BLTC) += leds-sc27xx-bltc.o
obj-$(CONFIG_LEDS_SGM3140) += leds-sgm3140.o
diff --git a/drivers/leds/leds-regulator.c b/drivers/leds/leds-regulator.c
deleted file mode 100644
index 208c98918433e..0000000000000
--- a/drivers/leds/leds-regulator.c
+++ /dev/null
@@ -1,200 +0,0 @@
-// SPDX-License-Identifier: GPL-2.0-only
-/*
- * leds-regulator.c - LED class driver for regulator driven LEDs.
- *
- * Copyright (C) 2009 Antonio Ospite <ospite@studenti.unina.it>
- *
- * Inspired by leds-wm8350 driver.
- */
-
-#include <linux/module.h>
-#include <linux/err.h>
-#include <linux/slab.h>
-#include <linux/leds.h>
-#include <linux/leds-regulator.h>
-#include <linux/platform_device.h>
-#include <linux/regulator/consumer.h>
-
-#define to_regulator_led(led_cdev) \
- container_of(led_cdev, struct regulator_led, cdev)
-
-struct regulator_led {
- struct led_classdev cdev;
- int enabled;
- struct mutex mutex;
-
- struct regulator *vcc;
-};
-
-static inline int led_regulator_get_max_brightness(struct regulator *supply)
-{
- int ret;
- int voltage = regulator_list_voltage(supply, 0);
-
- if (voltage <= 0)
- return 1;
-
- /* even if regulator can't change voltages,
- * we still assume it can change status
- * and the LED can be turned on and off.
- */
- ret = regulator_set_voltage(supply, voltage, voltage);
- if (ret < 0)
- return 1;
-
- return regulator_count_voltages(supply);
-}
-
-static int led_regulator_get_voltage(struct regulator *supply,
- enum led_brightness brightness)
-{
- if (brightness == 0)
- return -EINVAL;
-
- return regulator_list_voltage(supply, brightness - 1);
-}
-
-
-static void regulator_led_enable(struct regulator_led *led)
-{
- int ret;
-
- if (led->enabled)
- return;
-
- ret = regulator_enable(led->vcc);
- if (ret != 0) {
- dev_err(led->cdev.dev, "Failed to enable vcc: %d\n", ret);
- return;
- }
-
- led->enabled = 1;
-}
-
-static void regulator_led_disable(struct regulator_led *led)
-{
- int ret;
-
- if (!led->enabled)
- return;
-
- ret = regulator_disable(led->vcc);
- if (ret != 0) {
- dev_err(led->cdev.dev, "Failed to disable vcc: %d\n", ret);
- return;
- }
-
- led->enabled = 0;
-}
-
-static int regulator_led_brightness_set(struct led_classdev *led_cdev,
- enum led_brightness value)
-{
- struct regulator_led *led = to_regulator_led(led_cdev);
- int voltage;
- int ret = 0;
-
- mutex_lock(&led->mutex);
-
- if (value == LED_OFF) {
- regulator_led_disable(led);
- goto out;
- }
-
- if (led->cdev.max_brightness > 1) {
- voltage = led_regulator_get_voltage(led->vcc, value);
- dev_dbg(led->cdev.dev, "brightness: %d voltage: %d\n",
- value, voltage);
-
- ret = regulator_set_voltage(led->vcc, voltage, voltage);
- if (ret != 0)
- dev_err(led->cdev.dev, "Failed to set voltage %d: %d\n",
- voltage, ret);
- }
-
- regulator_led_enable(led);
-
-out:
- mutex_unlock(&led->mutex);
- return ret;
-}
-
-static int regulator_led_probe(struct platform_device *pdev)
-{
- struct led_regulator_platform_data *pdata =
- dev_get_platdata(&pdev->dev);
- struct regulator_led *led;
- struct regulator *vcc;
- int ret = 0;
-
- if (pdata == NULL) {
- dev_err(&pdev->dev, "no platform data\n");
- return -ENODEV;
- }
-
- vcc = devm_regulator_get_exclusive(&pdev->dev, "vled");
- if (IS_ERR(vcc)) {
- dev_err(&pdev->dev, "Cannot get vcc for %s\n", pdata->name);
- return PTR_ERR(vcc);
- }
-
- led = devm_kzalloc(&pdev->dev, sizeof(*led), GFP_KERNEL);
- if (led == NULL)
- return -ENOMEM;
-
- led->cdev.max_brightness = led_regulator_get_max_brightness(vcc);
- if (pdata->brightness > led->cdev.max_brightness) {
- dev_err(&pdev->dev, "Invalid default brightness %d\n",
- pdata->brightness);
- return -EINVAL;
- }
-
- led->cdev.brightness_set_blocking = regulator_led_brightness_set;
- led->cdev.name = pdata->name;
- led->cdev.flags |= LED_CORE_SUSPENDRESUME;
- led->vcc = vcc;
-
- /* to handle correctly an already enabled regulator */
- if (regulator_is_enabled(led->vcc))
- led->enabled = 1;
-
- mutex_init(&led->mutex);
-
- platform_set_drvdata(pdev, led);
-
- ret = led_classdev_register(&pdev->dev, &led->cdev);
- if (ret < 0)
- return ret;
-
- /* to expose the default value to userspace */
- led->cdev.brightness = pdata->brightness;
-
- /* Set the default led status */
- regulator_led_brightness_set(&led->cdev, led->cdev.brightness);
-
- return 0;
-}
-
-static int regulator_led_remove(struct platform_device *pdev)
-{
- struct regulator_led *led = platform_get_drvdata(pdev);
-
- led_classdev_unregister(&led->cdev);
- regulator_led_disable(led);
- return 0;
-}
-
-static struct platform_driver regulator_led_driver = {
- .driver = {
- .name = "leds-regulator",
- },
- .probe = regulator_led_probe,
- .remove = regulator_led_remove,
-};
-
-module_platform_driver(regulator_led_driver);
-
-MODULE_AUTHOR("Antonio Ospite <ospite@studenti.unina.it>");
-MODULE_DESCRIPTION("Regulator driven LED driver");
-MODULE_LICENSE("GPL");
-MODULE_ALIAS("platform:leds-regulator");
diff --git a/include/linux/leds-regulator.h b/include/linux/leds-regulator.h
deleted file mode 100644
index 899f816073a14..0000000000000
--- a/include/linux/leds-regulator.h
+++ /dev/null
@@ -1,42 +0,0 @@
-/* SPDX-License-Identifier: GPL-2.0-only */
-/*
- * leds-regulator.h - platform data structure for regulator driven LEDs.
- *
- * Copyright (C) 2009 Antonio Ospite <ospite@studenti.unina.it>
- */
-
-#ifndef __LINUX_LEDS_REGULATOR_H
-#define __LINUX_LEDS_REGULATOR_H
-
-/*
- * Use "vled" as supply id when declaring the regulator consumer:
- *
- * static struct regulator_consumer_supply pcap_regulator_VVIB_consumers [] = {
- * { .dev_name = "leds-regulator.0", .supply = "vled" },
- * };
- *
- * If you have several regulator driven LEDs, you can append a numerical id to
- * .dev_name as done above, and use the same id when declaring the platform
- * device:
- *
- * static struct led_regulator_platform_data a780_vibrator_data = {
- * .name = "a780::vibrator",
- * };
- *
- * static struct platform_device a780_vibrator = {
- * .name = "leds-regulator",
- * .id = 0,
- * .dev = {
- * .platform_data = &a780_vibrator_data,
- * },
- * };
- */
-
-#include <linux/leds.h>
-
-struct led_regulator_platform_data {
- char *name; /* LED name as expected by LED class */
- enum led_brightness brightness; /* initial brightness value */
-};
-
-#endif /* __LINUX_LEDS_REGULATOR_H */
--
2.26.2
^ permalink raw reply [flat|nested] 4+ messages in thread* Re: [PATCH leds] leds: regulator: remove driver
2020-09-20 20:42 [PATCH leds] leds: regulator: remove driver Marek Behún
@ 2020-09-20 21:46 ` Pavel Machek
2020-09-20 21:53 ` Marek Behun
0 siblings, 1 reply; 4+ messages in thread
From: Pavel Machek @ 2020-09-20 21:46 UTC (permalink / raw)
To: Marek Behún
Cc: linux-leds, Jacek Anaszewski, dmurphy, linux-kernel, Antonio Ospite
[-- Attachment #1: Type: text/plain, Size: 482 bytes --]
On Sun 2020-09-20 22:42:03, Marek Behún wrote:
> The leds-regulator driver only supports the old platform data binding
> and no in-tree code uses it. It also seems that no OpenWRT board uses
> it.
>
> Remove this driver.
Lets keep this one. Connecting LED directly to regulator simply makes
sense.
Best regards,
Pavel
--
(english) http://www.livejournal.com/~pavelmachek
(cesky, pictures) http://atrey.karlin.mff.cuni.cz/~pavel/picture/horses/blog.html
[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 195 bytes --]
^ permalink raw reply [flat|nested] 4+ messages in thread
* Re: [PATCH leds] leds: regulator: remove driver
2020-09-20 21:46 ` Pavel Machek
@ 2020-09-20 21:53 ` Marek Behun
2020-09-20 22:25 ` Pavel Machek
0 siblings, 1 reply; 4+ messages in thread
From: Marek Behun @ 2020-09-20 21:53 UTC (permalink / raw)
To: Pavel Machek
Cc: linux-leds, Jacek Anaszewski, dmurphy, linux-kernel, Antonio Ospite
On Sun, 20 Sep 2020 23:46:47 +0200
Pavel Machek <pavel@ucw.cz> wrote:
> On Sun 2020-09-20 22:42:03, Marek Behún wrote:
> > The leds-regulator driver only supports the old platform data binding
> > and no in-tree code uses it. It also seems that no OpenWRT board uses
> > it.
> >
> > Remove this driver.
>
> Lets keep this one.
Very well.
> Connecting LED directly to regulator simply makes sense.
It does makes sence to me as well, but at least it needs to be
rewritten to use OF instead of platdata. The way it is written now it
is not used by anyone, apparently.
Marek
^ permalink raw reply [flat|nested] 4+ messages in thread
* Re: [PATCH leds] leds: regulator: remove driver
2020-09-20 21:53 ` Marek Behun
@ 2020-09-20 22:25 ` Pavel Machek
0 siblings, 0 replies; 4+ messages in thread
From: Pavel Machek @ 2020-09-20 22:25 UTC (permalink / raw)
To: Marek Behun
Cc: linux-leds, Jacek Anaszewski, dmurphy, linux-kernel, Antonio Ospite
[-- Attachment #1: Type: text/plain, Size: 797 bytes --]
Hi!
> > > The leds-regulator driver only supports the old platform data binding
> > > and no in-tree code uses it. It also seems that no OpenWRT board uses
> > > it.
> > >
> > > Remove this driver.
> >
> > Lets keep this one.
>
> Very well.
>
> > Connecting LED directly to regulator simply makes sense.
>
> It does makes sence to me as well, but at least it needs to be
> rewritten to use OF instead of platdata. The way it is written now it
> is not used by anyone, apparently.
I'd say that first person that needs it gets to fix it for their needs
:-). I'd suggest simply ignoring it for now.
Best regards,
Pavel
--
(english) http://www.livejournal.com/~pavelmachek
(cesky, pictures) http://atrey.karlin.mff.cuni.cz/~pavel/picture/horses/blog.html
[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 195 bytes --]
^ permalink raw reply [flat|nested] 4+ messages in thread
end of thread, other threads:[~2020-09-20 22:25 UTC | newest]
Thread overview: 4+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2020-09-20 20:42 [PATCH leds] leds: regulator: remove driver Marek Behún
2020-09-20 21:46 ` Pavel Machek
2020-09-20 21:53 ` Marek Behun
2020-09-20 22:25 ` Pavel Machek
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox
all inboxes | Powered by JetHome®