From e9d8a8cfb5d4088c2af806d6bc4261792cff3355 Mon Sep 17 00:00:00 2001 From: Vic Yang Date: Mon, 14 Jul 2014 11:14:28 -0700 Subject: [PATCH] Bug fixes for USB PD policies We used the incorrect src_caps index when choosing PD voltage. Let's fix it to ask for all available power until we are able to ask only for what we need. BUG=None TEST=make buildall BRANCH=None Change-Id: I068264246c2586b8192220eff47838da438899b0 Signed-off-by: Vic Yang Reviewed-on: https://chromium-review.googlesource.com/207802 Reviewed-by: Alec Berg Reviewed-by: Vincent Palatin --- board/fruitpie/usb_pd_policy.c | 2 +- board/ryu/usb_pd_policy.c | 2 +- board/samus_pd/usb_pd_policy.c | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/board/fruitpie/usb_pd_policy.c b/board/fruitpie/usb_pd_policy.c index 17a21e335b..0ddeed9916 100644 --- a/board/fruitpie/usb_pd_policy.c +++ b/board/fruitpie/usb_pd_policy.c @@ -60,7 +60,7 @@ int pd_choose_voltage(int cnt, uint32_t *src_caps, uint32_t *rdo) /* request all the power ... */ if ((src_caps[max_i] & PDO_TYPE_MASK) == PDO_TYPE_BATTERY) { - int uw = 250000 * (src_caps[i] & 0x3FF); + int uw = 250000 * (src_caps[max_i] & 0x3FF); *rdo = RDO_BATT(max_i + 1, uw/2, uw, 0); ccprintf("Request [%d] %dV %d/%d mW\n", max_i, sel_mv/1000, uw/1000, uw/1000); diff --git a/board/ryu/usb_pd_policy.c b/board/ryu/usb_pd_policy.c index 64f8f9135b..323a909585 100644 --- a/board/ryu/usb_pd_policy.c +++ b/board/ryu/usb_pd_policy.c @@ -61,7 +61,7 @@ int pd_choose_voltage(int cnt, uint32_t *src_caps, uint32_t *rdo) /* request all the power ... */ if ((src_caps[max_i] & PDO_TYPE_MASK) == PDO_TYPE_BATTERY) { - int uw = 250000 * (src_caps[i] & 0x3FF); + int uw = 250000 * (src_caps[max_i] & 0x3FF); *rdo = RDO_BATT(max_i + 1, uw/2, uw, 0); ccprintf("Request [%d] %dV %d/%d mW\n", max_i, sel_mv/1000, uw/1000, uw/1000); diff --git a/board/samus_pd/usb_pd_policy.c b/board/samus_pd/usb_pd_policy.c index 1129d3b324..a99900b307 100644 --- a/board/samus_pd/usb_pd_policy.c +++ b/board/samus_pd/usb_pd_policy.c @@ -68,7 +68,7 @@ int pd_choose_voltage(int cnt, uint32_t *src_caps, uint32_t *rdo) /* request all the power ... */ if ((src_caps[max_i] & PDO_TYPE_MASK) == PDO_TYPE_BATTERY) { - int uw = 250000 * (src_caps[i] & 0x3FF); + int uw = 250000 * (src_caps[max_i] & 0x3FF); *rdo = RDO_BATT(max_i + 1, uw/2, uw, 0); ccprintf("Request [%d] %dV %d/%d mW\n", max_i, sel_mv/1000, uw/1000, uw/1000);