diff options
-rw-r--r-- | board/atlas/board.c | 3 | ||||
-rw-r--r-- | board/damu/board.c | 2 | ||||
-rw-r--r-- | board/flapjack/board.c | 2 | ||||
-rw-r--r-- | board/jacuzzi/board.c | 2 | ||||
-rw-r--r-- | board/kakadu/board.c | 2 | ||||
-rw-r--r-- | board/kappa/board.c | 2 | ||||
-rw-r--r-- | board/kodama/board.c | 2 | ||||
-rw-r--r-- | board/kukui/board.c | 2 | ||||
-rw-r--r-- | board/scarlet/board.c | 2 | ||||
-rw-r--r-- | common/charge_manager.c | 4 | ||||
-rw-r--r-- | common/charge_state_v2.c | 58 | ||||
-rw-r--r-- | common/charger.c | 98 | ||||
-rw-r--r-- | driver/charger/bq25710.c | 7 | ||||
-rw-r--r-- | include/charge_state_v2.h | 17 | ||||
-rw-r--r-- | include/charger.h | 17 | ||||
-rw-r--r-- | include/config.h | 10 | ||||
-rw-r--r-- | include/ec_commands.h | 1 | ||||
-rw-r--r-- | include/ocpc.h | 21 |
18 files changed, 188 insertions, 64 deletions
diff --git a/board/atlas/board.c b/board/atlas/board.c index 82dc847623..8948207c24 100644 --- a/board/atlas/board.c +++ b/board/atlas/board.c @@ -531,7 +531,8 @@ static int charger_derate(int current) static void board_charger_init(void) { - charger_set_input_current(charger_derate(PD_MAX_CURRENT_MA)); + charger_set_input_current(CHARGER_SOLO, charger_derate + (PD_MAX_CURRENT_MA)); } DECLARE_HOOK(HOOK_INIT, board_charger_init, HOOK_PRIO_DEFAULT); diff --git a/board/damu/board.c b/board/damu/board.c index 4f5ce743b4..dab8e8684a 100644 --- a/board/damu/board.c +++ b/board/damu/board.c @@ -209,7 +209,7 @@ int board_set_active_charge_port(int charge_port) * even when battery is disconnected, keep VBAT rail on but * set the charging current to minimum. */ - charger_set_current(0); + charger_set_current(CHARGER_SOLO, 0); break; default: panic("Invalid charge port\n"); diff --git a/board/flapjack/board.c b/board/flapjack/board.c index e0aed97417..f15f927840 100644 --- a/board/flapjack/board.c +++ b/board/flapjack/board.c @@ -347,7 +347,7 @@ int board_set_active_charge_port(int charge_port) * even when battery is disconnected, keep VBAT rail on but * set the charging current to minimum. */ - charger_set_current(0); + charger_set_current(CHARGER_SOLO, 0); break; default: panic("Invalid charge port\n"); diff --git a/board/jacuzzi/board.c b/board/jacuzzi/board.c index 186b6ae934..101a80222b 100644 --- a/board/jacuzzi/board.c +++ b/board/jacuzzi/board.c @@ -211,7 +211,7 @@ int board_set_active_charge_port(int charge_port) * even when battery is disconnected, keep VBAT rail on but * set the charging current to minimum. */ - charger_set_current(0); + charger_set_current(CHARGER_SOLO, 0); break; default: panic("Invalid charge port\n"); diff --git a/board/kakadu/board.c b/board/kakadu/board.c index 5c1a7d0ad3..1e3b26cfdb 100644 --- a/board/kakadu/board.c +++ b/board/kakadu/board.c @@ -181,7 +181,7 @@ int board_set_active_charge_port(int charge_port) */ gpio_set_level(GPIO_EN_POGO_CHARGE_L, 1); gpio_set_level(GPIO_EN_USBC_CHARGE_L, 1); - charger_set_current(0); + charger_set_current(CHARGER_SOLO, 0); break; default: panic("Invalid charge port\n"); diff --git a/board/kappa/board.c b/board/kappa/board.c index 810b572a67..ea1821ee07 100644 --- a/board/kappa/board.c +++ b/board/kappa/board.c @@ -190,7 +190,7 @@ int board_set_active_charge_port(int charge_port) * even when battery is disconnected, keep VBAT rail on but * set the charging current to minimum. */ - charger_set_current(0); + charger_set_current(CHARGER_SOLO, 0); break; default: panic("Invalid charge port\n"); diff --git a/board/kodama/board.c b/board/kodama/board.c index 08a4eeeeae..8be6ba345d 100644 --- a/board/kodama/board.c +++ b/board/kodama/board.c @@ -171,7 +171,7 @@ int board_set_active_charge_port(int charge_port) * even when battery is disconnected, keep VBAT rail on but * set the charging current to minimum. */ - charger_set_current(0); + charger_set_current(CHARGER_SOLO, 0); break; default: panic("Invalid charge port\n"); diff --git a/board/kukui/board.c b/board/kukui/board.c index 2f71e46c89..422c60e123 100644 --- a/board/kukui/board.c +++ b/board/kukui/board.c @@ -195,7 +195,7 @@ int board_set_active_charge_port(int charge_port) */ gpio_set_level(GPIO_EN_POGO_CHARGE_L, 1); gpio_set_level(GPIO_EN_USBC_CHARGE_L, 1); - charger_set_current(0); + charger_set_current(CHARGER_SOLO, 0); break; default: panic("Invalid charge port\n"); diff --git a/board/scarlet/board.c b/board/scarlet/board.c index b84062153c..7638bee9cf 100644 --- a/board/scarlet/board.c +++ b/board/scarlet/board.c @@ -192,7 +192,7 @@ int board_set_active_charge_port(int charge_port) * even when battery is disconnected, keep VBAT rail on but * set the charging current to minimum. */ - charger_set_current(0); + charger_set_current(CHARGER_SOLO, 0); break; default: panic("Invalid charge port\n"); diff --git a/common/charge_manager.c b/common/charge_manager.c index 8bf0267cc7..c12fc12318 100644 --- a/common/charge_manager.c +++ b/common/charge_manager.c @@ -705,6 +705,10 @@ static void charge_manager_refresh(void) active_charge_port_initialized = 1; + /* Set the active charger chip based upon the selected charge port. */ + if (IS_ENABLED(CONFIG_OCPC)) + charge_set_active_chg_chip(new_port); + /* * Clear override if it wasn't selected as the 'best' port -- it means * that no charge is available on the port, or the port was rejected. diff --git a/common/charge_state_v2.c b/common/charge_state_v2.c index c5592cf5d1..6354cf0a40 100644 --- a/common/charge_state_v2.c +++ b/common/charge_state_v2.c @@ -380,6 +380,7 @@ static void set_base_lid_current(int current_base, int allow_charge_base, int lid_first; int ret; + int chgnum = 0; /* TODO(b:71881017): This is still quite verbose during charging. */ if (prev_current_base != current_base || @@ -414,7 +415,7 @@ static void set_base_lid_current(int current_base, int allow_charge_base, ret = charge_set_output_current_limit(0, 0); if (ret) return; - ret = charger_set_input_current(current_lid); + ret = charger_set_input_current(chgnum, current_lid); if (ret) return; if (allow_charge_lid) @@ -1051,6 +1052,7 @@ static void dump_charge_state(void) #define DUMP(FLD, FMT) ccprintf(#FLD " = " FMT "\n", curr.FLD) #define DUMP_CHG(FLD, FMT) ccprintf("\t" #FLD " = " FMT "\n", curr.chg. FLD) #define DUMP_BATT(FLD, FMT) ccprintf("\t" #FLD " = " FMT "\n", curr.batt. FLD) +#define DUMP_OCPC(FLD, FMT) ccprintf("\t" #FLD " = " FMT "\n", curr.ocpc. FLD) ccprintf("state = %s\n", state_list[curr.state]); DUMP(ac, "%d"); DUMP(batt_is_charging, "%d"); @@ -1075,6 +1077,10 @@ static void dump_charge_state(void) DUMP_BATT(full_capacity, "%dmAh"); ccprintf("\tis_present = %s\n", batt_pres[curr.batt.is_present]); cflush(); +#ifdef CONFIG_OCPC + ccprintf("ocpc.*:\n"); + DUMP_OCPC(active_chg_chip, "%d"); +#endif /* CONFIG_OCPC */ DUMP(requested_voltage, "%dmV"); DUMP(requested_current, "%dmA"); #ifdef CONFIG_CHARGER_OTG @@ -1097,7 +1103,7 @@ static void dump_charge_state(void) static void show_charging_progress(void) { - int rv = 0, minutes, to_full; + int rv = 0, minutes, to_full, chgnum = 0; #ifdef CONFIG_BATTERY_SMART /* @@ -1155,7 +1161,9 @@ static void show_charging_progress(void) ccprintf("battery:\n"); print_battery_debug(); ccprintf("charger:\n"); - print_charger_debug(); + if (IS_ENABLED(CONFIG_OCPC)) + chgnum = charge_get_active_chg_chip(); + print_charger_debug(chgnum); ccprintf("chg:\n"); dump_charge_state(); } @@ -1223,12 +1231,12 @@ static int charge_request(int voltage, int current) * battery. */ if (current >= 0) - r2 = charger_set_current(current); + r2 = charger_set_current(0, current); if (r2 != EC_SUCCESS) problem(PR_SET_CURRENT, r2); if (voltage >= 0) - r1 = charger_set_voltage(voltage); + r1 = charger_set_voltage(0, voltage); if (r1 != EC_SUCCESS) problem(PR_SET_VOLTAGE, r1); @@ -1607,6 +1615,7 @@ void charger_task(void *u) int need_static = 1; const struct charger_info * const info = charger_get_info(); int prev_plt_and_desired_mw; + int chgnum = 0; /* Get the battery-specific values */ batt_info = battery_get_info(); @@ -1683,6 +1692,7 @@ void charger_task(void *u) if (curr.desired_input_current != CHARGE_CURRENT_UNINITIALIZED) rv = charger_set_input_current( + chgnum, curr.desired_input_current); if (rv != EC_SUCCESS) problem(PR_SET_INPUT_CURR, rv); @@ -1715,7 +1725,7 @@ void charger_task(void *u) get_desired_input_current(prev_bp, info); if (curr.desired_input_current != CHARGE_CURRENT_UNINITIALIZED) - charger_set_input_current( + charger_set_input_current(chgnum, curr.desired_input_current); hook_notify(HOOK_BATTERY_SOC_CHANGE); } @@ -2366,6 +2376,10 @@ int charge_set_output_current_limit(int ma, int mv) int charge_set_input_current_limit(int ma, int mv) { + __maybe_unused int chgnum = 0; + + if (IS_ENABLED(CONFIG_OCPC)) + chgnum = charge_get_active_chg_chip(); #ifdef CONFIG_EC_EC_COMM_BATTERY_MASTER curr.input_voltage = mv; #endif @@ -2407,7 +2421,29 @@ int charge_set_input_current_limit(int ma, int mv) charge_wakeup(); return EC_SUCCESS; #else - return charger_set_input_current(ma); + return charger_set_input_current(chgnum, ma); +#endif +} + +#ifdef CONFIG_OCPC +void charge_set_active_chg_chip(int idx) +{ + ASSERT(idx < (int)chg_cnt); + + if (idx == curr.ocpc.active_chg_chip) + return; + + CPRINTS("Act Chg: %d", idx); + curr.ocpc.active_chg_chip = idx; +} +#endif /* CONFIG_OCPC */ + +int charge_get_active_chg_chip(void) +{ +#ifdef CONFIG_OCPC + return curr.ocpc.active_chg_chip; +#else + return 0; #endif } @@ -2503,6 +2539,10 @@ charge_command_charge_state(struct host_cmd_handler_args *args) struct ec_response_charge_state *out = args->response; uint32_t val; int rv = EC_RES_SUCCESS; + int chgnum = 0; + + if (args->version > 0) + chgnum = in->chgnum; switch (in->cmd) { @@ -2597,7 +2637,7 @@ charge_command_charge_state(struct host_cmd_handler_args *args) chgstate_set_manual_current(val); break; case CS_PARAM_CHG_INPUT_CURRENT: - if (charger_set_input_current(val)) + if (charger_set_input_current(chgnum, val)) rv = EC_RES_ERROR; break; case CS_PARAM_CHG_STATUS: @@ -2624,7 +2664,7 @@ charge_command_charge_state(struct host_cmd_handler_args *args) } DECLARE_HOST_COMMAND(EC_CMD_CHARGE_STATE, charge_command_charge_state, - EC_VER_MASK(0)); + EC_VER_MASK(0) | EC_VER_MASK(1)); /*****************************************************************************/ /* Console commands */ diff --git a/common/charger.c b/common/charger.c index eba9d621c6..21320fcd4d 100644 --- a/common/charger.c +++ b/common/charger.c @@ -86,12 +86,20 @@ int charger_closest_current(int current) void charger_get_params(struct charger_params *chg) { int chgnum = 0; + + if (IS_ENABLED(CONFIG_OCPC)) + chgnum = charge_get_active_chg_chip(); + memset(chg, 0, sizeof(*chg)); - if (charger_get_current(&chg->current)) + /* + * Only the primary charger(0) can tightly regulate the current, + * therefore always query the primary charger. + */ + if (charger_get_current(0, &chg->current)) chg->flags |= CHG_FLAG_BAD_CURRENT; - if (charger_get_voltage(&chg->voltage)) + if (charger_get_voltage(chgnum, &chg->voltage)) chg->flags |= CHG_FLAG_BAD_VOLTAGE; if (charger_get_input_current(chgnum, &chg->input_current)) @@ -117,11 +125,10 @@ static int check_print_error(int rv) return 0; } -void print_charger_debug(void) +void print_charger_debug(int chgnum) { int d; const struct charger_info *info = charger_get_info(); - int chgnum = 0; /* info */ print_item_name("Name:"); @@ -144,13 +151,13 @@ void print_charger_debug(void) /* charge voltage limit */ print_item_name("V_batt:"); - if (check_print_error(charger_get_voltage(&d))) + if (check_print_error(charger_get_voltage(chgnum, &d))) ccprintf("%5d (%4d - %5d, %3d)\n", d, info->voltage_min, info->voltage_max, info->voltage_step); /* charge current limit */ print_item_name("I_batt:"); - if (check_print_error(charger_get_current(&d))) + if (check_print_error(charger_get_current(chgnum, &d))) ccprintf("%5d (%4d - %5d, %3d)\n", d, info->current_min, info->current_max, info->current_step); @@ -172,41 +179,55 @@ static int command_charger(int argc, char **argv) { int d; char *e; + int idx_provided = 0; + int chgnum; - if (argc != 3) { - print_charger_debug(); + if (argc == 1) { + print_charger_debug(0); return EC_SUCCESS; } - if (strcasecmp(argv[1], "input") == 0) { - d = strtoi(argv[2], &e, 0); + idx_provided = isdigit(argv[1][0]); + if (idx_provided) + chgnum = atoi(argv[1]); + else + chgnum = 0; + + if ((argc == 2) && idx_provided) { + print_charger_debug(chgnum); + return EC_SUCCESS; + } + + if (strcasecmp(argv[1+idx_provided], "input") == 0) { + d = strtoi(argv[2+idx_provided], &e, 0); if (*e) - return EC_ERROR_PARAM2; - return charger_set_input_current(d); - } else if (strcasecmp(argv[1], "current") == 0) { - d = strtoi(argv[2], &e, 0); + return EC_ERROR_PARAM2+idx_provided; + return charger_set_input_current(chgnum, d); + } else if (strcasecmp(argv[1+idx_provided], "current") == 0) { + d = strtoi(argv[2+idx_provided], &e, 0); if (*e) - return EC_ERROR_PARAM2; + return EC_ERROR_PARAM2+idx_provided; chgstate_set_manual_current(d); - return charger_set_current(d); - } else if (strcasecmp(argv[1], "voltage") == 0) { - d = strtoi(argv[2], &e, 0); + return charger_set_current(chgnum, d); + } else if (strcasecmp(argv[1+idx_provided], "voltage") == 0) { + d = strtoi(argv[2+idx_provided], &e, 0); if (*e) - return EC_ERROR_PARAM2; + return EC_ERROR_PARAM2+idx_provided; chgstate_set_manual_voltage(d); - return charger_set_voltage(d); - } else if (strcasecmp(argv[1], "dptf") == 0) { - d = strtoi(argv[2], &e, 0); + return charger_set_voltage(chgnum, d); + } else if (strcasecmp(argv[1+idx_provided], "dptf") == 0) { + d = strtoi(argv[2+idx_provided], &e, 0); if (*e) - return EC_ERROR_PARAM2; + return EC_ERROR_PARAM2+idx_provided; dptf_limit_ma = d; return EC_SUCCESS; - } else - return EC_ERROR_PARAM1; + } else { + return EC_ERROR_PARAM1+idx_provided; + } } DECLARE_CONSOLE_COMMAND(charger, command_charger, - "[input | current | voltage | dptf] [newval]", + "[chgnum] [input | current | voltage | dptf] [newval]", "Get or set charger param(s)"); /* Driver wrapper functions */ @@ -336,12 +357,14 @@ int charger_is_sourcing_otg_power(int port) return rv; } -enum ec_error_list charger_get_current(int *current) +enum ec_error_list charger_get_current(int chgnum, int *current) { - int chgnum = 0; int rv = EC_ERROR_UNIMPLEMENTED; - if ((chgnum < 0) || (chgnum >= chg_cnt)) { + if (chgnum < 0) + return EC_ERROR_INVAL; + + if (chgnum >= chg_cnt) { CPRINTS("%s(%d) Invalid charger!", __func__, chgnum); return EC_ERROR_INVAL; } @@ -352,9 +375,8 @@ enum ec_error_list charger_get_current(int *current) return rv; } -enum ec_error_list charger_set_current(int current) +enum ec_error_list charger_set_current(int chgnum, int current) { - int chgnum = 0; int rv = EC_ERROR_UNIMPLEMENTED; if ((chgnum < 0) || (chgnum >= chg_cnt)) { @@ -368,12 +390,14 @@ enum ec_error_list charger_set_current(int current) return rv; } -enum ec_error_list charger_get_voltage(int *voltage) +enum ec_error_list charger_get_voltage(int chgnum, int *voltage) { - int chgnum = 0; int rv = EC_ERROR_UNIMPLEMENTED; - if ((chgnum < 0) || (chgnum >= chg_cnt)) { + if (chgnum < 0) + return EC_ERROR_INVAL; + + if (chgnum >= chg_cnt) { CPRINTS("%s(%d) Invalid charger!", __func__, chgnum); return EC_ERROR_INVAL; } @@ -384,9 +408,8 @@ enum ec_error_list charger_get_voltage(int *voltage) return rv; } -enum ec_error_list charger_set_voltage(int voltage) +enum ec_error_list charger_set_voltage(int chgnum, int voltage) { - int chgnum = 0; int rv = EC_ERROR_UNIMPLEMENTED; if ((chgnum < 0) || (chgnum >= chg_cnt)) { @@ -433,9 +456,8 @@ enum ec_error_list charger_get_vbus_voltage(int port, int *voltage) return rv; } -enum ec_error_list charger_set_input_current(int input_current) +enum ec_error_list charger_set_input_current(int chgnum, int input_current) { - int chgnum = 0; int rv = EC_ERROR_UNIMPLEMENTED; if ((chgnum < 0) || (chgnum >= chg_cnt)) { diff --git a/driver/charger/bq25710.c b/driver/charger/bq25710.c index b9a897d843..72eaf20bdf 100644 --- a/driver/charger/bq25710.c +++ b/driver/charger/bq25710.c @@ -9,6 +9,7 @@ #include "battery_smart.h" #include "bq25710.h" #include "charge_ramp.h" +#include "charge_state_v2.h" #include "charger.h" #include "common.h" #include "console.h" @@ -466,6 +467,10 @@ static enum ec_error_list bq25710_set_option(int chgnum, int option) static void bq25710_chg_ramp_handle(void) { int ramp_curr; + int chgnum = 0; + + if (IS_ENABLED(CONFIG_OCPC)) + chgnum = charge_get_active_chg_chip(); /* * Once the charge ramp is stable write back the stable ramp @@ -473,7 +478,7 @@ static void bq25710_chg_ramp_handle(void) */ ramp_curr = chg_ramp_get_current_limit(); if (chg_ramp_is_stable()) { - if (ramp_curr && !charger_set_input_current(ramp_curr)) + if (ramp_curr && !charger_set_input_current(chgnum, ramp_curr)) CPRINTF("bq25710: stable ramp current=%d\n", ramp_curr); } else { CPRINTF("bq25710: ICO stall, ramp current=%d\n", ramp_curr); diff --git a/include/charge_state_v2.h b/include/charge_state_v2.h index ab9f54b46d..e26c53e2d5 100644 --- a/include/charge_state_v2.h +++ b/include/charge_state_v2.h @@ -8,6 +8,7 @@ #include "charger.h" #include "chipset.h" #include "ec_ec_comm_master.h" +#include "ocpc.h" #include "timer.h" #ifndef __CROS_EC_CHARGE_STATE_V2_H @@ -46,6 +47,9 @@ struct charge_state_data { #ifdef CONFIG_EC_EC_COMM_BATTERY_MASTER int input_voltage; #endif +#ifdef CONFIG_OCPC + struct ocpc_data ocpc; +#endif }; /** @@ -147,6 +151,19 @@ int charge_get_plt_plus_bat_desired_mw(void); int charge_get_stable_current(void); /** + * Select which charger IC will actually be performing the charger switching. + * + * @param idx The index into the chg_chips table. + */ +void charge_set_active_chg_chip(int idx); + +/** + * Retrieve which charger IC is the active charger IC performing the charger + * switching. + */ +int charge_get_active_chg_chip(void); + +/** * Set the stable current. * * @param ma: battery charging current in mA diff --git a/include/charger.h b/include/charger.h index 3baf9e93c9..310643017b 100644 --- a/include/charger.h +++ b/include/charger.h @@ -211,12 +211,12 @@ enum ec_error_list charger_set_otg_current_voltage(int output_current, int charger_is_sourcing_otg_power(int port); /* Get/set charge current limit in mA */ -enum ec_error_list charger_get_current(int *current); -enum ec_error_list charger_set_current(int current); +enum ec_error_list charger_get_current(int chgnum, int *current); +enum ec_error_list charger_set_current(int chgnum, int current); /* Get/set charge voltage limit in mV */ -enum ec_error_list charger_get_voltage(int *voltage); -enum ec_error_list charger_set_voltage(int voltage); +enum ec_error_list charger_get_voltage(int chgnum, int *voltage); +enum ec_error_list charger_set_voltage(int chgnum, int voltage); /* Discharge battery when on AC power. */ enum ec_error_list charger_discharge_on_ac(int enable); @@ -236,7 +236,7 @@ int charger_get_system_power(void); /* Other parameters that may be charger-specific, but are common so far. */ /* Set desired input current value */ -enum ec_error_list charger_set_input_current(int input_current); +enum ec_error_list charger_set_input_current(int chgnum, int input_current); /* * Get actual input current value. @@ -251,8 +251,11 @@ enum ec_error_list charger_get_option(int *option); enum ec_error_list charger_set_option(int option); enum ec_error_list charger_set_hw_ramp(int enable); -/* Print all charger info for debugging purposes */ -void print_charger_debug(void); +/* + * Print all charger info for debugging purposes + * @param chgnum: charger IC index. + */ +void print_charger_debug(int chgnum); #endif /* __CROS_EC_CHARGER_H */ diff --git a/include/config.h b/include/config.h index a0afe634e7..9c08c6901d 100644 --- a/include/config.h +++ b/include/config.h @@ -1011,6 +1011,16 @@ /* Charger enable GPIO is active low */ #undef CONFIG_CHARGER_EN_ACTIVE_LOW +/* + * OCPC - One Charger IC Per Type-C + * + * Define this if the board may have multiple charger ICs in the system. The + * assumption is that that primary charger is index 0 and is the charger IC + * connected to the battery FET. Additionally, `chgnum` is assumed to be the + * same as the charge port index. + */ +#undef CONFIG_OCPC + /* Enable trickle charging */ #undef CONFIG_TRICKLE_CHARGING diff --git a/include/ec_commands.h b/include/ec_commands.h index 2685a0db22..a74360dc7a 100644 --- a/include/ec_commands.h +++ b/include/ec_commands.h @@ -4445,6 +4445,7 @@ struct ec_params_charge_state { uint32_t value; /* value to set */ } set_param; }; + uint8_t chgnum; /* Version 1 supports chgnum */ } __ec_todo_packed; struct ec_response_charge_state { diff --git a/include/ocpc.h b/include/ocpc.h new file mode 100644 index 0000000000..c5c41470cb --- /dev/null +++ b/include/ocpc.h @@ -0,0 +1,21 @@ +/* Copyright 2020 The Chromium OS Authors. All rights reserved. + * Use of this source code is governed by a BSD-style license that can be + * found in the LICENSE file. + */ + +/* + * OCPC - One Charger IC per Type-C + */ + +#ifndef __CROS_EC_OCPC_H_ +#define __CROS_EC_OCPC_H_ + +#define PRIMARY_CHARGER 0 +#define SECONDARY_CHARGER 1 + +struct ocpc_data { + /* Index into chg_chips[] table for the charger IC that is switching. */ + int active_chg_chip; +}; + +#endif /* __CROS_EC_OCPC_H */ |