diff options
author | Daisuke Nojiri <dnojiri@chromium.org> | 2017-11-28 14:11:30 -0800 |
---|---|---|
committer | Aaron Durbin <adurbin@chromium.org> | 2017-12-08 17:14:30 +0000 |
commit | 93fd8fa40fbe80bd825ad7d28b4f2c85c0b751be (patch) | |
tree | 0964562028f7d8a8da88650f18e27029688ef259 | |
parent | 40d0bfa212d5516c68d3ad044334f7d2cc6b4445 (diff) |
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>
-rw-r--r-- | src/ec/google/chromeec/ec.c | 20 | ||||
-rw-r--r-- | src/ec/google/chromeec/ec.h | 10 | ||||
-rw-r--r-- | src/ec/google/chromeec/ec_commands.h | 10 |
3 files changed, 40 insertions, 0 deletions
diff --git a/src/ec/google/chromeec/ec.c b/src/ec/google/chromeec/ec.c index b44fffe9bc..588d11528b 100644 --- a/src/ec/google/chromeec/ec.c +++ b/src/ec/google/chromeec/ec.c @@ -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 = { diff --git a/src/ec/google/chromeec/ec.h b/src/ec/google/chromeec/ec.h index 0b6f880909..e1bf6c8e76 100644 --- a/src/ec/google/chromeec/ec.h +++ b/src/ec/google/chromeec/ec.h @@ -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 */ diff --git a/src/ec/google/chromeec/ec_commands.h b/src/ec/google/chromeec/ec_commands.h index ee889b727b..0fbb1a6b8c 100644 --- a/src/ec/google/chromeec/ec_commands.h +++ b/src/ec/google/chromeec/ec_commands.h @@ -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 */ |