diff options
| author | Kim, Milo <Milo.Kim@ti.com> | 2012-03-23 18:02:01 -0400 |
|---|---|---|
| committer | Linus Torvalds <torvalds@linux-foundation.org> | 2012-03-23 19:58:33 -0400 |
| commit | 7be865ab8634d4ec2a6bdb9459b268cd60e832af (patch) | |
| tree | d7b73134707935d0bf6a912fa96e6dfcef47676a /Documentation/backlight | |
| parent | 050ea48bbfc80b6aa81f8df0d9f25e6e47d96e98 (diff) | |
backlight: new backlight driver for LP855x devices
THis driver supports TI LP8550/LP8551/LP8552/LP8553/LP8556 backlight
devices.
The brightness can be controlled by the I2C or PWM input. The lp855x
driver provides both modes. For the PWM control, pwm-specific functions
can be defined in the platform data. And some information can be read
via the sysfs(lp855x device attributes).
For details, please refer to Documentation/backlight/lp855x-driver.txt.
[axel.lin@gmail.com: add missing mutex_unlock in lp855x_read_byte() error path]
[axel.lin@gmail.com: check platform data in lp855x_probe()]
[axel.lin@gmail.com: small cleanups]
[dan.carpenter@oracle.com: silence a compiler warning]
[axel.lin@gmail.com: use id->driver_data to differentiate lp855x chips]
[akpm@linux-foundation.org: simplify boolean return expression]
Signed-off-by: Milo(Woogyom) Kim <milo.kim@ti.com>
Signed-off-by: Axel Lin <axel.lin@gmail.com>
Signed-off-by: Dan Carpenter <dan.carpenter@oracle.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 'Documentation/backlight')
| -rw-r--r-- | Documentation/backlight/lp855x-driver.txt | 78 |
1 files changed, 78 insertions, 0 deletions
diff --git a/Documentation/backlight/lp855x-driver.txt b/Documentation/backlight/lp855x-driver.txt new file mode 100644 index 000000000000..f5e4caafab7d --- /dev/null +++ b/Documentation/backlight/lp855x-driver.txt | |||
| @@ -0,0 +1,78 @@ | |||
| 1 | Kernel driver lp855x | ||
| 2 | ==================== | ||
| 3 | |||
| 4 | Backlight driver for LP855x ICs | ||
| 5 | |||
| 6 | Supported chips: | ||
| 7 | Texas Instruments LP8550, LP8551, LP8552, LP8553 and LP8556 | ||
| 8 | |||
| 9 | Author: Milo(Woogyom) Kim <milo.kim@ti.com> | ||
| 10 | |||
| 11 | Description | ||
| 12 | ----------- | ||
| 13 | |||
| 14 | * Brightness control | ||
| 15 | |||
| 16 | Brightness can be controlled by the pwm input or the i2c command. | ||
| 17 | The lp855x driver supports both cases. | ||
| 18 | |||
| 19 | * Device attributes | ||
| 20 | |||
| 21 | 1) bl_ctl_mode | ||
| 22 | Backlight control mode. | ||
| 23 | Value : pwm based or register based | ||
| 24 | |||
| 25 | 2) chip_id | ||
| 26 | The lp855x chip id. | ||
| 27 | Value : lp8550/lp8551/lp8552/lp8553/lp8556 | ||
| 28 | |||
| 29 | Platform data for lp855x | ||
| 30 | ------------------------ | ||
| 31 | |||
| 32 | For supporting platform specific data, the lp855x platform data can be used. | ||
| 33 | |||
| 34 | * name : Backlight driver name. If it is not defined, default name is set. | ||
| 35 | * mode : Brightness control mode. PWM or register based. | ||
| 36 | * device_control : Value of DEVICE CONTROL register. | ||
| 37 | * initial_brightness : Initial value of backlight brightness. | ||
| 38 | * pwm_data : Platform specific pwm generation functions. | ||
| 39 | Only valid when brightness is pwm input mode. | ||
| 40 | Functions should be implemented by PWM driver. | ||
| 41 | - pwm_set_intensity() : set duty of PWM | ||
| 42 | - pwm_get_intensity() : get current duty of PWM | ||
| 43 | * load_new_rom_data : | ||
| 44 | 0 : use default configuration data | ||
| 45 | 1 : update values of eeprom or eprom registers on loading driver | ||
| 46 | * size_program : Total size of lp855x_rom_data. | ||
| 47 | * rom_data : List of new eeprom/eprom registers. | ||
| 48 | |||
| 49 | example 1) lp8552 platform data : i2c register mode with new eeprom data | ||
| 50 | |||
| 51 | #define EEPROM_A5_ADDR 0xA5 | ||
| 52 | #define EEPROM_A5_VAL 0x4f /* EN_VSYNC=0 */ | ||
| 53 | |||
| 54 | static struct lp855x_rom_data lp8552_eeprom_arr[] = { | ||
| 55 | {EEPROM_A5_ADDR, EEPROM_A5_VAL}, | ||
| 56 | }; | ||
| 57 | |||
| 58 | static struct lp855x_platform_data lp8552_pdata = { | ||
| 59 | .name = "lcd-bl", | ||
| 60 | .mode = REGISTER_BASED, | ||
| 61 | .device_control = I2C_CONFIG(LP8552), | ||
| 62 | .initial_brightness = INITIAL_BRT, | ||
| 63 | .load_new_rom_data = 1, | ||
| 64 | .size_program = ARRAY_SIZE(lp8552_eeprom_arr), | ||
| 65 | .rom_data = lp8552_eeprom_arr, | ||
| 66 | }; | ||
| 67 | |||
| 68 | example 2) lp8556 platform data : pwm input mode with default rom data | ||
| 69 | |||
| 70 | static struct lp855x_platform_data lp8556_pdata = { | ||
| 71 | .mode = PWM_BASED, | ||
| 72 | .device_control = PWM_CONFIG(LP8556), | ||
| 73 | .initial_brightness = INITIAL_BRT, | ||
| 74 | .pwm_data = { | ||
| 75 | .pwm_set_intensity = platform_pwm_set_intensity, | ||
| 76 | .pwm_get_intensity = platform_pwm_get_intensity, | ||
| 77 | }, | ||
| 78 | }; | ||
