Commit | Line | Data |
---|---|---|
7be865ab KM |
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 | }; |