ppc: enter SNK mode before leaving dead battery mode

If we don't enable the SNK mode before leaving dead battery mode
(which does keep the inflow path open), then we will brown out
our only source of power.

BRANCH=none
BUG=b:77561535
TEST=yorp can boot into ec without battery

Change-Id: I095e3cb1ed466fd6497bbc9e7b6851fc92005c75
Signed-off-by: Jett Rink <jettrink@chromium.org>
Reviewed-on: https://chromium-review.googlesource.com/999024
Reviewed-by: Scott Collyer <scollyer@chromium.org>
This commit is contained in:
Jett Rink
2018-04-05 15:07:05 -07:00
committed by chrome-bot
parent 8f27e60d82
commit 7e50bfd037

View File

@@ -202,14 +202,23 @@ static int nx20p3483_init(int port)
read_reg(port, NX20P3483_INTERRUPT1_REG, &reg);
read_reg(port, NX20P3483_INTERRUPT2_REG, &reg);
/* Make sure that dead battery mode is exited */
/* Check for dead battery mode */
rv = read_reg(port, NX20P3483_DEVICE_CONTROL_REG, &reg);
if (rv)
return rv;
reg |= NX20P3483_CTRL_DB_EXIT;
rv = write_reg(port, NX20P3483_DEVICE_CONTROL_REG, reg);
if (rv)
return rv;
/* If in dead battery mode switch to SNK mode before exiting */
if (!(reg & ~NX20P3483_CTRL_DB_EXIT)) {
rv = nx20p3483_vbus_sink_enable(port, 1);
if (rv)
return rv;
/* Exit dead battery mode. */
reg |= NX20P3483_CTRL_DB_EXIT;
rv = write_reg(port, NX20P3483_DEVICE_CONTROL_REG, reg);
if (rv)
return rv;
}
return EC_SUCCESS;
}