mirror of
https://mirrors.bfsu.edu.cn/git/linux.git
synced 2024-11-26 13:44:15 +08:00
leds: Add helper for getting default pattern from Device Tree
Multiple LED triggers might need to access default pattern so add a helper for that. Signed-off-by: Krzysztof Kozlowski <krzk@kernel.org> Acked-by: Pavel Machek <pavel@ucw.cz> Signed-off-by: Jacek Anaszewski <jacek.anaszewski@gmail.com>
This commit is contained in:
parent
1dd7093742
commit
8e1f456129
@ -16,7 +16,9 @@
|
||||
#include <linux/list.h>
|
||||
#include <linux/module.h>
|
||||
#include <linux/mutex.h>
|
||||
#include <linux/of.h>
|
||||
#include <linux/rwsem.h>
|
||||
#include <linux/slab.h>
|
||||
#include "leds.h"
|
||||
|
||||
DECLARE_RWSEM(leds_list_lock);
|
||||
@ -310,6 +312,34 @@ int led_update_brightness(struct led_classdev *led_cdev)
|
||||
}
|
||||
EXPORT_SYMBOL_GPL(led_update_brightness);
|
||||
|
||||
u32 *led_get_default_pattern(struct led_classdev *led_cdev, unsigned int *size)
|
||||
{
|
||||
struct device_node *np = dev_of_node(led_cdev->dev);
|
||||
u32 *pattern;
|
||||
int count;
|
||||
|
||||
if (!np)
|
||||
return NULL;
|
||||
|
||||
count = of_property_count_u32_elems(np, "led-pattern");
|
||||
if (count < 0)
|
||||
return NULL;
|
||||
|
||||
pattern = kcalloc(count, sizeof(*pattern), GFP_KERNEL);
|
||||
if (!pattern)
|
||||
return NULL;
|
||||
|
||||
if (of_property_read_u32_array(np, "led-pattern", pattern, count)) {
|
||||
kfree(pattern);
|
||||
return NULL;
|
||||
}
|
||||
|
||||
*size = count;
|
||||
|
||||
return pattern;
|
||||
}
|
||||
EXPORT_SYMBOL_GPL(led_get_default_pattern);
|
||||
|
||||
/* Caller must ensure led_cdev->led_access held */
|
||||
void led_sysfs_disable(struct led_classdev *led_cdev)
|
||||
{
|
||||
|
@ -218,6 +218,19 @@ extern int led_set_brightness_sync(struct led_classdev *led_cdev,
|
||||
*/
|
||||
extern int led_update_brightness(struct led_classdev *led_cdev);
|
||||
|
||||
/**
|
||||
* led_get_default_pattern - return default pattern
|
||||
*
|
||||
* @led_cdev: the LED to get default pattern for
|
||||
* @size: pointer for storing the number of elements in returned array,
|
||||
* modified only if return != NULL
|
||||
*
|
||||
* Return: Allocated array of integers with default pattern from device tree
|
||||
* or NULL. Caller is responsible for kfree().
|
||||
*/
|
||||
extern u32 *led_get_default_pattern(struct led_classdev *led_cdev,
|
||||
unsigned int *size);
|
||||
|
||||
/**
|
||||
* led_sysfs_disable - disable LED sysfs interface
|
||||
* @led_cdev: the LED to set
|
||||
|
Loading…
Reference in New Issue
Block a user