Skip to content

Commit

Permalink
---
Browse files Browse the repository at this point in the history
yaml
---
r: 250976
b: refs/heads/master
c: 4440673
h: refs/heads/master
v: v3
  • Loading branch information
Uwe Kleine-König authored and Linus Torvalds committed May 25, 2011
1 parent 804598a commit b104848
Show file tree
Hide file tree
Showing 6 changed files with 54 additions and 2 deletions.
2 changes: 1 addition & 1 deletion [refs]
Original file line number Diff line number Diff line change
@@ -1,2 +1,2 @@
---
refs/heads/master: 9b2da53f7627304cd4030cb4883908bfb1bce998
refs/heads/master: 4440673a95e63ad888a41db596edaa0c55d3a332
2 changes: 1 addition & 1 deletion trunk/drivers/Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -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/
Expand Down
7 changes: 7 additions & 0 deletions trunk/drivers/leds/Kconfig
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,13 @@ 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 LEDS_GPIO_REGISTER
bool
help
This option provides the function gpio_led_register_device.
As this function is used by arch code it must not be compiled as a
module.

if NEW_LEDS

comment "LED drivers"
Expand Down
1 change: 1 addition & 0 deletions trunk/drivers/leds/Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -21,6 +21,7 @@ obj-$(CONFIG_LEDS_COBALT_QUBE) += leds-cobalt-qube.o
obj-$(CONFIG_LEDS_COBALT_RAQ) += leds-cobalt-raq.o
obj-$(CONFIG_LEDS_SUNFIRE) += leds-sunfire.o
obj-$(CONFIG_LEDS_PCA9532) += leds-pca9532.o
obj-$(CONFIG_LEDS_GPIO_REGISTER) += leds-gpio-register.o
obj-$(CONFIG_LEDS_GPIO) += leds-gpio.o
obj-$(CONFIG_LEDS_LP3944) += leds-lp3944.o
obj-$(CONFIG_LEDS_LP5521) += leds-lp5521.o
Expand Down
42 changes: 42 additions & 0 deletions trunk/drivers/leds/leds-gpio-register.c
Original file line number Diff line number Diff line change
@@ -0,0 +1,42 @@
/*
* Copyright (C) 2011 Pengutronix
* Uwe Kleine-Koenig <u.kleine-koenig@pengutronix.de>
*
* 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>

/**
* gpio_led_register_device - register a gpio-led device
* @pdata: the platform data used for the new device
*
* Makes a copy of pdata and pdata->leds and registers a new leds-gpio device
* with the result. This allows to have pdata and pdata-leds in .init.rodata
* and so saves some bytes compared to a static struct platform_device with
* static platform data.
*
* Returns the registered device or an error pointer.
*/
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;
}
2 changes: 2 additions & 0 deletions trunk/include/linux/leds.h
Original file line number Diff line number Diff line change
Expand Up @@ -207,5 +207,7 @@ struct gpio_led_platform_data {
unsigned long *delay_off);
};

struct platform_device *gpio_led_register_device(
int id, const struct gpio_led_platform_data *pdata);

#endif /* __LINUX_LEDS_H_INCLUDED */

0 comments on commit b104848

Please sign in to comment.