summaryrefslogtreecommitdiff
path: root/common/charge_manager.c
diff options
context:
space:
mode:
Diffstat (limited to 'common/charge_manager.c')
-rw-r--r--common/charge_manager.c27
1 files changed, 27 insertions, 0 deletions
diff --git a/common/charge_manager.c b/common/charge_manager.c
index dbf97f000b..e2256fdcfc 100644
--- a/common/charge_manager.c
+++ b/common/charge_manager.c
@@ -1103,6 +1103,33 @@ DECLARE_HOST_COMMAND(EC_CMD_PD_CHARGE_PORT_OVERRIDE,
hc_charge_port_override,
EC_VER_MASK(0));
+#if CONFIG_DEDICATED_CHARGE_PORT_COUNT > 0
+static int hc_override_dedicated_charger_limit(
+ struct host_cmd_handler_args *args)
+{
+ const struct ec_params_dedicated_charger_limit *p = args->params;
+ struct charge_port_info ci = {
+ .current = p->current_lim,
+ .voltage = p->voltage_lim,
+ };
+
+ /*
+ * Allow a change only if the dedicated charge port is used. Host needs
+ * to apply a change every time a dedicated charger is plugged.
+ */
+ if (charge_port != DEDICATED_CHARGE_PORT)
+ return EC_RES_UNAVAILABLE;
+
+ charge_manager_update_charge(CHARGE_SUPPLIER_DEDICATED,
+ DEDICATED_CHARGE_PORT, &ci);
+
+ return EC_RES_SUCCESS;
+}
+DECLARE_HOST_COMMAND(EC_CMD_OVERRIDE_DEDICATED_CHARGER_LIMIT,
+ hc_override_dedicated_charger_limit,
+ EC_VER_MASK(0));
+#endif
+
static int command_charge_port_override(int argc, char **argv)
{
int port = OVERRIDE_OFF;