diff options
author | Yilun Lin <yllin@google.com> | 2019-05-15 18:37:26 +0800 |
---|---|---|
committer | chrome-bot <chrome-bot@chromium.org> | 2019-06-03 01:11:05 -0700 |
commit | b18ea4eb30e9279c12a1962dc494429863e7363f (patch) | |
tree | 3e732281999f6a1102b2dee457fcbc19de9efe8e /driver/charger/rt946x.c | |
parent | 49436b18d2a77b994fe76d8c2f070000e2cdb58a (diff) | |
download | chrome-ec-b18ea4eb30e9279c12a1962dc494429863e7363f.tar.gz |
charger/rt946x: Add display bias API mt6370_db_set_voltages.
Add mt6370_db_set_voltages to control VBST, VPOS, and VNEG.
TEST=Test with CL:1632132 on krane:
i2cxfer r 0 0x68 0xb1; see output 0x36
i2cxfer r 0 0x68 0xb2; see output 0x68
i2cxfer r 0 0x68 0xb3; see output 0x64
i2cxfer r 0 0x68 0xb4; see output 0x64
BUG=b:125644770
BRANCH=None
Change-Id: Ia66ba91a2af3a651a71195dd8a2d531bf1ba06e9
Signed-off-by: Yilun Lin <yllin@google.com>
Reviewed-on: https://chromium-review.googlesource.com/1613257
Commit-Ready: Yilun Lin <yllin@chromium.org>
Tested-by: Yilun Lin <yllin@chromium.org>
Legacy-Commit-Queue: Commit Bot <commit-bot@chromium.org>
Reviewed-by: Daisuke Nojiri <dnojiri@chromium.org>
Diffstat (limited to 'driver/charger/rt946x.c')
-rw-r--r-- | driver/charger/rt946x.c | 31 |
1 files changed, 31 insertions, 0 deletions
diff --git a/driver/charger/rt946x.c b/driver/charger/rt946x.c index 226b4b4d0a..d3d9309129 100644 --- a/driver/charger/rt946x.c +++ b/driver/charger/rt946x.c @@ -1059,6 +1059,37 @@ int mt6370_db_external_control(int en) en << MT6370_SHIFT_DB_EXT_EN); } +int mt6370_db_set_voltages(int vbst, int vpos, int vneg) +{ + int rv; + + /* set display bias VBST */ + rv = rt946x_update_bits(MT6370_REG_DBVBST, MT6370_MASK_DB_VBST, + rt946x_closest_reg(MT6370_DB_VBST_MIN, + MT6370_DB_VBST_MAX, + MT6370_DB_VBST_STEP, vbst)); + + /* set display bias VPOS */ + rv |= rt946x_update_bits(MT6370_REG_DBVPOS, MT6370_MASK_DB_VPOS, + rt946x_closest_reg(MT6370_DB_VPOS_MIN, + MT6370_DB_VPOS_MAX, + MT6370_DB_VPOS_STEP, vpos)); + + /* set display bias VNEG */ + rv |= rt946x_update_bits(MT6370_REG_DBVNEG, MT6370_MASK_DB_VNEG, + rt946x_closest_reg(MT6370_DB_VNEG_MIN, + MT6370_DB_VNEG_MAX, + MT6370_DB_VNEG_STEP, vneg)); + + /* Enable VNEG/VPOS discharge when VNEG/VPOS rails disabled. */ + rv |= rt946x_update_bits( + MT6370_REG_DBCTRL2, + MT6370_MASK_DB_VNEG_DISC | MT6370_MASK_DB_VPOS_DISC, + MT6370_MASK_DB_VNEG_DISC | MT6370_MASK_DB_VPOS_DISC); + + return rv; +} + /* MT6370 RGB LED */ int mt6370_led_set_dim_mode(enum mt6370_led_index index, |