mirror of
https://github.com/Telecominfraproject/OpenCellular.git
synced 2025-12-30 02:20:48 +00:00
bd9995x: more delay time between chg_en and vsys_set
The nvdc voltage has a kind of deep, so that rarely observed NVDC down at this point because of back-boosting. Our sequence to enable charger bit and setting vsysreg is correct but rohm introduce charger may need some more time to be stable when between chg_en and vsys_set to start charge BUG=chrome-os-partner:60380 BRANCH=gru TEST=Manual on kevin, trigger battery disconnect, re-attach AC, verify system boots cleanly. and see voltage probing on c54@60380 Change-Id: Ic05091379322ffaac16fe827a47345c76c85f3e5 Signed-off-by: Wonjoon Lee <woojoo.lee@samsung.com> Reviewed-on: https://chromium-review.googlesource.com/434252 Commit-Ready: Shawn N <shawnn@chromium.org> Tested-by: Shawn N <shawnn@chromium.org> Reviewed-by: Shawn N <shawnn@chromium.org>
This commit is contained in:
@@ -541,19 +541,31 @@ int charger_get_status(int *status)
|
||||
|
||||
int charger_set_mode(int mode)
|
||||
{
|
||||
int rv;
|
||||
int rv, inhibit_chg;
|
||||
static int inhibit_chg_prev = -1;
|
||||
|
||||
if (mode & CHARGE_FLAG_INHIBIT_CHARGE) {
|
||||
rv = bd9995x_set_vsysreg(BD9995X_DISCHARGE_VSYSREG);
|
||||
msleep(50);
|
||||
rv |= bd9995x_charger_enable(0);
|
||||
} else {
|
||||
rv = bd9995x_charger_enable(1);
|
||||
msleep(1);
|
||||
rv |= bd9995x_set_vsysreg(BD9995X_CHARGE_VSYSREG);
|
||||
inhibit_chg = mode & CHARGE_FLAG_INHIBIT_CHARGE;
|
||||
|
||||
if (inhibit_chg != inhibit_chg_prev) {
|
||||
if (inhibit_chg) {
|
||||
rv = bd9995x_set_vsysreg(BD9995X_DISCHARGE_VSYSREG);
|
||||
msleep(50);
|
||||
rv |= bd9995x_charger_enable(0);
|
||||
} else {
|
||||
rv = bd9995x_charger_enable(1);
|
||||
/*
|
||||
* BGATE capacitor max : 0.1uF + 20%
|
||||
* Charge MOSFET threshold max : 2.8V
|
||||
* BGATE charge pump current min : 3uA
|
||||
* T = C * V / I so, Tmax = 112ms
|
||||
*/
|
||||
msleep(115);
|
||||
rv |= bd9995x_set_vsysreg(BD9995X_CHARGE_VSYSREG);
|
||||
}
|
||||
inhibit_chg_prev = inhibit_chg;
|
||||
if (rv)
|
||||
return rv;
|
||||
}
|
||||
if (rv)
|
||||
return rv;
|
||||
|
||||
if (mode & CHARGE_FLAG_POR_RESET) {
|
||||
rv = bd9995x_por_reset();
|
||||
|
||||
Reference in New Issue
Block a user