mirror of
https://github.com/edk2-porting/linux-next.git
synced 2024-12-30 08:04:13 +08:00
fe009175ae
LP855x backlight device can be enabled by external VDD input. The 'supply' data is used for this purpose. It's kind of private data which runs internally, so there is no reason to expose to the platform data. And devm_regulator_get() is moved from _parse_dt() to _probe(). Regulator consumer(lp855x) can control regulator not only from DT but also from platform data configuration in a source file such like board-*.c. Signed-off-by: Milo Kim <milo.kim@ti.com> Acked-by: Sean Paul <seanpaul@chromium.org> Acked-by: Jingoo Han <jingoohan1@gmail.com> Signed-off-by: Lee Jones <lee.jones@linaro.org>
150 lines
4.1 KiB
C
150 lines
4.1 KiB
C
/*
|
|
* LP855x Backlight Driver
|
|
*
|
|
* Copyright (C) 2011 Texas Instruments
|
|
*
|
|
* This program is free software; you can redistribute it and/or modify
|
|
* it under the terms of the GNU General Public License version 2 as
|
|
* published by the Free Software Foundation.
|
|
*
|
|
*/
|
|
|
|
#ifndef _LP855X_H
|
|
#define _LP855X_H
|
|
|
|
#define BL_CTL_SHFT (0)
|
|
#define BRT_MODE_SHFT (1)
|
|
#define BRT_MODE_MASK (0x06)
|
|
|
|
/* Enable backlight. Only valid when BRT_MODE=10(I2C only) */
|
|
#define ENABLE_BL (1)
|
|
#define DISABLE_BL (0)
|
|
|
|
#define I2C_CONFIG(id) id ## _I2C_CONFIG
|
|
#define PWM_CONFIG(id) id ## _PWM_CONFIG
|
|
|
|
/* DEVICE CONTROL register - LP8550 */
|
|
#define LP8550_PWM_CONFIG (LP8550_PWM_ONLY << BRT_MODE_SHFT)
|
|
#define LP8550_I2C_CONFIG ((ENABLE_BL << BL_CTL_SHFT) | \
|
|
(LP8550_I2C_ONLY << BRT_MODE_SHFT))
|
|
|
|
/* DEVICE CONTROL register - LP8551 */
|
|
#define LP8551_PWM_CONFIG LP8550_PWM_CONFIG
|
|
#define LP8551_I2C_CONFIG LP8550_I2C_CONFIG
|
|
|
|
/* DEVICE CONTROL register - LP8552 */
|
|
#define LP8552_PWM_CONFIG LP8550_PWM_CONFIG
|
|
#define LP8552_I2C_CONFIG LP8550_I2C_CONFIG
|
|
|
|
/* DEVICE CONTROL register - LP8553 */
|
|
#define LP8553_PWM_CONFIG LP8550_PWM_CONFIG
|
|
#define LP8553_I2C_CONFIG LP8550_I2C_CONFIG
|
|
|
|
/* CONFIG register - LP8555 */
|
|
#define LP8555_PWM_STANDBY BIT(7)
|
|
#define LP8555_PWM_FILTER BIT(6)
|
|
#define LP8555_RELOAD_EPROM BIT(3) /* use it if EPROMs should be reset
|
|
when the backlight turns on */
|
|
#define LP8555_OFF_OPENLEDS BIT(2)
|
|
#define LP8555_PWM_CONFIG LP8555_PWM_ONLY
|
|
#define LP8555_I2C_CONFIG LP8555_I2C_ONLY
|
|
#define LP8555_COMB1_CONFIG LP8555_COMBINED1
|
|
#define LP8555_COMB2_CONFIG LP8555_COMBINED2
|
|
|
|
/* DEVICE CONTROL register - LP8556 */
|
|
#define LP8556_PWM_CONFIG (LP8556_PWM_ONLY << BRT_MODE_SHFT)
|
|
#define LP8556_COMB1_CONFIG (LP8556_COMBINED1 << BRT_MODE_SHFT)
|
|
#define LP8556_I2C_CONFIG ((ENABLE_BL << BL_CTL_SHFT) | \
|
|
(LP8556_I2C_ONLY << BRT_MODE_SHFT))
|
|
#define LP8556_COMB2_CONFIG (LP8556_COMBINED2 << BRT_MODE_SHFT)
|
|
#define LP8556_FAST_CONFIG BIT(7) /* use it if EPROMs should be maintained
|
|
when exiting the low power mode */
|
|
|
|
/* CONFIG register - LP8557 */
|
|
#define LP8557_PWM_STANDBY BIT(7)
|
|
#define LP8557_PWM_FILTER BIT(6)
|
|
#define LP8557_RELOAD_EPROM BIT(3) /* use it if EPROMs should be reset
|
|
when the backlight turns on */
|
|
#define LP8557_OFF_OPENLEDS BIT(2)
|
|
#define LP8557_PWM_CONFIG LP8557_PWM_ONLY
|
|
#define LP8557_I2C_CONFIG LP8557_I2C_ONLY
|
|
#define LP8557_COMB1_CONFIG LP8557_COMBINED1
|
|
#define LP8557_COMB2_CONFIG LP8557_COMBINED2
|
|
|
|
enum lp855x_chip_id {
|
|
LP8550,
|
|
LP8551,
|
|
LP8552,
|
|
LP8553,
|
|
LP8555,
|
|
LP8556,
|
|
LP8557,
|
|
};
|
|
|
|
enum lp8550_brighntess_source {
|
|
LP8550_PWM_ONLY,
|
|
LP8550_I2C_ONLY = 2,
|
|
};
|
|
|
|
enum lp8551_brighntess_source {
|
|
LP8551_PWM_ONLY = LP8550_PWM_ONLY,
|
|
LP8551_I2C_ONLY = LP8550_I2C_ONLY,
|
|
};
|
|
|
|
enum lp8552_brighntess_source {
|
|
LP8552_PWM_ONLY = LP8550_PWM_ONLY,
|
|
LP8552_I2C_ONLY = LP8550_I2C_ONLY,
|
|
};
|
|
|
|
enum lp8553_brighntess_source {
|
|
LP8553_PWM_ONLY = LP8550_PWM_ONLY,
|
|
LP8553_I2C_ONLY = LP8550_I2C_ONLY,
|
|
};
|
|
|
|
enum lp8555_brightness_source {
|
|
LP8555_PWM_ONLY,
|
|
LP8555_I2C_ONLY,
|
|
LP8555_COMBINED1, /* Brightness register with shaped PWM */
|
|
LP8555_COMBINED2, /* PWM with shaped brightness register */
|
|
};
|
|
|
|
enum lp8556_brightness_source {
|
|
LP8556_PWM_ONLY,
|
|
LP8556_COMBINED1, /* pwm + i2c before the shaper block */
|
|
LP8556_I2C_ONLY,
|
|
LP8556_COMBINED2, /* pwm + i2c after the shaper block */
|
|
};
|
|
|
|
enum lp8557_brightness_source {
|
|
LP8557_PWM_ONLY,
|
|
LP8557_I2C_ONLY,
|
|
LP8557_COMBINED1, /* pwm + i2c after the shaper block */
|
|
LP8557_COMBINED2, /* pwm + i2c before the shaper block */
|
|
};
|
|
|
|
struct lp855x_rom_data {
|
|
u8 addr;
|
|
u8 val;
|
|
};
|
|
|
|
/**
|
|
* struct lp855x_platform_data
|
|
* @name : Backlight driver name. If it is not defined, default name is set.
|
|
* @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 mode is PWM_BASED.
|
|
* @size_program : total size of lp855x_rom_data
|
|
* @rom_data : list of new eeprom/eprom registers
|
|
*/
|
|
struct lp855x_platform_data {
|
|
const char *name;
|
|
u8 device_control;
|
|
u8 initial_brightness;
|
|
unsigned int period_ns;
|
|
int size_program;
|
|
struct lp855x_rom_data *rom_data;
|
|
};
|
|
|
|
#endif
|