Commit | Line | Data |
---|---|---|
500fe141 SO |
1 | /* |
2 | * LP5521 LED chip driver. | |
3 | * | |
4 | * Copyright (C) 2010 Nokia Corporation | |
5 | * | |
6 | * Contact: Samu Onkalo <samu.p.onkalo@nokia.com> | |
7 | * | |
8 | * This program is free software; you can redistribute it and/or | |
9 | * modify it under the terms of the GNU General Public License | |
10 | * version 2 as published by the Free Software Foundation. | |
11 | * | |
12 | * This program is distributed in the hope that it will be useful, but | |
13 | * WITHOUT ANY WARRANTY; without even the implied warranty of | |
14 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU | |
15 | * General Public License for more details. | |
16 | * | |
17 | * You should have received a copy of the GNU General Public License | |
18 | * along with this program; if not, write to the Free Software | |
19 | * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA | |
20 | * 02110-1301 USA | |
21 | */ | |
22 | ||
23 | #ifndef __LINUX_LP5521_H | |
24 | #define __LINUX_LP5521_H | |
25 | ||
26 | /* See Documentation/leds/leds-lp5521.txt */ | |
27 | ||
28 | struct lp5521_led_config { | |
5ae4e8a7 | 29 | char *name; |
500fe141 SO |
30 | u8 chan_nr; |
31 | u8 led_current; /* mA x10, 0 if led is not connected */ | |
32 | u8 max_current; | |
33 | }; | |
34 | ||
011af7bc KM |
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 | ||
500fe141 SO |
44 | #define LP5521_CLOCK_AUTO 0 |
45 | #define LP5521_CLOCK_INT 1 | |
46 | #define LP5521_CLOCK_EXT 2 | |
47 | ||
3b49aacd KM |
48 | /* Bits in CONFIG register */ |
49 | #define LP5521_PWM_HF 0x40 /* PWM: 0 = 256Hz, 1 = 558Hz */ | |
50 | #define LP5521_PWRSAVE_EN 0x20 /* 1 = Power save mode */ | |
51 | #define LP5521_CP_MODE_OFF 0 /* Charge pump (CP) off */ | |
52 | #define LP5521_CP_MODE_BYPASS 8 /* CP forced to bypass mode */ | |
53 | #define LP5521_CP_MODE_1X5 0x10 /* CP forced to 1.5x mode */ | |
54 | #define LP5521_CP_MODE_AUTO 0x18 /* Automatic mode selection */ | |
55 | #define LP5521_R_TO_BATT 4 /* R out: 0 = CP, 1 = Vbat */ | |
56 | #define LP5521_CLK_SRC_EXT 0 /* Ext-clk source (CLK_32K) */ | |
57 | #define LP5521_CLK_INT 1 /* Internal clock */ | |
58 | #define LP5521_CLK_AUTO 2 /* Automatic clock selection */ | |
59 | ||
500fe141 SO |
60 | struct lp5521_platform_data { |
61 | struct lp5521_led_config *led_config; | |
62 | u8 num_channels; | |
63 | u8 clock_mode; | |
64 | int (*setup_resources)(void); | |
65 | void (*release_resources)(void); | |
66 | void (*enable)(bool state); | |
61a83932 | 67 | const char *label; |
3b49aacd | 68 | u8 update_config; |
011af7bc KM |
69 | struct lp5521_led_pattern *patterns; |
70 | int num_patterns; | |
500fe141 SO |
71 | }; |
72 | ||
73 | #endif /* __LINUX_LP5521_H */ |