summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorYuval Peress <peress@google.com>2021-09-29 22:07:41 -0600
committerCommit Bot <commit-bot@chromium.org>2021-10-01 17:45:15 +0000
commita94daa8412b6e936c96d68bb3e5c607fde9b0972 (patch)
tree43a59efe06dba8eae72b21e3e87202d956dbf28a
parentd5ad74574f5bf884bd1642914f522136d4218c2c (diff)
downloadchrome-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.c22
-rw-r--r--driver/charger/isl9241.c6
-rw-r--r--zephyr/Kconfig.battery8
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, &reg);
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