+ leds-provide-helper-to-register-leds-gpio-devices.patch added to -mm tree

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



The patch titled
     leds: provide helper to register "leds-gpio" devices
has been added to the -mm tree.  Its filename is
     leds-provide-helper-to-register-leds-gpio-devices.patch

Before you just go and hit "reply", please:
   a) Consider who else should be cc'ed
   b) Prefer to cc a suitable mailing list as well
   c) Ideally: find the original patch on the mailing list and do a
      reply-to-all to that, adding suitable additional cc's

*** Remember to use Documentation/SubmitChecklist when testing your code ***

See http://userweb.kernel.org/~akpm/stuff/added-to-mm.txt to find
out what to do about this

The current -mm tree may be found at http://userweb.kernel.org/~akpm/mmotm/

------------------------------------------------------
Subject: leds: provide helper to register "leds-gpio" devices
From: Uwe Kleine-König <u.kleine-koenig@xxxxxxxxxxxxxx>

This function makes a deep copy of the platform data to allow it to live
in init memory.  The definition cannot go into leds-gpio.c because it
needs to be builtin to be usable by platforms.

Signed-off-by: Uwe Kleine-König  <u.kleine-koenig@xxxxxxxxxxxxxx>
Cc: Russell King <rmk@xxxxxxxxxxxxxxxx>
Acked-by: Richard Purdie <richard.purdie@xxxxxxxxxxxxxxxxxxx>
Cc: Fabio Estevam <fabio.estevam@xxxxxxxxxxxxx>
Cc: Sascha Hauer <s.hauer@xxxxxxxxxxxxxx>
Cc: H Hartley Sweeten <hartleys@xxxxxxxxxxxxxxxxxxx>
Signed-off-by: Andrew Morton <akpm@xxxxxxxxxxxxxxxxxxxx>
---

 drivers/Makefile            |    2 +-
 drivers/leds/Kconfig        |    5 +++++
 drivers/leds/Makefile       |    1 +
 drivers/leds/led-register.c |   33 +++++++++++++++++++++++++++++++++
 include/linux/leds.h        |   12 ++++++++++++
 5 files changed, 52 insertions(+), 1 deletion(-)

diff -puN drivers/Makefile~leds-provide-helper-to-register-leds-gpio-devices drivers/Makefile
--- a/drivers/Makefile~leds-provide-helper-to-register-leds-gpio-devices
+++ a/drivers/Makefile
@@ -94,7 +94,7 @@ obj-$(CONFIG_CPU_IDLE)		+= cpuidle/
 obj-$(CONFIG_DMA_ENGINE)	+= dma/
 obj-$(CONFIG_MMC)		+= mmc/
 obj-$(CONFIG_MEMSTICK)		+= memstick/
-obj-$(CONFIG_NEW_LEDS)		+= leds/
+obj-y				+= leds/
 obj-$(CONFIG_INFINIBAND)	+= infiniband/
 obj-$(CONFIG_SGI_SN)		+= sn/
 obj-y				+= firmware/
diff -puN drivers/leds/Kconfig~leds-provide-helper-to-register-leds-gpio-devices drivers/leds/Kconfig
--- a/drivers/leds/Kconfig~leds-provide-helper-to-register-leds-gpio-devices
+++ a/drivers/leds/Kconfig
@@ -14,6 +14,11 @@ config LEDS_CLASS
 	  This option enables the led sysfs class in /sys/class/leds.  You'll
 	  need this to do anything useful with LEDs.  If unsure, say N.
 
+config LED_REGISTER_GPIO
+	bool
+	help
+	  This option provides the function gpio_led_register_device.
+
 if NEW_LEDS
 
 comment "LED drivers"
diff -puN drivers/leds/Makefile~leds-provide-helper-to-register-leds-gpio-devices drivers/leds/Makefile
--- a/drivers/leds/Makefile~leds-provide-helper-to-register-leds-gpio-devices
+++ a/drivers/leds/Makefile
@@ -3,6 +3,7 @@
 obj-$(CONFIG_NEW_LEDS)			+= led-core.o
 obj-$(CONFIG_LEDS_CLASS)		+= led-class.o
 obj-$(CONFIG_LEDS_TRIGGERS)		+= led-triggers.o
+obj-y					+= led-register.o
 
 # LED Platform Drivers
 obj-$(CONFIG_LEDS_88PM860X)		+= leds-88pm860x.o
diff -puN /dev/null drivers/leds/led-register.c
--- /dev/null
+++ a/drivers/leds/led-register.c
@@ -0,0 +1,33 @@
+/*
+ * Copyright (C) 2011 Pengutronix
+ * Uwe Kleine-Koenig <u.kleine-koenig@xxxxxxxxxxxxxx>
+ *
+ * This program is free software; you can redistribute it and/or modify it under
+ * the terms of the GNU General Public License version 2 as published by the
+ * Free Software Foundation.
+ */
+#include <linux/err.h>
+#include <linux/platform_device.h>
+#include <linux/slab.h>
+#include <linux/leds.h>
+
+#if defined(CONFIG_LED_REGISTER_GPIO)
+struct platform_device *__init gpio_led_register_device(
+		int id, const struct gpio_led_platform_data *pdata)
+{
+	struct platform_device *ret;
+	struct gpio_led_platform_data _pdata = *pdata;
+
+	_pdata.leds = kmemdup(pdata->leds,
+			pdata->num_leds * sizeof(*pdata->leds), GFP_KERNEL);
+	if (!_pdata.leds)
+		return ERR_PTR(-ENOMEM);
+
+	ret = platform_device_register_resndata(NULL, "leds-gpio", id,
+			NULL, 0, &_pdata, sizeof(_pdata));
+	if (IS_ERR(ret))
+		kfree(_pdata.leds);
+
+	return ret;
+}
+#endif
diff -puN include/linux/leds.h~leds-provide-helper-to-register-leds-gpio-devices include/linux/leds.h
--- a/include/linux/leds.h~leds-provide-helper-to-register-leds-gpio-devices
+++ a/include/linux/leds.h
@@ -207,5 +207,17 @@ struct gpio_led_platform_data {
 					unsigned long *delay_off);
 };
 
+/**
+ * gpio_led_register_device - register a gpio-led device
+ * @pdata: the platform data used for the new device
+ *
+ * Use this function instead of platform_device_add()ing a static struct
+ * platform_device.
+ *
+ * Note: as pdata and pdata->leds is copied these usually can and should be
+ * __initdata.
+ */
+struct platform_device *gpio_led_register_device(
+		int id, const struct gpio_led_platform_data *pdata);
 
 #endif		/* __LINUX_LEDS_H_INCLUDED */
_

Patches currently in -mm which might be from u.kleine-koenig@xxxxxxxxxxxxxx are

origin.patch
linux-next.patch
leds-provide-helper-to-register-leds-gpio-devices.patch
leds-provide-helper-to-register-leds-gpio-devices-fix.patch

--
To unsubscribe from this list: send the line "unsubscribe mm-commits" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html


[Index of Archives]     [Kernel Newbies FAQ]     [Kernel Archive]     [IETF Annouce]     [DCCP]     [Netdev]     [Networking]     [Security]     [Bugtraq]     [Photo]     [Yosemite]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Linux RAID]     [Linux SCSI]

  Powered by Linux