diff options
author | Kim, Milo <Milo.Kim@ti.com> | 2012-03-23 18:02:09 -0400 |
---|---|---|
committer | Linus Torvalds <torvalds@linux-foundation.org> | 2012-03-23 19:58:34 -0400 |
commit | 011af7bc7cd188a0310e2d26cdc2cc5d90148b0c (patch) | |
tree | 3f3aa08b555bdcb4c4dfe6e8d4bec9c4205ccd79 /include/linux | |
parent | 3b49aacd0e56d5bf1b511f6554f17cd65eb8da64 (diff) |
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>
Diffstat (limited to 'include/linux')
-rw-r--r-- | include/linux/leds-lp5521.h | 11 |
1 files changed, 11 insertions, 0 deletions
diff --git a/include/linux/leds-lp5521.h b/include/linux/leds-lp5521.h index e9ab583cac36..3f071ec019b2 100644 --- a/include/linux/leds-lp5521.h +++ b/include/linux/leds-lp5521.h | |||
@@ -32,6 +32,15 @@ struct lp5521_led_config { | |||
32 | u8 max_current; | 32 | u8 max_current; |
33 | }; | 33 | }; |
34 | 34 | ||
35 | struct lp5521_led_pattern { | ||
36 | u8 *r; | ||
37 | u8 *g; | ||
38 | u8 *b; | ||
39 | u8 size_r; | ||
40 | u8 size_g; | ||
41 | u8 size_b; | ||
42 | }; | ||
43 | |||
35 | #define LP5521_CLOCK_AUTO 0 | 44 | #define LP5521_CLOCK_AUTO 0 |
36 | #define LP5521_CLOCK_INT 1 | 45 | #define LP5521_CLOCK_INT 1 |
37 | #define LP5521_CLOCK_EXT 2 | 46 | #define LP5521_CLOCK_EXT 2 |
@@ -57,6 +66,8 @@ struct lp5521_platform_data { | |||
57 | void (*enable)(bool state); | 66 | void (*enable)(bool state); |
58 | const char *label; | 67 | const char *label; |
59 | u8 update_config; | 68 | u8 update_config; |
69 | struct lp5521_led_pattern *patterns; | ||
70 | int num_patterns; | ||
60 | }; | 71 | }; |
61 | 72 | ||
62 | #endif /* __LINUX_LP5521_H */ | 73 | #endif /* __LINUX_LP5521_H */ |