Antonio Ospite | 5054d39 | 2009-06-19 13:55:42 +0200 | [diff] [blame] | 1 | Kernel driver lp3944 |
| 2 | ==================== |
| 3 | |
| 4 | * National Semiconductor LP3944 Fun-light Chip |
| 5 | Prefix: 'lp3944' |
| 6 | Addresses scanned: None (see the Notes section below) |
| 7 | Datasheet: Publicly available at the National Semiconductor website |
| 8 | http://www.national.com/pf/LP/LP3944.html |
| 9 | |
| 10 | Authors: |
| 11 | Antonio Ospite <ospite@studenti.unina.it> |
| 12 | |
| 13 | |
| 14 | Description |
| 15 | ----------- |
| 16 | The LP3944 is a helper chip that can drive up to 8 leds, with two programmable |
| 17 | DIM modes; it could even be used as a gpio expander but this driver assumes it |
| 18 | is used as a led controller. |
| 19 | |
| 20 | The DIM modes are used to set _blink_ patterns for leds, the pattern is |
| 21 | specified supplying two parameters: |
| 22 | - period: from 0s to 1.6s |
| 23 | - duty cycle: percentage of the period the led is on, from 0 to 100 |
| 24 | |
| 25 | Setting a led in DIM0 or DIM1 mode makes it blink according to the pattern. |
| 26 | See the datasheet for details. |
| 27 | |
| 28 | LP3944 can be found on Motorola A910 smartphone, where it drives the rgb |
| 29 | leds, the camera flash light and the lcds power. |
| 30 | |
| 31 | |
| 32 | Notes |
| 33 | ----- |
| 34 | The chip is used mainly in embedded contexts, so this driver expects it is |
| 35 | registered using the i2c_board_info mechanism. |
| 36 | |
| 37 | To register the chip at address 0x60 on adapter 0, set the platform data |
| 38 | according to include/linux/leds-lp3944.h, set the i2c board info: |
| 39 | |
Sachin Kamat | eb967b6 | 2013-08-09 09:19:33 -0700 | [diff] [blame] | 40 | static struct i2c_board_info a910_i2c_board_info[] __initdata = { |
Antonio Ospite | 5054d39 | 2009-06-19 13:55:42 +0200 | [diff] [blame] | 41 | { |
| 42 | I2C_BOARD_INFO("lp3944", 0x60), |
| 43 | .platform_data = &a910_lp3944_leds, |
| 44 | }, |
| 45 | }; |
| 46 | |
| 47 | and register it in the platform init function |
| 48 | |
| 49 | i2c_register_board_info(0, a910_i2c_board_info, |
| 50 | ARRAY_SIZE(a910_i2c_board_info)); |