diff options
author | Zick Wei <zick.wei@quanta.corp-partner.google.com> | 2021-12-27 16:22:47 +0800 |
---|---|---|
committer | Commit Bot <commit-bot@chromium.org> | 2022-01-06 22:00:56 +0000 |
commit | 2b09461302a4b987d02bb63273bfc8090c622ba3 (patch) | |
tree | 89ff7eecb171fbf127c71d9c19a1c8618b2dc3dc | |
parent | d6a237266fdc81a2c594785568dedb2ede86c08e (diff) | |
download | chrome-ec-2b09461302a4b987d02bb63273bfc8090c622ba3.tar.gz |
draco: change charger to isl9241
BUG=b:210970640
BRANCH=none
TEST=make BOARD=draco
Signed-off-by: Zick Wei <zick.wei@quanta.corp-partner.google.com>
Change-Id: Id143746ffc47d95e6fd9715b76c26fa392a06ff0
Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/platform/ec/+/3354205
Reviewed-by: Boris Mittelberg <bmbm@google.com>
Commit-Queue: Boris Mittelberg <bmbm@google.com>
-rw-r--r-- | board/draco/board.h | 9 | ||||
-rw-r--r-- | board/draco/build.mk | 2 | ||||
l--------- | board/draco/charger.c | 1 | ||||
-rw-r--r-- | board/draco/charger_isl9241.c | 90 |
4 files changed, 94 insertions, 8 deletions
diff --git a/board/draco/board.h b/board/draco/board.h index ee8e8883fb..6b87bc0b7a 100644 --- a/board/draco/board.h +++ b/board/draco/board.h @@ -193,13 +193,10 @@ #define CONFIG_FANS FAN_CH_COUNT /* Charger defines */ -#define CONFIG_CHARGER_BQ25720 -#define CONFIG_CHARGER_BQ25720_VSYS_TH2_CUSTOM -#define CONFIG_CHARGER_BQ25720_VSYS_TH2_DV 70 +#define CONFIG_CHARGER_ISL9241 #define CONFIG_CHARGE_RAMP_SW -#define CONFIG_CHARGER_BQ25710_SENSE_RESISTOR 10 -#define CONFIG_CHARGER_BQ25710_SENSE_RESISTOR_AC 10 -#define CONFIG_CHARGER_BQ25710_PSYS_SENSING +#define CONFIG_CHARGER_SENSE_RESISTOR 10 +#define CONFIG_CHARGER_SENSE_RESISTOR_AC 10 /* * Older boards have a different ADC assignment. diff --git a/board/draco/build.mk b/board/draco/build.mk index c4260fac02..61485378cd 100644 --- a/board/draco/build.mk +++ b/board/draco/build.mk @@ -14,7 +14,7 @@ BASEBOARD:=brya board-y= board-y+=battery.o board-y+=board.o -board-y+=charger.o +board-y+=charger_isl9241.o board-y+=fans.o board-y+=fw_config.o board-y+=i2c.o diff --git a/board/draco/charger.c b/board/draco/charger.c deleted file mode 120000 index 476ce97df2..0000000000 --- a/board/draco/charger.c +++ /dev/null @@ -1 +0,0 @@ -../../baseboard/brya/charger_bq25720.c
\ No newline at end of file diff --git a/board/draco/charger_isl9241.c b/board/draco/charger_isl9241.c new file mode 100644 index 0000000000..85e0de90fe --- /dev/null +++ b/board/draco/charger_isl9241.c @@ -0,0 +1,90 @@ +/* Copyright 2022 The Chromium OS Authors. All rights reserved. + * Use of this source code is governed by a BSD-style license that can be + * found in the LICENSE file. + */ + +#include "common.h" + +#include "charge_manager.h" +#include "charge_state_v2.h" +#include "charger.h" +#include "compile_time_macros.h" +#include "console.h" +#include "driver/charger/isl9241.h" +#include "usbc_ppc.h" +#include "usb_pd.h" +#include "util.h" + + +#define CPRINTSUSB(format, args...) cprints(CC_USBCHARGE, format, ## args) +#define CPRINTFUSB(format, args...) cprintf(CC_USBCHARGE, format, ## args) + +/* Charger Chip Configuration */ +const struct charger_config_t chg_chips[] = { + { + .i2c_port = I2C_PORT_CHARGER, + .i2c_addr_flags = ISL9241_ADDR_FLAGS, + .drv = &isl9241_drv, + }, +}; +BUILD_ASSERT(ARRAY_SIZE(chg_chips) == CHARGER_NUM); + +int board_set_active_charge_port(int port) +{ + int is_valid_port = board_is_usb_pd_port_present(port); + int i; + + if (port == CHARGE_PORT_NONE) { + CPRINTSUSB("Disabling all charger ports"); + + /* Disable all ports. */ + for (i = 0; i < ppc_cnt; i++) { + /* + * Do not return early if one fails otherwise we can + * get into a boot loop assertion failure. + */ + if (ppc_vbus_sink_enable(i, 0)) + CPRINTSUSB("Disabling C%d as sink failed.", i); + } + + return EC_SUCCESS; + } else if (!is_valid_port) { + return EC_ERROR_INVAL; + } + + /* Check if the port is sourcing VBUS. */ + if (ppc_is_sourcing_vbus(port)) { + CPRINTFUSB("Skip enable C%d", port); + return EC_ERROR_INVAL; + } + + CPRINTSUSB("New charge port: C%d", port); + + /* + * Turn off the other ports' sink path FETs, before enabling the + * requested charge port. + */ + for (i = 0; i < ppc_cnt; i++) { + if (i == port) + continue; + + if (ppc_vbus_sink_enable(i, 0)) + CPRINTSUSB("C%d: sink path disable failed.", i); + } + + /* Enable requested charge port. */ + if (ppc_vbus_sink_enable(port, 1)) { + CPRINTSUSB("C%d: sink path enable failed.", port); + return EC_ERROR_UNKNOWN; + } + + return EC_SUCCESS; +} + +__overridable void board_set_charge_limit(int port, int supplier, int charge_ma, + int max_ma, int charge_mv) +{ + charge_set_input_current_limit(MAX(charge_ma, + CONFIG_CHARGER_INPUT_CURRENT), + charge_mv); +} |