diff options
author | Sameer Nanda <snanda@chromium.org> | 2015-02-05 15:30:22 -0800 |
---|---|---|
committer | ChromeOS Commit Bot <chromeos-commit-bot@chromium.org> | 2015-02-06 03:37:57 +0000 |
commit | 98b6ac17e16b47ccc872a96e5728e092a776630e (patch) | |
tree | 77d63ae6674f02480e376b1bf468811f0effa47b | |
parent | f8af89c40d974e79b3e69698f6d8aa98e0e40fc9 (diff) | |
download | chrome-ec-98b6ac17e16b47ccc872a96e5728e092a776630e.tar.gz |
samus: smoothen backlight brightness transitions
With DBC, the backlight transitions are fairly perceptible at low
brightness levels. Smoothing out backlight transitions over a 200ms
period makes these far less perceptible.
BRANCH=samus
BUG=chrome-os-partner:36245
TEST=The following command should read back the value of 0xe7 after
system boot, resume as well as after panel off/on sequence:
ectool --dev=0 i2cread 8 0 0x58 0x15
Change-Id: Ia24b87a0ead179d968cfc1239be757c1822450e4
Signed-off-by: Sameer Nanda <snanda@chromium.org>
Reviewed-on: https://chromium-review.googlesource.com/246741
Reviewed-by: Duncan Laurie <dlaurie@chromium.org>
Reviewed-by: Alec Berg <alecaberg@chromium.org>
-rw-r--r-- | board/samus/panel.c | 32 |
1 files changed, 30 insertions, 2 deletions
diff --git a/board/samus/panel.c b/board/samus/panel.c index b0cb77a6d5..6a8fa9ebe5 100644 --- a/board/samus/panel.c +++ b/board/samus/panel.c @@ -28,9 +28,30 @@ #define LP8555_REG_CURRENT_MAXCURR_25MA 0x05 #define LP8555_REG_CURRENT_MAXCURR_30MA 0x06 #define LP8555_REG_CURRENT_MAXCURR_50MA 0x07 +#define LP8555_REG_STEP 0x15 +#define LP8555_REG_STEP_STEP_0MS (0 << 0) +#define LP8555_REG_STEP_STEP_8MS (1 << 0) +#define LP8555_REG_STEP_STEP_16MS (2 << 0) +#define LP8555_REG_STEP_STEP_24MS (3 << 0) +#define LP8555_REG_STEP_STEP_28MS (4 << 0) +#define LP8555_REG_STEP_STEP_32MS (5 << 0) +#define LP8555_REG_STEP_STEP_100MS (6 << 0) +#define LP8555_REG_STEP_STEP_200MS (7 << 0) +#define LP8555_REG_STEP_PWM_IN_HYST_NONE (0 << 3) +#define LP8555_REG_STEP_PWM_IN_HYST_1LSB (1 << 3) +#define LP8555_REG_STEP_PWM_IN_HYST_2LSB (2 << 3) +#define LP8555_REG_STEP_PWM_IN_HYST_4LSB (3 << 3) +#define LP8555_REG_STEP_PWM_IN_HYST_8LSB (4 << 3) +#define LP8555_REG_STEP_PWM_IN_HYST_16LSB (5 << 3) +#define LP8555_REG_STEP_PWM_IN_HYST_32LSB (6 << 3) +#define LP8555_REG_STEP_PWM_IN_HYST_64LSB (7 << 3) +#define LP8555_REG_STEP_SMOOTH_NONE (0 << 6) +#define LP8555_REG_STEP_SMOOTH_LIGHT (1 << 6) +#define LP8555_REG_STEP_SMOOTH_MEDIUM (2 << 6) +#define LP8555_REG_STEP_SMOOTH_HEAVY (3 << 6) /** - * Enable PWM mode in backlight controller and turn it on. + * Setup backlight controller and turn it on. */ static void lp8555_enable_pwm_mode(void) { @@ -46,7 +67,14 @@ static void lp8555_enable_pwm_mode(void) /* Set max LED current to 23mA. */ i2c_write8(I2C_PORT_BACKLIGHT, I2C_ADDR_BACKLIGHT, - LP8555_REG_CURRENT, LP8555_REG_CURRENT_MAXCURR_23MA); + LP8555_REG_CURRENT, LP8555_REG_CURRENT_MAXCURR_23MA); + + /* Set the rate of brightness change. */ + i2c_write8(I2C_PORT_BACKLIGHT, I2C_ADDR_BACKLIGHT, + LP8555_REG_STEP, + LP8555_REG_STEP_STEP_200MS | + LP8555_REG_STEP_PWM_IN_HYST_8LSB | + LP8555_REG_STEP_SMOOTH_HEAVY); /* Power on. */ i2c_read8(I2C_PORT_BACKLIGHT, I2C_ADDR_BACKLIGHT, |