summaryrefslogtreecommitdiff
path: root/driver/charger/rt946x.c
diff options
context:
space:
mode:
authorYilun Lin <yllin@google.com>2019-05-27 17:22:41 +0800
committerCommit Bot <commit-bot@chromium.org>2019-06-12 09:35:48 +0000
commit3f7fa9b08875f332d2d80f4fa9096ad57491bba5 (patch)
tree1334b152bfbe0b64e72f6d3ea4f1dd4808223b1d /driver/charger/rt946x.c
parent97032bc99dd5f275e600364a1c1cce5392a13c8f (diff)
downloadchrome-ec-3f7fa9b08875f332d2d80f4fa9096ad57491bba5.tar.gz
charger/rt946x: Support software ramping API.
Add usb_charger_ramp_allowed() and usb_Charger_ramp_max() API. Also, targets DCP ramping voltage to 2000mA(charger support maximum is 3500mA), a conservative value to prevent a bad charger. TEST=With CL:1610385, plug a DCP 5V/2.1A charger and see it ramps and drains up to 1.75A, rather than original 1.34A. BUG=b:131284131 BRANCH=None Change-Id: I1e87badbca8991862186fc37227d203cfb54bce3 Signed-off-by: Yilun Lin <yllin@google.com> Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/platform/ec/+/1633930 Commit-Queue: Yilun Lin <yllin@chromium.org> Tested-by: Yilun Lin <yllin@chromium.org> Reviewed-by: Daisuke Nojiri <dnojiri@chromium.org>
Diffstat (limited to 'driver/charger/rt946x.c')
-rw-r--r--driver/charger/rt946x.c15
1 files changed, 14 insertions, 1 deletions
diff --git a/driver/charger/rt946x.c b/driver/charger/rt946x.c
index 4573943197..3d5722ae09 100644
--- a/driver/charger/rt946x.c
+++ b/driver/charger/rt946x.c
@@ -913,8 +913,11 @@ static int rt946x_get_bc12_device_type(void)
static int rt946x_get_bc12_ilim(int charge_supplier)
{
switch (charge_supplier) {
- case CHARGE_SUPPLIER_BC12_CDP:
case CHARGE_SUPPLIER_BC12_DCP:
+ if (IS_ENABLED(CONFIG_CHARGE_RAMP_SW))
+ /* A conservative value to prevent a bad charger. */
+ return 2000;
+ case CHARGE_SUPPLIER_BC12_CDP:
return 1500;
case CHARGE_SUPPLIER_BC12_SDP:
default:
@@ -988,6 +991,16 @@ void usb_charger_task(void *u)
task_wait_event(-1);
}
}
+
+int usb_charger_ramp_allowed(int supplier)
+{
+ return supplier == CHARGE_SUPPLIER_BC12_DCP;
+}
+
+int usb_charger_ramp_max(int supplier, int sup_curr)
+{
+ return rt946x_get_bc12_ilim(supplier);
+}
#endif /* HAS_TASK_USB_CHG */
/* Non-standard interface functions */