diff options
author | Yilun Lin <yllin@chromium.org> | 2019-08-22 15:30:22 +0800 |
---|---|---|
committer | Commit Bot <commit-bot@chromium.org> | 2019-10-02 22:02:26 +0000 |
commit | ad64a080363380e7b34d4c395867a55b83e61c1c (patch) | |
tree | c4b8574e81dac67de068e3acc7a449d3bbe72d0f | |
parent | e2aa17f3235644a07b7f91b328dcf46235dbe686 (diff) | |
download | chrome-ec-ad64a080363380e7b34d4c395867a55b83e61c1c.tar.gz |
kukui: Raise DCP current limit to 2150mA.
On mt6370, setting ACIR is equivalent to setting Input current max,
and the accuracy is 7%. So if AICR=2150mA, then Max=2150mA,
and Typ=Max*0.93=2000mA, and Min=Typ*0.93=1860mA.
This CL also raise S0 current limit to 2150mA.
TEST=Plug Krane charger, and see it could ramp to 1920mA in S0.
BUG=b:137700946
BRANCH=None
Change-Id: Iea6186c39c916ddf601917ea6e6b6463069c9292
Signed-off-by: Yilun Lin <yllin@chromium.org>
Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/platform/ec/+/1708170
Reviewed-by: Nicolas Boichat <drinkcat@chromium.org>
-rw-r--r-- | baseboard/kukui/charger_mt6370.c | 4 | ||||
-rw-r--r-- | driver/charger/rt946x.c | 2 | ||||
-rw-r--r-- | driver/charger/rt946x.h | 7 |
3 files changed, 11 insertions, 2 deletions
diff --git a/baseboard/kukui/charger_mt6370.c b/baseboard/kukui/charger_mt6370.c index c2f39ecfdf..0369ba9b8c 100644 --- a/baseboard/kukui/charger_mt6370.c +++ b/baseboard/kukui/charger_mt6370.c @@ -87,7 +87,9 @@ void board_set_charge_limit(int port, int supplier, int charge_ma, { /* b/134227872: Limit input current to 2A in S0 to prevent overheat */ if (power_get_state() == POWER_S0) - charge_set_input_current_limit(MIN(charge_ma, 2000), charge_mv); + charge_set_input_current_limit( + MIN(charge_ma, RT946X_AICR_TYP2MAX(2000)), + charge_mv); else charge_set_input_current_limit( MAX(charge_ma, CONFIG_CHARGER_INPUT_CURRENT), diff --git a/driver/charger/rt946x.c b/driver/charger/rt946x.c index 244fb2f12d..95804c9935 100644 --- a/driver/charger/rt946x.c +++ b/driver/charger/rt946x.c @@ -922,7 +922,7 @@ static int rt946x_get_bc12_ilim(int charge_supplier) if (IS_ENABLED(CONFIG_CHARGE_RAMP_SW) || IS_ENABLED(CONFIG_CHARGE_RAMP_HW)) /* A conservative value to prevent a bad charger. */ - return 2000; + return RT946X_AICR_TYP2MAX(2000); /* fallback */ case CHARGE_SUPPLIER_BC12_CDP: return 1500; diff --git a/driver/charger/rt946x.h b/driver/charger/rt946x.h index b30721367a..8918b8789f 100644 --- a/driver/charger/rt946x.h +++ b/driver/charger/rt946x.h @@ -296,6 +296,13 @@ #define RT946X_MASK_AICR (0x3F << RT946X_SHIFT_AICR) #define RT946X_MASK_ILIMEN BIT(RT946X_SHIFT_ILIMEN) +/* + * The accuracy of AICR is 7%. So if AICR = 2150, + * then Max=2150, Typ=2000, Min=1860. And plus 25 since the AICR + * is 50ma a step. + */ +#define RT946X_AICR_TYP2MAX(x) ((x) * 107 / 100 + 25) + /* ========== RSTPASCODE2 0x04 (mt6370) ============ */ #define MT6370_MASK_RSTPASCODE2 0x96 |