forked from Minki/linux
8cc9764c9c
The LP855x family devices support the PWM input for the backlight control. Period of the PWM is configurable in the platform side. Platform specific functions are unnecessary anymore because generic PWM functions are used inside the driver. (PWM input mode) To set the brightness, new lp855x_pwm_ctrl() is used. If a PWM device is not allocated, devm_pwm_get() is called. The PWM consumer name is from the chip name such as 'lp8550' and 'lp8556'. To get the brightness value, no additional handling is required. Just the value of 'props.brightness' is returned. If the PWM driver is not ready while initializing the LP855x driver, it's OK. The PWM device can be retrieved later, when the brightness value is changed. Documentation is updated with an example. [akpm@linux-foundation.org: coding-style simplification, per Thierry] Signed-off-by: Milo(Woogyom) Kim <milo.kim@ti.com> Cc: Thierry Reding <thierry.reding@avionic-design.de> Cc: Richard Purdie <rpurdie@rpsys.net> Cc: Bryan Wu <bryan.wu@canonical.com> Signed-off-by: Andrew Morton <akpm@linux-foundation.org> Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
73 lines
2.0 KiB
Plaintext
73 lines
2.0 KiB
Plaintext
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.
|
|
* period_ns : Platform specific PWM period value. unit is nano.
|
|
Only valid when brightness is pwm input mode.
|
|
* 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,
|
|
.period_ns = 1000000,
|
|
};
|