summaryrefslogtreecommitdiff
path: root/board/host/usb_pd_policy.c
diff options
context:
space:
mode:
Diffstat (limited to 'board/host/usb_pd_policy.c')
-rw-r--r--board/host/usb_pd_policy.c17
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 */
}