diff options
author | Matt_Wang <Matt_Wang@compal.corp-partner.google.com> | 2020-01-30 09:25:41 +0800 |
---|---|---|
committer | Commit Bot <commit-bot@chromium.org> | 2020-02-03 17:42:04 +0000 |
commit | 6967f634ab7c558522236a3608766fe9a5a067fd (patch) | |
tree | 1060984288aecadbf5cadbc132c6156b38612f8e /board/fleex | |
parent | b0457df349047d1a1db54d89beb2525a91ec2e94 (diff) | |
download | chrome-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>
Diffstat (limited to 'board/fleex')
-rw-r--r-- | board/fleex/board.c | 21 |
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, ®) == 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); |