-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
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>
- Loading branch information
Kim, Milo
authored and
Linus Torvalds
committed
Mar 23, 2012
1 parent
050ea48
commit 7be865a
Showing
5 changed files
with
548 additions
and
0 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,78 @@ | ||
Kernel driver lp855x | ||
==================== | ||
|
||
Backlight driver for LP855x ICs | ||
|
||
Supported chips: | ||
Texas Instruments LP8550, LP8551, LP8552, LP8553 and LP8556 | ||
|
||
Author: Milo(Woogyom) Kim <milo.kim@ti.com> | ||
|
||
Description | ||
----------- | ||
|
||
* Brightness control | ||
|
||
Brightness can be controlled by the pwm input or the i2c command. | ||
The lp855x driver supports both cases. | ||
|
||
* Device attributes | ||
|
||
1) bl_ctl_mode | ||
Backlight control mode. | ||
Value : pwm based or register based | ||
|
||
2) chip_id | ||
The lp855x chip id. | ||
Value : lp8550/lp8551/lp8552/lp8553/lp8556 | ||
|
||
Platform data for lp855x | ||
------------------------ | ||
|
||
For supporting platform specific data, the lp855x platform data can be used. | ||
|
||
* name : Backlight driver name. If it is not defined, default name is set. | ||
* mode : Brightness control mode. PWM or register based. | ||
* device_control : Value of DEVICE CONTROL register. | ||
* initial_brightness : Initial value of backlight brightness. | ||
* pwm_data : Platform specific pwm generation functions. | ||
Only valid when brightness is pwm input mode. | ||
Functions should be implemented by PWM driver. | ||
- pwm_set_intensity() : set duty of PWM | ||
- pwm_get_intensity() : get current duty of PWM | ||
* load_new_rom_data : | ||
0 : use default configuration data | ||
1 : update values of eeprom or eprom registers on loading driver | ||
* size_program : Total size of lp855x_rom_data. | ||
* rom_data : List of new eeprom/eprom registers. | ||
|
||
example 1) lp8552 platform data : i2c register mode with new eeprom data | ||
|
||
#define EEPROM_A5_ADDR 0xA5 | ||
#define EEPROM_A5_VAL 0x4f /* EN_VSYNC=0 */ | ||
|
||
static struct lp855x_rom_data lp8552_eeprom_arr[] = { | ||
{EEPROM_A5_ADDR, EEPROM_A5_VAL}, | ||
}; | ||
|
||
static struct lp855x_platform_data lp8552_pdata = { | ||
.name = "lcd-bl", | ||
.mode = REGISTER_BASED, | ||
.device_control = I2C_CONFIG(LP8552), | ||
.initial_brightness = INITIAL_BRT, | ||
.load_new_rom_data = 1, | ||
.size_program = ARRAY_SIZE(lp8552_eeprom_arr), | ||
.rom_data = lp8552_eeprom_arr, | ||
}; | ||
|
||
example 2) lp8556 platform data : pwm input mode with default rom data | ||
|
||
static struct lp855x_platform_data lp8556_pdata = { | ||
.mode = PWM_BASED, | ||
.device_control = PWM_CONFIG(LP8556), | ||
.initial_brightness = INITIAL_BRT, | ||
.pwm_data = { | ||
.pwm_set_intensity = platform_pwm_set_intensity, | ||
.pwm_get_intensity = platform_pwm_get_intensity, | ||
}, | ||
}; |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Oops, something went wrong.