summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSameer Nanda <snanda@chromium.org>2015-02-05 15:30:22 -0800
committerChromeOS Commit Bot <chromeos-commit-bot@chromium.org>2015-02-06 03:37:57 +0000
commit98b6ac17e16b47ccc872a96e5728e092a776630e (patch)
tree77d63ae6674f02480e376b1bf468811f0effa47b
parentf8af89c40d974e79b3e69698f6d8aa98e0e40fc9 (diff)
downloadchrome-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.c32
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,