summaryrefslogtreecommitdiff
path: root/driver/ln9310.c
diff options
context:
space:
mode:
authorSean Hou <seanhou@lionsemi.com>2020-09-03 15:59:41 -0700
committerCommit Bot <commit-bot@chromium.org>2020-09-08 22:01:46 +0000
commit2d5ec5ab135bc8a6a93f31cc74cbcf5b241082e8 (patch)
tree07a67f77c1d7464319caa4dfc62423a5405ac496 /driver/ln9310.c
parent9fbe526a760ccfb030038868e5538a0b6b8d6042 (diff)
downloadchrome-ec-2d5ec5ab135bc8a6a93f31cc74cbcf5b241082e8.tar.gz
ln9310: OPERATION_MODE update method.
Use SELF_SYNC instead of MANUAL_UPDATE method to cross OPERATION_MODE register, which is a multi-bit i2c register, from i2c clock domain to local ref_clk domain BRANCH=None BUG=None TEST=Built successfully. Change-Id: Ibc4d1b6ae12a323a3b7c345247ab92e4acc762dc Signed-off-by: Sean Hou <seanhou@lionsemi.com> Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/platform/ec/+/2393090 Reviewed-by: Wai-Hong Tam <waihong@google.com> Tested-by: Wai-Hong Tam <waihong@google.com> Commit-Queue: Wai-Hong Tam <waihong@google.com>
Diffstat (limited to 'driver/ln9310.c')
-rw-r--r--driver/ln9310.c17
1 files changed, 17 insertions, 0 deletions
diff --git a/driver/ln9310.c b/driver/ln9310.c
index 0bbf130683..01bc069372 100644
--- a/driver/ln9310.c
+++ b/driver/ln9310.c
@@ -11,6 +11,7 @@
#include "hooks.h"
#include "i2c.h"
#include "util.h"
+#include "timer.h"
#define CPUTS(outstr) cputs(CC_CHIPSET, outstr)
#define CPRINTF(format, args...) cprintf(CC_CHIPSET, format, ## args)
@@ -174,6 +175,22 @@ void ln9310_init(void)
int status, val;
enum battery_cell_type batt;
+ /*
+ * Set OPERATION_MODE update method
+ * - OP_MODE_MANUAL_UPDATE = 0
+ * - OP_MODE_SELF_SYNC_EN = 1
+ */
+ field_update8(LN9310_REG_PWR_CTRL,
+ LN9310_PWR_OP_MODE_MANUAL_UPDATE_MASK,
+ LN9310_PWR_OP_MODE_MANUAL_UPDATE_OFF);
+
+ field_update8(LN9310_REG_TIMER_CTRL,
+ LN9310_TIMER_OP_SELF_SYNC_EN_MASK,
+ LN9310_TIMER_OP_SELF_SYNC_EN_ON);
+
+ usleep(LN9310_CDC_DELAY);
+ CPRINTS("LN9310 OP_MODE Update method: Self-sync");
+
batt = board_get_battery_cell_type();
if (batt == BATTERY_CELL_TYPE_3S) {
status = ln9310_init_3to1();