summaryrefslogtreecommitdiff
path: root/board/magolor/board.c
diff options
context:
space:
mode:
authorAseda Aboagye <aaboagye@google.com>2021-03-29 20:23:32 -0700
committerCommit Bot <commit-bot@chromium.org>2021-03-30 17:49:54 +0000
commitf7fbc629f0655229cc7ffdadfb18c9e13118e3d2 (patch)
treec8e128e53f3a15dd3b0c83871de39b01dcb09223 /board/magolor/board.c
parent6810f49dfeb4f41cf53952192d74c71c7ab15e99 (diff)
downloadchrome-ec-f7fbc629f0655229cc7ffdadfb18c9e13118e3d2.tar.gz
dedede/raa489000: Disable ASGATE from READY state
On the boards which use the RAA489000, we keep the ADC enabled while giving VBUS control to the charger side. This can cause a situation where VBUS is not quite zero volts when a charger is removed. 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. When we place the parts into low power mode, we move the VBUS control from the TCPC side of the IC to the charger side. It should be safe to issue both commands as if the TCPC side has control, the IC ignores the setting from the charger side registers. BUG=b:183220414 BRANCH=dedede TEST=Build and flash madoo, plug in charger to port, unplug, verify that VBUS falls to < 200mV and decays from there. Signed-off-by: Aseda Aboagye <aaboagye@google.com> Change-Id: I8e8c8cc32575d18c9d3d1210ed3c5cf69ad5ca4b Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/platform/ec/+/2793058 Tested-by: Aseda Aboagye <aaboagye@chromium.org> Reviewed-by: Diana Z <dzigterman@chromium.org> Commit-Queue: Aseda Aboagye <aaboagye@chromium.org>
Diffstat (limited to 'board/magolor/board.c')
-rw-r--r--board/magolor/board.c8
1 files changed, 6 insertions, 2 deletions
diff --git a/board/magolor/board.c b/board/magolor/board.c
index f1fca86f90..a64b7781be 100644
--- a/board/magolor/board.c
+++ b/board/magolor/board.c
@@ -420,9 +420,11 @@ int board_set_active_charge_port(int port)
/* Disable all ports. */
if (port == CHARGE_PORT_NONE) {
- for (i = 0; i < CONFIG_USB_PD_PORT_MAX_COUNT; i++)
+ for (i = 0; i < CONFIG_USB_PD_PORT_MAX_COUNT; i++) {
tcpc_write(i, TCPC_REG_COMMAND,
TCPC_REG_COMMAND_SNK_CTRL_LOW);
+ raa489000_enable_asgate(i, false);
+ }
return EC_SUCCESS;
}
@@ -444,6 +446,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);
}
/*
@@ -454,7 +457,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);