summaryrefslogtreecommitdiff
path: root/common/charge_manager.c
diff options
context:
space:
mode:
authorVijay Hiremath <vijay.p.hiremath@intel.com>2017-01-12 12:57:52 -0800
committerchrome-bot <chrome-bot@chromium.org>2017-01-13 15:22:35 -0800
commit6a7e4a7b353c53d33d44662c71763490ffd1fdc4 (patch)
tree9ef9524663f201b8ce84b250617af2e539973e2c /common/charge_manager.c
parent9fd2736d90c598b335d689d8db5ad727194a1991 (diff)
downloadchrome-ec-6a7e4a7b353c53d33d44662c71763490ffd1fdc4.tar.gz
charge_ramp: Adjust minimum ramp current
A valid charge port is always detected as VBUS supplier type, 'USB charger' can detect the same port as BC1.2 DCP supplier type & also 'TCPC' can detect the same port as TYPEC supplier type. Thus a valid port is detected as 2 or 3 supplier types. Depending on the supplier's priority and the power that the supplier can provide, charge manager choses the charge supplier type of the port. If the USB charger detected supplier is BC1.2 DCP and the TCPC detected supplier is TYPEC then the supplier can provide stable current from TYPEC supplier's advertised current hence start ramping from TYPEC supplier's advertised current. BUG=chrome-os-partner:61420 BRANCH=none TEST=Manually tested on reef. Donette bottom port can switch from 1.5A to 3A upon high load. Change-Id: I871eca3ae4041f00bb3fd50e6aa939643f30a1f2 Signed-off-by: Vijay Hiremath <vijay.p.hiremath@intel.com> Reviewed-on: https://chromium-review.googlesource.com/427961 Commit-Ready: Vijay P Hiremath <vijay.p.hiremath@intel.com> Tested-by: Vijay P Hiremath <vijay.p.hiremath@intel.com> Reviewed-by: Shawn N <shawnn@chromium.org>
Diffstat (limited to 'common/charge_manager.c')
-rw-r--r--common/charge_manager.c24
1 files changed, 24 insertions, 0 deletions
diff --git a/common/charge_manager.c b/common/charge_manager.c
index 1c9bac377e..c0c5eded5e 100644
--- a/common/charge_manager.c
+++ b/common/charge_manager.c
@@ -16,6 +16,7 @@
#include "system.h"
#include "tcpm.h"
#include "timer.h"
+#include "usb_charge.h"
#include "usb_pd.h"
#include "usb_pd_tcpm.h"
#include "util.h"
@@ -906,6 +907,29 @@ int charge_manager_get_power_limit_uw(void)
return current_ma * voltage_mv;
}
+#ifdef HAS_TASK_CHG_RAMP
+int charge_manager_get_ramp_start_current(int port, int supplier)
+{
+ /*
+ * A valid charge port is always detected as VBUS supplier type,
+ * 'USB charger' can detect the same port as BC1.2 DCP supplier type
+ * & also 'TCPC' can detect the same port as TYPEC supplier type. Thus
+ * a valid port is detected as 2 or 3 supplier types. Depending on the
+ * supplier's priority and the power that the supplier can provide,
+ * charge manager choses the charge supplier type of the port.
+ *
+ * If the USB charger detected supplier is BC1.2 DCP and the TCPC
+ * detected supplier is TYPEC then the supplier can provide stable
+ * current from TYPEC supplier's advertised current hence start
+ * ramping from TYPEC supplier's advertised current.
+ */
+ return (supplier == CHARGE_SUPPLIER_BC12_DCP &&
+ available_charge[CHARGE_SUPPLIER_TYPEC][port].current) ?
+ available_charge[CHARGE_SUPPLIER_TYPEC][port].current :
+ USB_CHARGER_MIN_CURR_MA;
+}
+#endif
+
#ifdef CONFIG_USB_PD_MAX_SINGLE_SOURCE_CURRENT
void charge_manager_source_port(int port, int enable)
{