summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDaisuke Nojiri <dnojiri@chromium.org>2018-12-14 10:33:05 -0800
committerCommit Bot <commit-bot@chromium.org>2021-03-19 16:52:13 +0000
commit93326936269fd20ebdf4deb861436484c433b0bf (patch)
treeb5851395e57b6f0f51c6f9b6cc268c76213a13f2
parentc38dc837e444388dd5fdf4aac1cd5c893eb2fa22 (diff)
downloadchrome-ec-93326936269fd20ebdf4deb861436484c433b0bf.tar.gz
charge_ramp: Allow USB-C power to be ramped by hardware
Currently, hardware ramping (= voltage regulation) is automatically disabled for USB-C power supplier (HARGE_SUPPLIER_PD & _TYPEC). This patch allows USB-C suppliers to get voltage regulation. It prevents the input voltage of weak suppliers from drooping. Signed-off-by: Daisuke Nojiri <dnojiri@chromium.org> BUG=b/80163913,b/120238339,b/152000267 BRANCH=none TEST=Verify Vayne get charged by PD and Type-C adapters. TEST=Verify on Vayne input current limit is set to adapters' limit. Change-Id: Ideecac911822ffca33be1755846febfcb822f734 Reviewed-on: https://chromium-review.googlesource.com/1377564 Commit-Ready: Daisuke Nojiri <dnojiri@chromium.org> Tested-by: Daisuke Nojiri <dnojiri@chromium.org> Reviewed-by: Jett Rink <jettrink@chromium.org> Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/platform/ec/+/2760683 Reviewed-by: Zhuohao Lee <zhuohao@chromium.org> Commit-Queue: Zhuohao Lee <zhuohao@chromium.org> Tested-by: Zhuohao Lee <zhuohao@chromium.org>
-rw-r--r--common/charge_ramp.c29
1 files changed, 22 insertions, 7 deletions
diff --git a/common/charge_ramp.c b/common/charge_ramp.c
index 86a0b454cc..415e36a816 100644
--- a/common/charge_ramp.c
+++ b/common/charge_ramp.c
@@ -19,9 +19,16 @@ test_mockable int chg_ramp_allowed(int supplier)
if (!system_is_in_rw() && system_is_locked())
return 0;
- /* Ramp DTS suppliers. */
- if (supplier == CHARGE_SUPPLIER_TYPEC_DTS)
+ switch (supplier) {
+ case CHARGE_SUPPLIER_TYPEC_DTS:
+#ifdef CONFIG_CHARGE_RAMP_HW
+ /* Need ramping for USB-C chargers as well to avoid voltage droops. */
+ case CHARGE_SUPPLIER_PD:
+ case CHARGE_SUPPLIER_TYPEC:
+#endif
return 1;
+ /* default: fall through */
+ }
/* Othewise ask the BC1.2 detect module */
return usb_charger_ramp_allowed(supplier);
@@ -29,12 +36,20 @@ test_mockable int chg_ramp_allowed(int supplier)
test_mockable int chg_ramp_max(int supplier, int sup_curr)
{
- /*
- * Ramp DTS suppliers to advertised current or predetermined
- * limit, whichever is greater.
- */
- if (supplier == CHARGE_SUPPLIER_TYPEC_DTS)
+ switch (supplier) {
+ case CHARGE_SUPPLIER_TYPEC_DTS:
+ /*
+ * Ramp DTS suppliers to advertised current or predetermined
+ * limit, whichever is greater.
+ */
return MAX(TYPEC_DTS_RAMP_MAX, sup_curr);
+#ifdef CONFIG_CHARGE_RAMP_HW
+ case CHARGE_SUPPLIER_PD:
+ case CHARGE_SUPPLIER_TYPEC:
+#endif
+ return sup_curr;
+ /* default: fall through */
+ }
/* Otherwise ask the BC1.2 detect module */
return usb_charger_ramp_max(supplier, sup_curr);