summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMatt_Wang <Matt_Wang@compal.corp-partner.google.com>2020-01-30 09:25:41 +0800
committerCommit Bot <commit-bot@chromium.org>2020-02-03 17:42:04 +0000
commit6967f634ab7c558522236a3608766fe9a5a067fd (patch)
tree1060984288aecadbf5cadbc132c6156b38612f8e
parentb0457df349047d1a1db54d89beb2525a91ec2e94 (diff)
downloadchrome-ec-6967f634ab7c558522236a3608766fe9a5a067fd.tar.gz
Fleex: Reduce switching period in Buck-Boost mode of ISL9238
This patch reduces buck-boost mode switching frequency of ISL9238 to half. It can be improve power efficiency. BUG=b:147856200 BRANCH=octopus TEST=ectool i2cread 0x12 0x4C bit<1> from 0 to 1 Change-Id: Iba9c76b36ee672c1830e34ab37c87c1b0ba9db21 Signed-off-by: Matt_Wang <Matt_Wang@compal.corp-partner.google.com> Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/platform/ec/+/2028869 Reviewed-by: Matt Wang <matt_wang@compal.corp-partner.google.com> Reviewed-by: Marco Chen <marcochen@chromium.org> Tested-by: Matt Wang <matt_wang@compal.corp-partner.google.com> Commit-Queue: Marco Chen <marcochen@chromium.org>
-rw-r--r--board/fleex/board.c21
1 files changed, 20 insertions, 1 deletions
diff --git a/board/fleex/board.c b/board/fleex/board.c
index a8ad2c08c8..e5270908af 100644
--- a/board/fleex/board.c
+++ b/board/fleex/board.c
@@ -16,7 +16,7 @@
#include "cros_board_info.h"
#include "driver/accel_lis2dh.h"
#include "driver/accelgyro_lsm6dsm.h"
-#include "driver/charger/bd9995x.h"
+#include "driver/charger/isl923x.h"
#include "driver/ppc/nx20p348x.h"
#include "driver/tcpm/anx7447.h"
#include "driver/tcpm/ps8xxx.h"
@@ -264,3 +264,22 @@ void board_overcurrent_event(int port, int is_overcurrented)
/* Note that the level is inverted because the pin is active low. */
gpio_set_level(GPIO_USB_C_OC, !is_overcurrented);
}
+
+static void charger_set_buck_boost_mode(void)
+{
+ int reg;
+ /* Reduce Buck-boost mode switching frequency to improve power efficiency. */
+ if (i2c_read16(I2C_PORT_CHARGER, I2C_ADDR_CHARGER_FLAGS,
+ ISL9238_REG_CONTROL3, &reg) == EC_SUCCESS) {
+ reg |= ISL9238_C3_BB_SWITCHING_PERIOD;
+ if (i2c_write16(I2C_PORT_CHARGER, I2C_ADDR_CHARGER_FLAGS,
+ ISL9238_REG_CONTROL3, reg))
+ ccprints("Failed to set isl9238");
+ }
+}
+
+static void board_init(void)
+{
+ charger_set_buck_boost_mode();
+}
+DECLARE_HOOK(HOOK_INIT, board_init, HOOK_PRIO_DEFAULT);