diff options
author | Vic Yang <victoryang@google.com> | 2015-01-22 14:01:13 -0800 |
---|---|---|
committer | ChromeOS Commit Bot <chromeos-commit-bot@chromium.org> | 2015-01-24 01:45:52 +0000 |
commit | cf77f90f2caf562fd6b9270c1debc2df5f118c3a (patch) | |
tree | 59d1fd1bf4d8b94584cf1b8677010b3e0a373544 | |
parent | 48eed0bebc403ebdccae7810fccc7a467da4125b (diff) | |
download | chrome-ec-cf77f90f2caf562fd6b9270c1debc2df5f118c3a.tar.gz |
pd: Honor both max power and current for all power source
Currently, we only use PD_MAX_POWER_MW for battery power source and
PD_MAX_CURRENT_MA for other sources. This change makes it so that both
limits are honored no matter what the power source is.
BRANCH=Ryu
BUG=None
TEST=Set current limit to 1A on Ryu and charge from Zinger. Make sure
only 1A is pulled.
Change-Id: If9b2451f1351c6548b831d36c8162b2f86f42492
Signed-off-by: Vic Yang <victoryang@google.com>
Reviewed-on: https://chromium-review.googlesource.com/242629
Reviewed-by: Vincent Palatin <vpalatin@chromium.org>
Reviewed-by: Alec Berg <alecaberg@chromium.org>
Commit-Queue: Vic Yang <victoryang@chromium.org>
Tested-by: Vic Yang <victoryang@chromium.org>
-rw-r--r-- | common/usb_pd_policy.c | 4 |
1 files changed, 2 insertions, 2 deletions
diff --git a/common/usb_pd_policy.c b/common/usb_pd_policy.c index ebe6d6e8bc..fc1884e991 100644 --- a/common/usb_pd_policy.c +++ b/common/usb_pd_policy.c @@ -96,10 +96,10 @@ static void pd_extract_pdo_power(uint32_t pdo, uint32_t *ma, uint32_t *mv) max_ma = 1000 * MIN(1000 * uw, PD_MAX_POWER_MW) / *mv; } else { max_ma = 10 * (pdo & 0x3FF); - max_ma = MIN(max_ma, PD_MAX_CURRENT_MA); + max_ma = MIN(max_ma, PD_MAX_POWER_MW * 1000 / *mv); } - *ma = max_ma; + *ma = MIN(max_ma, PD_MAX_CURRENT_MA); } int pd_build_request(int cnt, uint32_t *src_caps, uint32_t *rdo, |