diff options
author | Diana Z <dzigterman@chromium.org> | 2020-08-25 11:13:01 -0600 |
---|---|---|
committer | Commit Bot <commit-bot@chromium.org> | 2020-08-29 22:41:17 +0000 |
commit | d32310fdb0935f9715f01d163444f479cbdf16c9 (patch) | |
tree | 0edc4fc0e0248e6980f527c22266db8f473525a2 | |
parent | 9ead22ae18de72b17b5a3d86462b3da16fde1376 (diff) | |
download | chrome-ec-d32310fdb0935f9715f01d163444f479cbdf16c9.tar.gz |
Charger: Add chgnum parameter to OTG set functions
Add the charger number as an input for setting OTG output current and
enabling it, both in the charger driver and in
charge_set_output_current_limit(). Also add a clarifying note about the
intent of CHARGER_SOLO.
BRANCH=None
BUG=b:147440290
TEST=make -j buildall
Signed-off-by: Diana Z <dzigterman@chromium.org>
Change-Id: I7656c19a87d8216f5efc72dcffa6d638064d3e2f
Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/platform/ec/+/2376469
Reviewed-by: Aseda Aboagye <aaboagye@chromium.org>
Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/platform/ec/+/2383895
Reviewed-by: Edward Hill <ecgh@chromium.org>
Commit-Queue: Edward Hill <ecgh@chromium.org>
Tested-by: Edward Hill <ecgh@chromium.org>
-rw-r--r-- | baseboard/kukui/usb_pd_policy.c | 8 | ||||
-rw-r--r-- | board/scarlet/usb_pd_policy.c | 4 | ||||
-rw-r--r-- | common/charge_state_v2.c | 10 | ||||
-rw-r--r-- | common/charger.c | 7 | ||||
-rw-r--r-- | common/ec_ec_comm_slave.c | 5 | ||||
-rw-r--r-- | include/charge_state_v2.h | 3 | ||||
-rw-r--r-- | include/charger.h | 12 |
7 files changed, 29 insertions, 20 deletions
diff --git a/baseboard/kukui/usb_pd_policy.c b/baseboard/kukui/usb_pd_policy.c index d56a711dd6..b2ff65b849 100644 --- a/baseboard/kukui/usb_pd_policy.c +++ b/baseboard/kukui/usb_pd_policy.c @@ -57,9 +57,9 @@ int pd_set_power_supply_ready(int port) #endif /* defined(CONFIG_USB_PD_MAX_SINGLE_SOURCE_CURRENT) */ if (IS_ENABLED(VARIANT_KUKUI_CHARGER_ISL9238)) - charge_set_output_current_limit(3300, 5000); + charge_set_output_current_limit(CHARGER_SOLO, 3300, 5000); else - charger_enable_otg_power(1); + charger_enable_otg_power(CHARGER_SOLO, 1); gpio_set_level(GPIO_EN_USBC_CHARGE_L, 1); gpio_set_level(GPIO_EN_PP5000_USBC, 1); @@ -92,9 +92,9 @@ void pd_power_supply_reset(int port) #endif /* defined(CONFIG_USB_PD_MAX_SINGLE_SOURCE_CURRENT) */ if (IS_ENABLED(VARIANT_KUKUI_CHARGER_ISL9238)) - charge_set_output_current_limit(0, 0); + charge_set_output_current_limit(CHARGER_SOLO, 0, 0); else - charger_enable_otg_power(0); + charger_enable_otg_power(CHARGER_SOLO, 0); gpio_set_level(GPIO_EN_PP5000_USBC, 0); diff --git a/board/scarlet/usb_pd_policy.c b/board/scarlet/usb_pd_policy.c index a47c15ebdb..cba4540ecd 100644 --- a/board/scarlet/usb_pd_policy.c +++ b/board/scarlet/usb_pd_policy.c @@ -37,7 +37,7 @@ int pd_set_power_supply_ready(int port) pd_set_vbus_discharge(port, 0); /* Provide VBUS */ vbus_en = 1; - charger_enable_otg_power(1); + charger_enable_otg_power(CHARGER_SOLO, 1); /* notify host of power info change */ pd_send_host_event(PD_EVENT_POWER_CHANGE); @@ -52,7 +52,7 @@ void pd_power_supply_reset(int port) prev_en = vbus_en; /* Disable VBUS */ vbus_en = 0; - charger_enable_otg_power(0); + charger_enable_otg_power(CHARGER_SOLO, 0); /* Enable discharge if we were previously sourcing 5V */ if (prev_en) pd_set_vbus_discharge(port, 1); diff --git a/common/charge_state_v2.c b/common/charge_state_v2.c index 2796dd9804..d45df208e7 100644 --- a/common/charge_state_v2.c +++ b/common/charge_state_v2.c @@ -414,7 +414,7 @@ static void set_base_lid_current(int current_base, int allow_charge_base, } if (current_lid >= 0) { - ret = charge_set_output_current_limit(0, 0); + ret = charge_set_output_current_limit(CHARGER_SOLO, 0, 0); if (ret) return; ret = charger_set_input_current(chgnum, current_lid); @@ -426,7 +426,7 @@ static void set_base_lid_current(int current_base, int allow_charge_base, else ret = charge_request(0, 0); } else { - ret = charge_set_output_current_limit( + ret = charge_set_output_current_limit(CHARGER_SOLO, -current_lid, otg_voltage); } @@ -2390,18 +2390,18 @@ int charge_is_consuming_full_input_current(void) } #ifdef CONFIG_CHARGER_OTG -int charge_set_output_current_limit(int ma, int mv) +int charge_set_output_current_limit(int chgnum, int ma, int mv) { int ret; int enable = ma > 0; if (enable) { - ret = charger_set_otg_current_voltage(ma, mv); + ret = charger_set_otg_current_voltage(chgnum, ma, mv); if (ret != EC_SUCCESS) return ret; } - ret = charger_enable_otg_power(enable); + ret = charger_enable_otg_power(chgnum, enable); if (ret != EC_SUCCESS) return ret; diff --git a/common/charger.c b/common/charger.c index eefdcb59cd..0b1741e592 100644 --- a/common/charger.c +++ b/common/charger.c @@ -316,9 +316,8 @@ enum ec_error_list charger_set_mode(int mode) return rv; } -enum ec_error_list charger_enable_otg_power(int enabled) +enum ec_error_list charger_enable_otg_power(int chgnum, int enabled) { - int chgnum = 0; int rv = EC_ERROR_UNIMPLEMENTED; if ((chgnum < 0) || (chgnum >= board_get_charger_chip_count())) { @@ -332,10 +331,10 @@ enum ec_error_list charger_enable_otg_power(int enabled) return rv; } -enum ec_error_list charger_set_otg_current_voltage(int output_current, +enum ec_error_list charger_set_otg_current_voltage(int chgnum, + int output_current, int output_voltage) { - int chgnum = 0; int rv = EC_ERROR_UNIMPLEMENTED; if ((chgnum < 0) || (chgnum >= board_get_charger_chip_count())) { diff --git a/common/ec_ec_comm_slave.c b/common/ec_ec_comm_slave.c index 339f0f0490..ae845d58bc 100644 --- a/common/ec_ec_comm_slave.c +++ b/common/ec_ec_comm_slave.c @@ -163,7 +163,7 @@ static void handle_cmd_charger_control( } if (params->max_current >= 0) { - charge_set_output_current_limit(0, 0); + charge_set_output_current_limit(CHARGER_SOLO, 0, 0); charge_set_input_current_limit( MIN(MAX_CURRENT_MA, params->max_current), 0); charging_allowed = params->allow_charging; @@ -177,7 +177,8 @@ static void handle_cmd_charger_control( /* Reset input current to minimum. */ charge_set_input_current_limit(CONFIG_CHARGER_INPUT_CURRENT, 0); /* Setup and enable "OTG". */ - charge_set_output_current_limit(-params->max_current, + charge_set_output_current_limit(CHARGER_SOLO, + -params->max_current, params->otg_voltage); charging_allowed = 0; } diff --git a/include/charge_state_v2.h b/include/charge_state_v2.h index f5408fa253..1cff136ee8 100644 --- a/include/charge_state_v2.h +++ b/include/charge_state_v2.h @@ -55,11 +55,12 @@ struct charge_state_data { * Set the output current limit and voltage. This is used to provide power from * the charger chip ("OTG" mode). * + * @param chgnum Charger index to act upon * @param ma Maximum current to provide in mA (0 to disable output). * @param mv Voltage in mV (ignored if ma == 0). * @return EC_SUCCESS or error */ -int charge_set_output_current_limit(int ma, int mv); +int charge_set_output_current_limit(int chgnum, int ma, int mv); /** * Set the charge input current limit. This value is stored and sent every diff --git a/include/charger.h b/include/charger.h index 246edec1ab..f097f564a9 100644 --- a/include/charger.h +++ b/include/charger.h @@ -134,10 +134,17 @@ extern struct charger_config_t chg_chips[]; __override_proto uint8_t board_get_charger_chip_count(void); #ifdef CONFIG_CHARGER_SINGLE_CHIP +/* + * Note: CHARGER_SOLO should be used anywhere the charger index being called is + * only valid for a single-chip system. This will then generate build errors if + * the callsite is compliled for a multi-chip system, which needs to re-evaluate + * the charger index to act upon. + */ enum chg_id { CHARGER_SOLO, CHARGER_NUM, }; + #endif /* Get the current charger_params. Failures are reported in .flags */ @@ -193,7 +200,7 @@ enum ec_error_list charger_set_mode(int mode); * For chargers that are able to supply output power for OTG dongle, this * function enables or disables power output. */ -enum ec_error_list charger_enable_otg_power(int enabled); +enum ec_error_list charger_enable_otg_power(int chgnum, int enabled); /** * Sets OTG current limit and voltage (independent of whether OTG power is @@ -211,7 +218,8 @@ enum ec_error_list charger_enable_otg_power(int enabled); * * @return EC_SUCCESS on success, an error otherwise. */ -enum ec_error_list charger_set_otg_current_voltage(int output_current, +enum ec_error_list charger_set_otg_current_voltage(int chgnum, + int output_current, int output_voltage); /** |