drivers/leds/leds-lp5521.c: support led pattern data
The lp5521 has autonomous operation mode without external control. Using lp5521_platform_data, various led patterns can be configurable. For supporting this feature, new functions and device attribute are added. Structure of lp5521_led_pattern: 3 channels are supported - red, green and blue. Pattern(s) of each channel and numbers of pattern(s) are defined in the pla= tform data. Pattern data are hexa codes which include pattern commands such like set pwm, wait, ramp up/down, branch and so on. Pattern mode functions: * lp5521_clear_program_memory Before running new led pattern, program memory should be cleared. * lp5521_write_program_memory Pattern data updated in the program memory via the i2c. * lp5521_get_pattern Get pattern from predefined in the platform data. * lp5521_run_led_pattern Stop current pattern or run new pattern. Transition time is required between different operation mode. Device attribute - 'led_pattern': To load specific led pattern, new device attribute is added. When the lp5521 driver is unloaded, stop current led pattern mode. Documentation updated : description about how to define the led patterns and example. [akpm@linux-foundation.org: checkpatch fixes] Signed-off-by: Milo(Woogyom) Kim <milo.kim@ti.com> Acked-by: Linus Walleij <linus.walleij@linaro.org> Cc: Arun MURTHY <arun.murthy@stericsson.com> Cc: Srinidhi Kasagar <srinidhi.kasagar@stericsson.com> Cc: Richard Purdie <rpurdie@rpsys.net> Signed-off-by: Andrew Morton <akpm@linux-foundation.org> Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
This commit is contained in:
parent
3b49aacd0e
commit
011af7bc7c
3 changed files with 150 additions and 1 deletions
|
|
@ -32,6 +32,15 @@ struct lp5521_led_config {
|
|||
u8 max_current;
|
||||
};
|
||||
|
||||
struct lp5521_led_pattern {
|
||||
u8 *r;
|
||||
u8 *g;
|
||||
u8 *b;
|
||||
u8 size_r;
|
||||
u8 size_g;
|
||||
u8 size_b;
|
||||
};
|
||||
|
||||
#define LP5521_CLOCK_AUTO 0
|
||||
#define LP5521_CLOCK_INT 1
|
||||
#define LP5521_CLOCK_EXT 2
|
||||
|
|
@ -57,6 +66,8 @@ struct lp5521_platform_data {
|
|||
void (*enable)(bool state);
|
||||
const char *label;
|
||||
u8 update_config;
|
||||
struct lp5521_led_pattern *patterns;
|
||||
int num_patterns;
|
||||
};
|
||||
|
||||
#endif /* __LINUX_LP5521_H */
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue