leds: Delete obsolete Versatile driver

Message ID 20170504120308.6738-1-linus.walleij@linaro.org
State New
Headers show

Commit Message

Linus Walleij May 4, 2017, 12:03 p.m.
All users of the Versatile LED driver are deleted and replaced
with the very generic leds-syscon. Delete the old driver.

Signed-off-by: Linus Walleij <linus.walleij@linaro.org>

---
 drivers/leds/Kconfig          |   8 ---
 drivers/leds/Makefile         |   1 -
 drivers/leds/leds-versatile.c | 110 ------------------------------------------
 3 files changed, 119 deletions(-)
 delete mode 100644 drivers/leds/leds-versatile.c

-- 
2.9.3

Comments

Pavel Machek May 4, 2017, 12:14 p.m. | #1
On Thu 2017-05-04 14:03:08, Linus Walleij wrote:
> All users of the Versatile LED driver are deleted and replaced

> with the very generic leds-syscon. Delete the old driver.


If someone has LEDS_VERSATILE selected, he'll be unhappy if we apply
first.

Are you sure no _users_ have LEDS_VERSATILE selected? Should we give
them some kind of warning? (#warning, printk, ...?)

								Pavel

-- 
(english) http://www.livejournal.com/~pavelmachek
(cesky, pictures) http://atrey.karlin.mff.cuni.cz/~pavel/picture/horses/blog.html
Linus Walleij May 4, 2017, 12:23 p.m. | #2
On Thu, May 4, 2017 at 2:14 PM, Pavel Machek <pavel@ucw.cz> wrote:

> On Thu 2017-05-04 14:03:08, Linus Walleij wrote:

>> All users of the Versatile LED driver are deleted and replaced

>> with the very generic leds-syscon. Delete the old driver.

>

> If someone has LEDS_VERSATILE selected, he'll be unhappy if we apply

> first.

>

> Are you sure no _users_ have LEDS_VERSATILE selected? Should we give

> them some kind of warning? (#warning, printk, ...?)


Since the driver cannot probe from device tree or ACPI, the device must
be created in a board file using the device name "versatile-leds" which is
what the driver matches against.

For them to use it they must have out-of-tree boardfiles, and we discourage
both out-of-tree code and boardfiles.

The last boardfiles using this were deleted in
commit 7484c727b636a838818e71f6d03114633b25aba2
"ARM: realview: delete the RealView board files".

All Versatile, Integrator and RealView boards (the only one using the
versatile LEDs), have been migrated to use leds-syscon.c.

Yours,
Linus Walleij
Pavel Machek May 4, 2017, 12:28 p.m. | #3
On Thu 2017-05-04 14:23:39, Linus Walleij wrote:
> On Thu, May 4, 2017 at 2:14 PM, Pavel Machek <pavel@ucw.cz> wrote:

> 

> > On Thu 2017-05-04 14:03:08, Linus Walleij wrote:

> >> All users of the Versatile LED driver are deleted and replaced

> >> with the very generic leds-syscon. Delete the old driver.

> >

> > If someone has LEDS_VERSATILE selected, he'll be unhappy if we apply

> > first.

> >

> > Are you sure no _users_ have LEDS_VERSATILE selected? Should we give

> > them some kind of warning? (#warning, printk, ...?)

> 

> Since the driver cannot probe from device tree or ACPI, the device must

> be created in a board file using the device name "versatile-leds" which is

> what the driver matches against.

> 

> For them to use it they must have out-of-tree boardfiles, and we discourage

> both out-of-tree code and boardfiles.

> 

> The last boardfiles using this were deleted in

> commit 7484c727b636a838818e71f6d03114633b25aba2

> "ARM: realview: delete the RealView board files".

> 

> All Versatile, Integrator and RealView boards (the only one using the

> versatile LEDs), have been migrated to use leds-syscon.c.


Aha, people having out-of-tree boardfiles probably know enough to
handle this.

Acked-by: Pavel Machek <pavel@ucw.cz>

									Pavel
-- 
(english) http://www.livejournal.com/~pavelmachek
(cesky, pictures) http://atrey.karlin.mff.cuni.cz/~pavel/picture/horses/blog.html
Jacek Anaszewski May 4, 2017, 7:26 p.m. | #4
On 05/04/2017 02:28 PM, Pavel Machek wrote:
> On Thu 2017-05-04 14:23:39, Linus Walleij wrote:

>> On Thu, May 4, 2017 at 2:14 PM, Pavel Machek <pavel@ucw.cz> wrote:

>>

>>> On Thu 2017-05-04 14:03:08, Linus Walleij wrote:

>>>> All users of the Versatile LED driver are deleted and replaced

>>>> with the very generic leds-syscon. Delete the old driver.

>>>

>>> If someone has LEDS_VERSATILE selected, he'll be unhappy if we apply

>>> first.

>>>

>>> Are you sure no _users_ have LEDS_VERSATILE selected? Should we give

>>> them some kind of warning? (#warning, printk, ...?)

>>

>> Since the driver cannot probe from device tree or ACPI, the device must

>> be created in a board file using the device name "versatile-leds" which is

>> what the driver matches against.

>>

>> For them to use it they must have out-of-tree boardfiles, and we discourage

>> both out-of-tree code and boardfiles.

>>

>> The last boardfiles using this were deleted in

>> commit 7484c727b636a838818e71f6d03114633b25aba2

>> "ARM: realview: delete the RealView board files".

>>

>> All Versatile, Integrator and RealView boards (the only one using the

>> versatile LEDs), have been migrated to use leds-syscon.c.

> 

> Aha, people having out-of-tree boardfiles probably know enough to

> handle this.

> 

> Acked-by: Pavel Machek <pavel@ucw.cz>


Applied to the for-4.13 branch of linux-leds.git, thanks.

-- 
Best regards,
Jacek Anaszewski

Patch

diff --git a/drivers/leds/Kconfig b/drivers/leds/Kconfig
index 6c2999872090..fbe3468eb911 100644
--- a/drivers/leds/Kconfig
+++ b/drivers/leds/Kconfig
@@ -651,14 +651,6 @@  config LEDS_SYSCON
 	  devices. This will only work with device tree enabled
 	  devices.
 
-config LEDS_VERSATILE
-	tristate "LED support for the ARM Versatile and RealView"
-	depends on ARCH_REALVIEW || ARCH_VERSATILE
-	depends on LEDS_CLASS
-	help
-	  This option enabled support for the LEDs on the ARM Versatile
-	  and RealView boards. Say Y to enabled these.
-
 config LEDS_PM8058
 	tristate "LED Support for the Qualcomm PM8058 PMIC"
 	depends on MFD_PM8XXX
diff --git a/drivers/leds/Makefile b/drivers/leds/Makefile
index 45f133962ed8..e4a8d007c5a9 100644
--- a/drivers/leds/Makefile
+++ b/drivers/leds/Makefile
@@ -62,7 +62,6 @@  obj-$(CONFIG_LEDS_MAX8997)		+= leds-max8997.o
 obj-$(CONFIG_LEDS_LM355x)		+= leds-lm355x.o
 obj-$(CONFIG_LEDS_BLINKM)		+= leds-blinkm.o
 obj-$(CONFIG_LEDS_SYSCON)		+= leds-syscon.o
-obj-$(CONFIG_LEDS_VERSATILE)		+= leds-versatile.o
 obj-$(CONFIG_LEDS_MENF21BMC)		+= leds-menf21bmc.o
 obj-$(CONFIG_LEDS_KTD2692)		+= leds-ktd2692.o
 obj-$(CONFIG_LEDS_POWERNV)		+= leds-powernv.o
diff --git a/drivers/leds/leds-versatile.c b/drivers/leds/leds-versatile.c
deleted file mode 100644
index 80553022d661..000000000000
--- a/drivers/leds/leds-versatile.c
+++ /dev/null
@@ -1,110 +0,0 @@ 
-/*
- * Driver for the 8 user LEDs found on the RealViews and Versatiles
- * Based on DaVinci's DM365 board code
- *
- * License terms: GNU General Public License (GPL) version 2
- * Author: Linus Walleij <triad@df.lth.se>
- */
-#include <linux/kernel.h>
-#include <linux/init.h>
-#include <linux/module.h>
-#include <linux/io.h>
-#include <linux/slab.h>
-#include <linux/leds.h>
-#include <linux/platform_device.h>
-
-struct versatile_led {
-	void __iomem		*base;
-	struct led_classdev	cdev;
-	u8			mask;
-};
-
-/*
- * The triggers lines up below will only be used if the
- * LED triggers are compiled in.
- */
-static const struct {
-	const char *name;
-	const char *trigger;
-} versatile_leds[] = {
-	{ "versatile:0", "heartbeat", },
-	{ "versatile:1", "mmc0", },
-	{ "versatile:2", "cpu0" },
-	{ "versatile:3", "cpu1" },
-	{ "versatile:4", "cpu2" },
-	{ "versatile:5", "cpu3" },
-	{ "versatile:6", },
-	{ "versatile:7", },
-};
-
-static void versatile_led_set(struct led_classdev *cdev,
-			      enum led_brightness b)
-{
-	struct versatile_led *led = container_of(cdev,
-						 struct versatile_led, cdev);
-	u32 reg = readl(led->base);
-
-	if (b != LED_OFF)
-		reg |= led->mask;
-	else
-		reg &= ~led->mask;
-	writel(reg, led->base);
-}
-
-static enum led_brightness versatile_led_get(struct led_classdev *cdev)
-{
-	struct versatile_led *led = container_of(cdev,
-						 struct versatile_led, cdev);
-	u32 reg = readl(led->base);
-
-	return (reg & led->mask) ? LED_FULL : LED_OFF;
-}
-
-static int versatile_leds_probe(struct platform_device *dev)
-{
-	int i;
-	struct resource *res;
-	void __iomem *base;
-
-	res = platform_get_resource(dev, IORESOURCE_MEM, 0);
-	base = devm_ioremap_resource(&dev->dev, res);
-	if (IS_ERR(base))
-		return PTR_ERR(base);
-
-	/* All off */
-	writel(0, base);
-	for (i = 0; i < ARRAY_SIZE(versatile_leds); i++) {
-		struct versatile_led *led;
-
-		led = kzalloc(sizeof(*led), GFP_KERNEL);
-		if (!led)
-			break;
-
-		led->base = base;
-		led->cdev.name = versatile_leds[i].name;
-		led->cdev.brightness_set = versatile_led_set;
-		led->cdev.brightness_get = versatile_led_get;
-		led->cdev.default_trigger = versatile_leds[i].trigger;
-		led->mask = BIT(i);
-
-		if (led_classdev_register(NULL, &led->cdev) < 0) {
-			kfree(led);
-			break;
-		}
-	}
-
-	return 0;
-}
-
-static struct platform_driver versatile_leds_driver = {
-	.driver = {
-		.name   = "versatile-leds",
-	},
-	.probe = versatile_leds_probe,
-};
-
-module_platform_driver(versatile_leds_driver);
-
-MODULE_AUTHOR("Linus Walleij <linus.walleij@linaro.org>");
-MODULE_DESCRIPTION("ARM Versatile LED driver");
-MODULE_LICENSE("GPL v2");