diff options
author | Yuval Peress <peress@google.com> | 2021-09-29 22:07:41 -0600 |
---|---|---|
committer | Commit Bot <commit-bot@chromium.org> | 2021-10-01 17:45:15 +0000 |
commit | a94daa8412b6e936c96d68bb3e5c607fde9b0972 (patch) | |
tree | 43a59efe06dba8eae72b21e3e87202d956dbf28a | |
parent | d5ad74574f5bf884bd1642914f522136d4218c2c (diff) | |
download | chrome-ec-a94daa8412b6e936c96d68bb3e5c607fde9b0972.tar.gz |
zephyr: charger: Allow multiple (different) chips
There's no real restriction that the same chip needs to be used for
charging. Remove 'choice' and allow multiple charging drivers to be
set for the same board. This change also requires re-naming the
mutex to avoid conflict because of the way Zephyr allocates them.
BRANCH=none
BUG=b:201602829
TEST=zmake testall
Signed-off-by: Yuval Peress <peress@google.com>
Change-Id: I522247bc7dbdae6d6c360a37dfbc1031f4058983
Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/platform/ec/+/3195199
Reviewed-by: Denis Brockus <dbrockus@chromium.org>
Reviewed-by: Aaron Massey <aaronmassey@google.com>
-rw-r--r-- | driver/charger/isl923x.c | 22 | ||||
-rw-r--r-- | driver/charger/isl9241.c | 6 | ||||
-rw-r--r-- | zephyr/Kconfig.battery | 8 |
3 files changed, 14 insertions, 22 deletions
diff --git a/driver/charger/isl923x.c b/driver/charger/isl923x.c index 9e3284c29f..b530629aab 100644 --- a/driver/charger/isl923x.c +++ b/driver/charger/isl923x.c @@ -95,7 +95,7 @@ enum isl923x_mon_dir { MON_CHARGE = 0, MON_DISCHARGE = 1 }; static int learn_mode; /* Mutex for CONTROL1 register, that can be updated from multiple tasks. */ -K_MUTEX_DEFINE(control1_mutex); +K_MUTEX_DEFINE(control1_mutex_isl923x); static enum ec_error_list isl923x_discharge_on_ac(int chgnum, int enable); @@ -189,7 +189,7 @@ static int get_amon_bmon(int chgnum, enum isl923x_amon_bmon amon, return ret; } - mutex_lock(&control1_mutex); + mutex_lock(&control1_mutex_isl923x); ret = raw_read16(chgnum, ISL923X_REG_CONTROL1, ®); if (!ret) { @@ -204,7 +204,7 @@ static int get_amon_bmon(int chgnum, enum isl923x_amon_bmon amon, ret = raw_write16(chgnum, ISL923X_REG_CONTROL1, reg); } - mutex_unlock(&control1_mutex); + mutex_unlock(&control1_mutex_isl923x); if (ret) return ret; @@ -271,7 +271,7 @@ static enum ec_error_list isl923x_enable_otg_power(int chgnum, int enabled) { int rv, control1; - mutex_lock(&control1_mutex); + mutex_lock(&control1_mutex_isl923x); rv = raw_read16(chgnum, ISL923X_REG_CONTROL1, &control1); if (rv) @@ -285,7 +285,7 @@ static enum ec_error_list isl923x_enable_otg_power(int chgnum, int enabled) rv = raw_write16(chgnum, ISL923X_REG_CONTROL1, control1); out: - mutex_unlock(&control1_mutex); + mutex_unlock(&control1_mutex_isl923x); return rv; } @@ -775,7 +775,7 @@ static enum ec_error_list isl923x_discharge_on_ac(int chgnum, int enable) int rv; int control1; - mutex_lock(&control1_mutex); + mutex_lock(&control1_mutex_isl923x); rv = raw_read16(chgnum, ISL923X_REG_CONTROL1, &control1); if (rv) @@ -792,7 +792,7 @@ static enum ec_error_list isl923x_discharge_on_ac(int chgnum, int enable) learn_mode = !rv && enable; out: - mutex_unlock(&control1_mutex); + mutex_unlock(&control1_mutex_isl923x); return rv; } @@ -1022,7 +1022,7 @@ static void charger_enable_psys(void) { int val; - mutex_lock(&control1_mutex); + mutex_lock(&control1_mutex_isl923x); /* * enable system power monitor PSYS function @@ -1038,7 +1038,7 @@ static void charger_enable_psys(void) psys_enabled = 1; out: - mutex_unlock(&control1_mutex); + mutex_unlock(&control1_mutex_isl923x); } DECLARE_HOOK(HOOK_CHIPSET_RESUME, charger_enable_psys, HOOK_PRIO_DEFAULT); @@ -1046,7 +1046,7 @@ static void charger_disable_psys(void) { int val; - mutex_lock(&control1_mutex); + mutex_lock(&control1_mutex_isl923x); /* * disable system power monitor PSYS function @@ -1062,7 +1062,7 @@ static void charger_disable_psys(void) psys_enabled = 0; out: - mutex_unlock(&control1_mutex); + mutex_unlock(&control1_mutex_isl923x); } DECLARE_HOOK(HOOK_CHIPSET_SUSPEND, charger_disable_psys, HOOK_PRIO_DEFAULT); diff --git a/driver/charger/isl9241.c b/driver/charger/isl9241.c index 794ea0b342..d53c8998ba 100644 --- a/driver/charger/isl9241.c +++ b/driver/charger/isl9241.c @@ -46,7 +46,7 @@ static int learn_mode; /* Mutex for CONTROL1 register, that can be updated from multiple tasks. */ -K_MUTEX_DEFINE(control1_mutex); +K_MUTEX_DEFINE(control1_mutex_isl9241); /* Charger parameters */ static const struct charger_info isl9241_charger_info = { @@ -312,7 +312,7 @@ static enum ec_error_list isl9241_discharge_on_ac(int chgnum, int enable) { int rv; - mutex_lock(&control1_mutex); + mutex_lock(&control1_mutex_isl9241); rv = isl9241_update(chgnum, ISL9241_REG_CONTROL1, ISL9241_CONTROL1_LEARN_MODE, @@ -320,7 +320,7 @@ static enum ec_error_list isl9241_discharge_on_ac(int chgnum, int enable) if (!rv) learn_mode = enable; - mutex_unlock(&control1_mutex); + mutex_unlock(&control1_mutex_isl9241); return rv; } diff --git a/zephyr/Kconfig.battery b/zephyr/Kconfig.battery index c1753ccefc..add095ce8e 100644 --- a/zephyr/Kconfig.battery +++ b/zephyr/Kconfig.battery @@ -99,12 +99,6 @@ config PLATFORM_EC_I2C_VIRTUAL_BATTERY return desired data to host instead of issuing I2C transaction every time. -choice "Charger select" - prompt "Select the charger to use" - help - Select the battery charger IC used on the board. Only one charger may - be selected. - config PLATFORM_EC_CHARGER_ISL9237 bool "Use the ISL9237 charger" depends on PLATFORM_EC_I2C @@ -180,8 +174,6 @@ config PLATFORM_EC_CHARGER_BQ25720 wide range of input power sources are supported such as high voltage USB-C power delivery. -endchoice # "Charger select" - config PLATFORM_EC_CHARGER_DISCHARGE_ON_AC bool "Board supports discharge mode" help |