chromeec: Add command to override charger limit

This patch adds EC_CMD_OVERRIDE_DEDICATED_CHARGER_LIMIT, which
overrides the max input current and voltage when a barrel jack
adapter supplies power.

BUG=b:64442692
BRANCH=none
TEST=Boot Fizz. Use chgsup console command to verify the max
current and voltage are set as expected.

Change-Id: I8c6fc54e519ce13e3db82ee2cecaa96c6eb42d8a
Signed-off-by: Daisuke Nojiri <dnojiri@chromium.org>
Reviewed-on: https://review.coreboot.org/22624
Tested-by: build bot (Jenkins) <no-reply@coreboot.org>
Reviewed-by: Aaron Durbin <adurbin@chromium.org>
This commit is contained in:
Daisuke Nojiri 2017-11-28 14:11:30 -08:00 committed by Aaron Durbin
parent 40d0bfa212
commit 93fd8fa40f
3 changed files with 40 additions and 0 deletions

View File

@ -638,6 +638,26 @@ int google_chromeec_get_usb_pd_power_info(enum usb_chg_type *type,
return 0;
}
int google_chromeec_override_dedicated_charger_limit(u16 current_lim,
u16 voltage_lim)
{
struct ec_params_dedicated_charger_limit p = {
.current_lim = current_lim,
.voltage_lim = voltage_lim,
};
struct chromeec_command cmd = {
.cmd_code = EC_CMD_OVERRIDE_DEDICATED_CHARGER_LIMIT,
.cmd_version = 0,
.cmd_data_in = &p,
.cmd_size_in = sizeof(p),
.cmd_data_out = NULL,
.cmd_size_out = 0,
.cmd_dev_index = 0,
};
return google_chromeec_command(&cmd);
}
int google_chromeec_set_usb_pd_role(u8 port, enum usb_pd_control_role role)
{
struct ec_params_usb_pd_control req = {

View File

@ -91,6 +91,16 @@ int google_chromeec_set_usb_pd_role(u8 port, enum usb_pd_control_role role);
int google_chromeec_get_usb_pd_power_info(enum usb_chg_type *type,
u32 *max_watts);
/*
* Set max current and voltage of a dedicated charger.
*
* @param current_lim Max current in mA
* @param voltage_lim Max voltage in mV
* @return non-zero for error, otherwise 0.
*/
int google_chromeec_override_dedicated_charger_limit(u16 current_lim,
u16 voltage_lim);
/* internal structure to send a command to the EC and wait for response. */
struct chromeec_command {
uint16_t cmd_code; /* command code in, status out */

View File

@ -3533,6 +3533,16 @@ struct __ec_align2 ec_params_external_power_limit_v1 {
#define EC_POWER_LIMIT_NONE 0xffff
/*
* Set maximum voltage & current of a dedicated charge port
*/
#define EC_CMD_OVERRIDE_DEDICATED_CHARGER_LIMIT 0x00A3
struct __ec_align2 ec_params_dedicated_charger_limit {
uint16_t current_lim; /* in mA */
uint16_t voltage_lim; /* in mV */
};
/*****************************************************************************/
/* Hibernate/Deep Sleep Commands */