summaryrefslogtreecommitdiff
path: root/driver/charger/rt946x.c
diff options
context:
space:
mode:
authorYilun Lin <yllin@google.com>2019-05-15 18:37:26 +0800
committerchrome-bot <chrome-bot@chromium.org>2019-06-03 01:11:05 -0700
commitb18ea4eb30e9279c12a1962dc494429863e7363f (patch)
tree3e732281999f6a1102b2dee457fcbc19de9efe8e /driver/charger/rt946x.c
parent49436b18d2a77b994fe76d8c2f070000e2cdb58a (diff)
downloadchrome-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.c31
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,