summaryrefslogtreecommitdiff
path: root/board/driblee
diff options
context:
space:
mode:
authorMatt_Wang <Matt_Wang@compal.corp-partner.google.com>2021-08-18 14:42:03 +0800
committerCommit Bot <commit-bot@chromium.org>2021-08-18 19:28:05 +0000
commitf0b90da8d60494c8d82c2dd68bda2dcf0eb95ea5 (patch)
tree04e305013f18a0d0e76920a1a134ac21a4e4958f /board/driblee
parentcdfda74c6c0958255ac433854b2204ecd19acb5e (diff)
downloadchrome-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.c8
-rw-r--r--board/driblee/usb_pd_policy.c5
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);