summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTing Shen <phoenixshen@google.com>2021-12-07 19:14:52 +0800
committerCommit Bot <commit-bot@chromium.org>2021-12-14 05:07:21 +0000
commitb4ae7c0034ca2799cfc8acfb1e7caca338157938 (patch)
treed809506e8f64c2555fffe2bc1b15ea443760e8f4
parent88b320028e803e60c97435b0f9b2de6d42a126af (diff)
downloadchrome-ec-b4ae7c0034ca2799cfc8acfb1e7caca338157938.tar.gz
kakadu/katsu: fix bugged bits in charger
The charger on some shipped device can not charge because a hidden bit (BYPASS_MODE) is flipped. Implement a quick fix to reset the reserved bits on these bugged devices. BUG=b:207456334 TEST=make BRANCH=kukui Signed-off-by: Ting Shen <phoenixshen@google.com> Change-Id: I73d7865648162f420181f4bf067502bc0226cbda Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/platform/ec/+/3319466 Tested-by: wen zhang <zhangwen6@huaqin.corp-partner.google.com> Reviewed-by: wen zhang <zhangwen6@huaqin.corp-partner.google.com> Reviewed-by: Eric Yilun Lin <yllin@google.com> Commit-Queue: Ting Shen <phoenixshen@chromium.org> Tested-by: Ting Shen <phoenixshen@chromium.org> (cherry picked from commit ad95230a2eaa04377768b7e15bb6bfb4d4a6139b) Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/platform/ec/+/3336639 Auto-Submit: Ting Shen <phoenixshen@chromium.org> Commit-Queue: Eric Yilun Lin <yllin@google.com>
-rw-r--r--board/kakadu/board.c14
-rw-r--r--board/katsu/board.c14
-rw-r--r--driver/charger/rt946x.h11
3 files changed, 34 insertions, 5 deletions
diff --git a/board/kakadu/board.c b/board/kakadu/board.c
index 75eb9ac112..0031b986a5 100644
--- a/board/kakadu/board.c
+++ b/board/kakadu/board.c
@@ -500,3 +500,17 @@ void board_fill_source_power_info(int port,
r->max_power = r->meas.voltage_now * r->meas.current_max;
}
+/* b/207456334: bugged reserved bits causes device not charging */
+static void mt6370_reg_fix(void)
+{
+ i2c_update8(I2C_PORT_CHARGER,
+ RT946X_ADDR_FLAGS,
+ RT946X_REG_CHGCTRL1,
+ BIT(3) | BIT(5), MASK_CLR);
+ i2c_update8(I2C_PORT_CHARGER,
+ RT946X_ADDR_FLAGS,
+ RT946X_REG_CHGCTRL2,
+ BIT(5) | BIT(RT946X_SHIFT_BATDET_DIS_DLY),
+ MASK_CLR);
+}
+DECLARE_HOOK(HOOK_INIT, mt6370_reg_fix, HOOK_PRIO_DEFAULT);
diff --git a/board/katsu/board.c b/board/katsu/board.c
index 4a39e17148..4dc5a09f07 100644
--- a/board/katsu/board.c
+++ b/board/katsu/board.c
@@ -402,3 +402,17 @@ void board_fill_source_power_info(int port,
r->max_power = r->meas.voltage_now * r->meas.current_max;
}
+/* b/207456334: bugged reserved bits causes device not charging */
+static void mt6370_reg_fix(void)
+{
+ i2c_update8(I2C_PORT_CHARGER,
+ RT946X_ADDR_FLAGS,
+ RT946X_REG_CHGCTRL1,
+ BIT(3) | BIT(5), MASK_CLR);
+ i2c_update8(I2C_PORT_CHARGER,
+ RT946X_ADDR_FLAGS,
+ RT946X_REG_CHGCTRL2,
+ BIT(5) | BIT(RT946X_SHIFT_BATDET_DIS_DLY),
+ MASK_CLR);
+}
+DECLARE_HOOK(HOOK_INIT, mt6370_reg_fix, HOOK_PRIO_DEFAULT);
diff --git a/driver/charger/rt946x.h b/driver/charger/rt946x.h
index 99723c905f..74b81887da 100644
--- a/driver/charger/rt946x.h
+++ b/driver/charger/rt946x.h
@@ -294,11 +294,12 @@
#define RT946X_MASK_STAT_EN BIT(RT946X_SHIFT_STAT_EN)
/* ========== CHGCTRL2 0x02 ============ */
-#define RT946X_SHIFT_SHIP_MODE 7
-#define RT946X_SHIFT_TE 4
-#define RT946X_SHIFT_ILMTSEL 2
-#define RT946X_SHIFT_CFO_EN 1
-#define RT946X_SHIFT_CHG_EN 0
+#define RT946X_SHIFT_SHIP_MODE 7
+#define RT946X_SHIFT_BATDET_DIS_DLY 6
+#define RT946X_SHIFT_TE 4
+#define RT946X_SHIFT_ILMTSEL 2
+#define RT946X_SHIFT_CFO_EN 1
+#define RT946X_SHIFT_CHG_EN 0
#define RT946X_MASK_SHIP_MODE BIT(RT946X_SHIFT_SHIP_MODE)
#define RT946X_MASK_TE BIT(RT946X_SHIFT_TE)