diff options
author | Daisuke Nojiri <dnojiri@chromium.org> | 2019-04-04 11:51:41 -0700 |
---|---|---|
committer | chrome-bot <chrome-bot@chromium.org> | 2019-04-23 10:16:29 -0700 |
commit | 0f15b8e5a3583cac214ea93b97918e25d5ff88bc (patch) | |
tree | 8da1559ce7bf5f421d4b0200026e25ff4634cb99 | |
parent | e166fa21167e0acb79a172fd44a9f4ac410a5b27 (diff) | |
download | chrome-ec-0f15b8e5a3583cac214ea93b97918e25d5ff88bc.tar.gz |
rt946x: Allow board customize initialization parameters
Currently, initialization parameters are fixed. This patch allows a
board to customize how the chip is initialized.
Signed-off-by: Daisuke Nojiri <dnojiri@chromium.org>
BUG=b/80482240
BRANCH=none
TEST=buildall
Change-Id: I0be0547d73de4d3f37e80e763efaf7840fd678c2
Reviewed-on: https://chromium-review.googlesource.com/1553564
Commit-Ready: ChromeOS CL Exonerator Bot <chromiumos-cl-exonerator@appspot.gserviceaccount.com>
Tested-by: Daisuke Nojiri <dnojiri@chromium.org>
Reviewed-by: Nick Sanders <nsanders@chromium.org>
-rw-r--r-- | driver/charger/rt946x.c | 32 | ||||
-rw-r--r-- | driver/charger/rt946x.h | 9 |
2 files changed, 24 insertions, 17 deletions
diff --git a/driver/charger/rt946x.c b/driver/charger/rt946x.c index 57dc8707a8..984c1d1d4f 100644 --- a/driver/charger/rt946x.c +++ b/driver/charger/rt946x.c @@ -42,16 +42,7 @@ static const struct charger_info rt946x_charger_info = { .input_current_step = INPUT_I_STEP, }; -struct charger_init_setting { - uint16_t eoc_current; - uint16_t mivr; - uint16_t ircmp_vclamp; - uint16_t ircmp_res; - uint16_t boost_voltage; - uint16_t boost_current; -}; - -static const struct charger_init_setting rt946x_charger_init_setting = { +static const struct rt946x_init_setting default_init_setting = { .eoc_current = 400, .mivr = 4000, .ircmp_vclamp = 32, @@ -60,6 +51,12 @@ static const struct charger_init_setting rt946x_charger_init_setting = { .boost_current = 1500, }; +__attribute__((weak)) +const struct rt946x_init_setting *board_rt946x_init_setting(void) +{ + return &default_init_setting; +} + enum rt946x_ilmtsel { RT946X_ILMTSEL_PSEL_OTG, RT946X_ILMTSEL_AICR = 2, @@ -406,6 +403,7 @@ static int rt946x_init_setting(void) { int rv = 0; const struct battery_info *batt_info = battery_get_info(); + const struct rt946x_init_setting *setting = board_rt946x_init_setting(); #ifdef CONFIG_CHARGER_OTG /* Disable boost-mode output voltage */ @@ -433,24 +431,24 @@ static int rt946x_init_setting(void) rv = rt946x_clr_bit(RT946X_REG_CHGCTRL12, RT946X_MASK_TMR_EN); if (rv) return rv; - rv = rt946x_set_mivr(rt946x_charger_init_setting.mivr); + rv = rt946x_set_mivr(setting->mivr); if (rv) return rv; - rv = rt946x_set_ieoc(rt946x_charger_init_setting.eoc_current); + rv = rt946x_set_ieoc(setting->eoc_current); if (rv) return rv; rv = rt946x_set_boost_voltage( - rt946x_charger_init_setting.boost_voltage); + setting->boost_voltage); if (rv) return rv; rv = rt946x_set_boost_current( - rt946x_charger_init_setting.boost_current); + setting->boost_current); if (rv) return rv; - rv = rt946x_set_ircmp_vclamp(rt946x_charger_init_setting.ircmp_vclamp); + rv = rt946x_set_ircmp_vclamp(setting->ircmp_vclamp); if (rv) return rv; - rv = rt946x_set_ircmp_res(rt946x_charger_init_setting.ircmp_res); + rv = rt946x_set_ircmp_res(setting->ircmp_res); if (rv) return rv; rv = rt946x_set_vprec(batt_info->voltage_min); @@ -1102,4 +1100,4 @@ int mt6370_led_set_pwm_frequency(enum mt6370_led_index index, freq << MT6370_SHIFT_RGBISNK_DIMFSEL); return EC_SUCCESS; } -#endif +#endif /* CONFIG_CHARGER_MT6370 */ diff --git a/driver/charger/rt946x.h b/driver/charger/rt946x.h index 0f7bcb2426..f4f37975ad 100644 --- a/driver/charger/rt946x.h +++ b/driver/charger/rt946x.h @@ -550,6 +550,15 @@ int rt946x_cutoff_battery(void); /* Enable/Disable charge temination */ int rt946x_enable_charge_termination(int en); +struct rt946x_init_setting { + uint16_t eoc_current; + uint16_t mivr; + uint16_t ircmp_vclamp; + uint16_t ircmp_res; + uint16_t boost_voltage; + uint16_t boost_current; +}; + #ifdef CONFIG_CHARGER_MT6370 /* |