diff options
author | Vijay Hiremath <vijay.p.hiremath@intel.com> | 2017-01-12 12:57:52 -0800 |
---|---|---|
committer | chrome-bot <chrome-bot@chromium.org> | 2017-01-13 15:22:35 -0800 |
commit | 6a7e4a7b353c53d33d44662c71763490ffd1fdc4 (patch) | |
tree | 9ef9524663f201b8ce84b250617af2e539973e2c /common/charge_manager.c | |
parent | 9fd2736d90c598b335d689d8db5ad727194a1991 (diff) | |
download | chrome-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.c | 24 |
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) { |