summaryrefslogtreecommitdiff
path: root/common/charger.c
diff options
context:
space:
mode:
Diffstat (limited to 'common/charger.c')
-rw-r--r--common/charger.c60
1 files changed, 35 insertions, 25 deletions
diff --git a/common/charger.c b/common/charger.c
index 3a980d99df..68f8f71ced 100644
--- a/common/charger.c
+++ b/common/charger.c
@@ -41,6 +41,15 @@ static void dptf_disable_hook(void)
DECLARE_HOOK(HOOK_CHIPSET_SUSPEND, dptf_disable_hook, HOOK_PRIO_DEFAULT);
DECLARE_HOOK(HOOK_CHIPSET_SHUTDOWN, dptf_disable_hook, HOOK_PRIO_DEFAULT);
+/*
+ * Boards should override this function if their count may vary during run-time
+ * due to different DB options.
+ */
+__overridable uint8_t board_get_charger_chip_count(void)
+{
+ return CHARGER_NUM;
+}
+
int charger_closest_voltage(int voltage)
{
const struct charger_info *info = charger_get_info();
@@ -236,7 +245,7 @@ static void charger_chips_init(void)
{
int chip;
- for (chip = 0; chip < chg_cnt; chip++) {
+ for (chip = 0; chip < board_get_charger_chip_count(); chip++) {
if (chg_chips[chip].drv->init)
chg_chips[chip].drv->init(chip);
}
@@ -248,7 +257,7 @@ enum ec_error_list charger_post_init(void)
int chgnum = 0;
int rv = EC_ERROR_UNIMPLEMENTED;
- if ((chgnum < 0) || (chgnum >= chg_cnt)) {
+ if ((chgnum < 0) || (chgnum >= board_get_charger_chip_count())) {
CPRINTS("%s(%d) Invalid charger!", __func__, chgnum);
return EC_ERROR_INVAL;
}
@@ -264,7 +273,7 @@ const struct charger_info *charger_get_info(void)
int chgnum = 0;
const struct charger_info *ret = NULL;
- if ((chgnum < 0) || (chgnum >= chg_cnt)) {
+ if ((chgnum < 0) || (chgnum >= board_get_charger_chip_count())) {
CPRINTS("%s(%d) Invalid charger!", __func__, chgnum);
return NULL;
}
@@ -280,7 +289,7 @@ enum ec_error_list charger_get_status(int *status)
int chgnum = 0;
int rv = EC_ERROR_UNIMPLEMENTED;
- if ((chgnum < 0) || (chgnum >= chg_cnt)) {
+ if ((chgnum < 0) || (chgnum >= board_get_charger_chip_count())) {
CPRINTS("%s(%d) Invalid charger!", __func__, chgnum);
return EC_ERROR_INVAL;
}
@@ -296,7 +305,7 @@ enum ec_error_list charger_set_mode(int mode)
int chgnum = 0;
int rv = EC_ERROR_UNIMPLEMENTED;
- if ((chgnum < 0) || (chgnum >= chg_cnt)) {
+ if ((chgnum < 0) || (chgnum >= board_get_charger_chip_count())) {
CPRINTS("%s(%d) Invalid charger!", __func__, chgnum);
return EC_ERROR_INVAL;
}
@@ -312,7 +321,7 @@ enum ec_error_list charger_enable_otg_power(int enabled)
int chgnum = 0;
int rv = EC_ERROR_UNIMPLEMENTED;
- if ((chgnum < 0) || (chgnum >= chg_cnt)) {
+ if ((chgnum < 0) || (chgnum >= board_get_charger_chip_count())) {
CPRINTS("%s(%d) Invalid charger!", __func__, chgnum);
return EC_ERROR_INVAL;
}
@@ -329,7 +338,7 @@ enum ec_error_list charger_set_otg_current_voltage(int output_current,
int chgnum = 0;
int rv = EC_ERROR_UNIMPLEMENTED;
- if ((chgnum < 0) || (chgnum >= chg_cnt)) {
+ if ((chgnum < 0) || (chgnum >= board_get_charger_chip_count())) {
CPRINTS("%s(%d) Invalid charger!", __func__, chgnum);
return EC_ERROR_INVAL;
}
@@ -346,7 +355,7 @@ int charger_is_sourcing_otg_power(int port)
int chgnum = 0;
int rv = 0;
- if ((chgnum < 0) || (chgnum >= chg_cnt)) {
+ if ((chgnum < 0) || (chgnum >= board_get_charger_chip_count())) {
CPRINTS("%s(%d) Invalid charger!", __func__, chgnum);
return 0;
}
@@ -361,10 +370,11 @@ enum ec_error_list charger_get_current(int chgnum, int *current)
{
int rv = EC_ERROR_UNIMPLEMENTED;
+ /* Note: chgnum may be -1 if no active port is selected */
if (chgnum < 0)
return EC_ERROR_INVAL;
- if (chgnum >= chg_cnt) {
+ if (chgnum >= board_get_charger_chip_count()) {
CPRINTS("%s(%d) Invalid charger!", __func__, chgnum);
return EC_ERROR_INVAL;
}
@@ -379,7 +389,7 @@ enum ec_error_list charger_set_current(int chgnum, int current)
{
int rv = EC_ERROR_UNIMPLEMENTED;
- if ((chgnum < 0) || (chgnum >= chg_cnt)) {
+ if ((chgnum < 0) || (chgnum >= board_get_charger_chip_count())) {
CPRINTS("%s(%d) Invalid charger!", __func__, chgnum);
return EC_ERROR_INVAL;
}
@@ -397,7 +407,7 @@ enum ec_error_list charger_get_voltage(int chgnum, int *voltage)
if (chgnum < 0)
return EC_ERROR_INVAL;
- if (chgnum >= chg_cnt) {
+ if (chgnum >= board_get_charger_chip_count()) {
CPRINTS("%s(%d) Invalid charger!", __func__, chgnum);
return EC_ERROR_INVAL;
}
@@ -412,7 +422,7 @@ enum ec_error_list charger_set_voltage(int chgnum, int voltage)
{
int rv = EC_ERROR_UNIMPLEMENTED;
- if ((chgnum < 0) || (chgnum >= chg_cnt)) {
+ if ((chgnum < 0) || (chgnum >= board_get_charger_chip_count())) {
CPRINTS("%s(%d) Invalid charger!", __func__, chgnum);
return EC_ERROR_INVAL;
}
@@ -428,7 +438,7 @@ enum ec_error_list charger_discharge_on_ac(int enable)
int chgnum = 0;
int rv = EC_ERROR_UNIMPLEMENTED;
- if ((chgnum < 0) || (chgnum >= chg_cnt)) {
+ if ((chgnum < 0) || (chgnum >= board_get_charger_chip_count())) {
CPRINTS("%s(%d) Invalid charger!", __func__, chgnum);
return EC_ERROR_INVAL;
}
@@ -448,7 +458,7 @@ enum ec_error_list charger_get_vbus_voltage(int port, int *voltage)
if (!IS_ENABLED(CONFIG_CHARGER_SINGLE_CHIP))
chgnum = port;
- if ((chgnum < 0) || (chgnum >= chg_cnt)) {
+ if ((chgnum < 0) || (chgnum >= board_get_charger_chip_count())) {
CPRINTS("%s(%d) Invalid charger!", __func__, chgnum);
return 0;
}
@@ -464,7 +474,7 @@ enum ec_error_list charger_set_input_current(int chgnum, int input_current)
{
int rv = EC_ERROR_UNIMPLEMENTED;
- if ((chgnum < 0) || (chgnum >= chg_cnt)) {
+ if ((chgnum < 0) || (chgnum >= board_get_charger_chip_count())) {
CPRINTS("%s(%d) Invalid charger!", __func__, chgnum);
return EC_ERROR_INVAL;
}
@@ -483,7 +493,7 @@ enum ec_error_list charger_get_input_current(int chgnum, int *input_current)
if (chgnum < 0)
return EC_ERROR_INVAL;
- if (chgnum >= chg_cnt) {
+ if (chgnum >= board_get_charger_chip_count()) {
CPRINTS("%s(%d) Invalid charger!", __func__, chgnum);
return EC_ERROR_INVAL;
}
@@ -500,7 +510,7 @@ enum ec_error_list charger_manufacturer_id(int *id)
int chgnum = 0;
int rv = EC_ERROR_UNIMPLEMENTED;
- if ((chgnum < 0) || (chgnum >= chg_cnt)) {
+ if ((chgnum < 0) || (chgnum >= board_get_charger_chip_count())) {
CPRINTS("%s(%d) Invalid charger!", __func__, chgnum);
return EC_ERROR_INVAL;
}
@@ -516,7 +526,7 @@ enum ec_error_list charger_device_id(int *id)
int chgnum = 0;
int rv = EC_ERROR_UNIMPLEMENTED;
- if ((chgnum < 0) || (chgnum >= chg_cnt)) {
+ if ((chgnum < 0) || (chgnum >= board_get_charger_chip_count())) {
CPRINTS("%s(%d) Invalid charger!", __func__, chgnum);
return EC_ERROR_INVAL;
}
@@ -532,7 +542,7 @@ enum ec_error_list charger_get_option(int *option)
int chgnum = 0;
int rv = EC_ERROR_UNIMPLEMENTED;
- if ((chgnum < 0) || (chgnum >= chg_cnt)) {
+ if ((chgnum < 0) || (chgnum >= board_get_charger_chip_count())) {
CPRINTS("%s(%d) Invalid charger!", __func__, chgnum);
return EC_ERROR_INVAL;
}
@@ -548,7 +558,7 @@ enum ec_error_list charger_set_option(int option)
int chgnum = 0;
int rv = EC_ERROR_UNIMPLEMENTED;
- if ((chgnum < 0) || (chgnum >= chg_cnt)) {
+ if ((chgnum < 0) || (chgnum >= board_get_charger_chip_count())) {
CPRINTS("%s(%d) Invalid charger!", __func__, chgnum);
return EC_ERROR_INVAL;
}
@@ -564,7 +574,7 @@ enum ec_error_list charger_set_hw_ramp(int enable)
int chgnum = 0;
int rv = EC_ERROR_UNIMPLEMENTED;
- if ((chgnum < 0) || (chgnum >= chg_cnt)) {
+ if ((chgnum < 0) || (chgnum >= board_get_charger_chip_count())) {
CPRINTS("%s(%d) Invalid charger!", __func__, chgnum);
return EC_ERROR_INVAL;
}
@@ -581,7 +591,7 @@ int chg_ramp_is_stable(void)
int chgnum = 0;
int rv = 0;
- if ((chgnum < 0) || (chgnum >= chg_cnt)) {
+ if ((chgnum < 0) || (chgnum >= board_get_charger_chip_count())) {
CPRINTS("%s(%d) Invalid charger!", __func__, chgnum);
return 0;
}
@@ -597,7 +607,7 @@ int chg_ramp_is_detected(void)
int chgnum = 0;
int rv = 0;
- if ((chgnum < 0) || (chgnum >= chg_cnt)) {
+ if ((chgnum < 0) || (chgnum >= board_get_charger_chip_count())) {
CPRINTS("%s(%d) Invalid charger!", __func__, chgnum);
return 0;
}
@@ -613,7 +623,7 @@ int chg_ramp_get_current_limit(void)
int chgnum = 0;
int rv = 0;
- if ((chgnum < 0) || (chgnum >= chg_cnt)) {
+ if ((chgnum < 0) || (chgnum >= board_get_charger_chip_count())) {
CPRINTS("%s(%d) Invalid charger!", __func__, chgnum);
return 0;
}
@@ -630,7 +640,7 @@ enum ec_error_list charger_set_vsys_compensation(int chgnum,
int current_ma,
int voltage_mv)
{
- if ((chgnum < 0) || (chgnum >= chg_cnt)) {
+ if ((chgnum < 0) || (chgnum >= board_get_charger_chip_count())) {
CPRINTS("%s(%d) Invalid charger!", __func__, chgnum);
return EC_ERROR_INVAL;
}