diff options
author | Matt_Wang <Matt_Wang@compal.corp-partner.google.com> | 2021-08-18 14:42:03 +0800 |
---|---|---|
committer | Commit Bot <commit-bot@chromium.org> | 2021-08-18 19:28:05 +0000 |
commit | f0b90da8d60494c8d82c2dd68bda2dcf0eb95ea5 (patch) | |
tree | 04e305013f18a0d0e76920a1a134ac21a4e4958f /board/driblee | |
parent | cdfda74c6c0958255ac433854b2204ecd19acb5e (diff) | |
download | chrome-ec-f0b90da8d60494c8d82c2dd68bda2dcf0eb95ea5.tar.gz |
driblee/raa489000: Control ASGATE state
There is 0.1V leakage from Charger to Vbus
when a charger is removed in S5.
Control ASGATE state to prevent the leakage.
This commit uses the charger side registers to
control the ASGATE when selecting our active charge port.
This is done in addition to the existing implementation
which uses the TCPCI registers to control ASGATE.
BUG=b:196923271
BRANCH=keeby
TEST=make BOARD=driblee
Signed-off-by: Matt_Wang <Matt_Wang@compal.corp-partner.google.com>
Change-Id: I9c43941fd1795e28456a959d0e46f8268e8ac071
Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/platform/ec/+/3102341
Tested-by: Matt Wang <matt_wang@compal.corp-partner.google.com>
Tested-by: Elmo Lan <elmo_lan@compal.corp-partner.google.com>
Reviewed-by: Elmo Lan <elmo_lan@compal.corp-partner.google.com>
Reviewed-by: Elthan Huang <elthan_huang@compal.corp-partner.google.com>
Reviewed-by: Aseda Aboagye <aaboagye@chromium.org>
Commit-Queue: Aseda Aboagye <aaboagye@chromium.org>
Diffstat (limited to 'board/driblee')
-rw-r--r-- | board/driblee/board.c | 8 | ||||
-rw-r--r-- | board/driblee/usb_pd_policy.c | 5 |
2 files changed, 11 insertions, 2 deletions
diff --git a/board/driblee/board.c b/board/driblee/board.c index 777259d2e3..7817ab7f51 100644 --- a/board/driblee/board.c +++ b/board/driblee/board.c @@ -297,9 +297,11 @@ int board_set_active_charge_port(int port) /* Disable all ports. */ if (port == CHARGE_PORT_NONE) { - for (i = 0; i < board_get_usb_pd_port_count(); i++) + for (i = 0; i < board_get_usb_pd_port_count(); i++) { tcpc_write(i, TCPC_REG_COMMAND, TCPC_REG_COMMAND_SNK_CTRL_LOW); + raa489000_enable_asgate(i, false); + } return EC_SUCCESS; } @@ -321,6 +323,7 @@ int board_set_active_charge_port(int port) if (tcpc_write(i, TCPC_REG_COMMAND, TCPC_REG_COMMAND_SNK_CTRL_LOW)) CPRINTS("p%d: sink path disable failed.", i); + raa489000_enable_asgate(i, false); } /* @@ -331,7 +334,8 @@ int board_set_active_charge_port(int port) charger_discharge_on_ac(1); /* Enable requested charge port. */ - if (tcpc_write(port, TCPC_REG_COMMAND, + if (raa489000_enable_asgate(port, true) || + tcpc_write(port, TCPC_REG_COMMAND, TCPC_REG_COMMAND_SNK_CTRL_HIGH)) { CPRINTS("p%d: sink path enable failed.", port); charger_discharge_on_ac(0); diff --git a/board/driblee/usb_pd_policy.c b/board/driblee/usb_pd_policy.c index fd9018a3f0..19dd01d37b 100644 --- a/board/driblee/usb_pd_policy.c +++ b/board/driblee/usb_pd_policy.c @@ -8,6 +8,7 @@ #include "common.h" #include "console.h" #include "driver/tcpm/tcpci.h" +#include "driver/charger/isl923x_public.h" #include "usb_pd.h" #define CPRINTF(format, args...) cprintf(CC_USBPD, format, ## args) @@ -49,6 +50,10 @@ int pd_set_power_supply_ready(int port) if (rv) return rv; + rv = raa489000_enable_asgate(port, true); + if (rv) + return rv; + /* Notify host of power info change. */ pd_send_host_event(PD_EVENT_POWER_CHANGE); |