Commit | Line | Data |
---|---|---|
32abb478 SJ |
1 | Kernel driver for lm3556 |
2 | ======================== | |
3 | ||
4 | *Texas Instrument: | |
5 | 1.5 A Synchronous Boost LED Flash Driver w/ High-Side Current Source | |
6 | * Datasheet: http://www.national.com/ds/LM/LM3556.pdf | |
7 | ||
8 | Authors: | |
9 | Daniel Jeong | |
10 | Contact:Daniel Jeong(daniel.jeong-at-ti.com, gshark.jeong-at-gmail.com) | |
11 | ||
12 | Description | |
13 | ----------- | |
14 | There are 3 functions in LM3556, Flash, Torch and Indicator. | |
15 | ||
16 | FLASH MODE | |
17 | In Flash Mode, the LED current source(LED) provides 16 target current levels | |
18 | from 93.75 mA to 1500 mA.The Flash currents are adjusted via the CURRENT | |
19 | CONTROL REGISTER(0x09).Flash mode is activated by the ENABLE REGISTER(0x0A), | |
20 | or by pulling the STROBE pin HIGH. | |
21 | LM3556 Flash can be controlled through sys/class/leds/flash/brightness file | |
22 | * if STROBE pin is enabled, below example control brightness only, and | |
23 | ON / OFF will be controlled by STROBE pin. | |
24 | ||
25 | Flash Example: | |
26 | OFF : #echo 0 > sys/class/leds/flash/brightness | |
27 | 93.75 mA: #echo 1 > sys/class/leds/flash/brightness | |
28 | ... ..... | |
29 | 1500 mA: #echo 16 > sys/class/leds/flash/brightness | |
30 | ||
31 | TORCH MODE | |
32 | In Torch Mode, the current source(LED) is programmed via the CURRENT CONTROL | |
33 | REGISTER(0x09).Torch Mode is activated by the ENABLE REGISTER(0x0A) or by the | |
34 | hardware TORCH input. | |
35 | LM3556 torch can be controlled through sys/class/leds/torch/brightness file. | |
36 | * if TORCH pin is enabled, below example control brightness only, | |
37 | and ON / OFF will be controlled by TORCH pin. | |
38 | ||
39 | Torch Example: | |
40 | OFF : #echo 0 > sys/class/leds/torch/brightness | |
41 | 46.88 mA: #echo 1 > sys/class/leds/torch/brightness | |
42 | ... ..... | |
43 | 375 mA : #echo 8 > sys/class/leds/torch/brightness | |
44 | ||
45 | INDICATOR MODE | |
46 | Indicator pattern can be set through sys/class/leds/indicator/pattern file, | |
47 | and 4 patterns are pre-defined in indicator_pattern array. | |
48 | According to N-lank, Pulse time and N Period values, different pattern wiill | |
49 | be generated.If you want new patterns for your own device, change | |
50 | indicator_pattern array with your own values and INDIC_PATTERN_SIZE. | |
51 | Please refer datasheet for more detail about N-Blank, Pulse time and N Period. | |
52 | ||
53 | Indicator pattern example: | |
54 | pattern 0: #echo 0 > sys/class/leds/indicator/pattern | |
55 | .... | |
56 | pattern 3: #echo 3 > sys/class/leds/indicator/pattern | |
57 | ||
58 | Indicator brightness can be controlled through | |
59 | sys/class/leds/indicator/brightness file. | |
60 | ||
61 | Example: | |
62 | OFF : #echo 0 > sys/class/leds/indicator/brightness | |
63 | 5.86 mA : #echo 1 > sys/class/leds/indicator/brightness | |
64 | ........ | |
65 | 46.875mA : #echo 8 > sys/class/leds/indicator/brightness | |
66 | ||
67 | Notes | |
68 | ----- | |
69 | Driver expects it is registered using the i2c_board_info mechanism. | |
70 | To register the chip at address 0x63 on specific adapter, set the platform data | |
71 | according to include/linux/platform_data/leds-lm3556.h, set the i2c board info | |
72 | ||
73 | Example: | |
eb967b6a | 74 | static struct i2c_board_info board_i2c_ch4[] __initdata = { |
32abb478 SJ |
75 | { |
76 | I2C_BOARD_INFO(LM3556_NAME, 0x63), | |
77 | .platform_data = &lm3556_pdata, | |
78 | }, | |
79 | }; | |
80 | ||
81 | and register it in the platform init function | |
82 | ||
83 | Example: | |
84 | board_register_i2c_bus(4, 400, | |
85 | board_i2c_ch4, ARRAY_SIZE(board_i2c_ch4)); |