diff options
Diffstat (limited to 'board/host/usb_pd_policy.c')
-rw-r--r-- | board/host/usb_pd_policy.c | 17 |
1 files changed, 11 insertions, 6 deletions
diff --git a/board/host/usb_pd_policy.c b/board/host/usb_pd_policy.c index 6237f05d5d..c1630aff0d 100644 --- a/board/host/usb_pd_policy.c +++ b/board/host/usb_pd_policy.c @@ -26,7 +26,8 @@ const int pd_snk_pdo_cnt = ARRAY_SIZE(pd_snk_pdo); /* Cap on the max voltage requested as a sink (in millivolts) */ static unsigned max_mv = -1; /* no cap */ -int pd_choose_voltage(int cnt, uint32_t *src_caps, uint32_t *rdo) +int pd_choose_voltage(int cnt, uint32_t *src_caps, uint32_t *rdo, + uint32_t *curr_limit, uint32_t *supply_voltage) { int i; int sel_mv; @@ -56,14 +57,17 @@ int pd_choose_voltage(int cnt, uint32_t *src_caps, uint32_t *rdo) if ((src_caps[max_i] & PDO_TYPE_MASK) == PDO_TYPE_BATTERY) { int uw = 250000 * (src_caps[max_i] & 0x3FF); *rdo = RDO_BATT(max_i + 1, uw/2, uw, 0); - CPRINTF("Request [%d] %dV %d/%d mW\n", - max_i, sel_mv/1000, uw/1000, uw/1000); + *curr_limit = uw/sel_mv; + CPRINTF("Request [%d] %dV %dmW\n", + max_i, sel_mv/1000, uw/1000); } else { int ma = 10 * (src_caps[max_i] & 0x3FF); *rdo = RDO_FIXED(max_i + 1, ma / 2, ma, 0); - CPRINTF("Request [%d] %dV %d/%d mA\n", - max_i, sel_mv/1000, max_i, ma/2, ma); + *curr_limit = ma; + CPRINTF("Request [%d] %dV %dmA\n", + max_i, sel_mv/1000, ma); } + *supply_voltage = sel_mv; return EC_SUCCESS; } @@ -109,7 +113,8 @@ void pd_power_supply_reset(int port) /* Not implemented */ } -void pd_set_input_current_limit(int port, uint32_t max_ma) +void pd_set_input_current_limit(int port, uint32_t max_ma, + uint32_t supply_voltage) { /* Not implemented */ } |