diff options
Diffstat (limited to 'board/plankton/usb_pd_policy.c')
-rw-r--r-- | board/plankton/usb_pd_policy.c | 27 |
1 files changed, 5 insertions, 22 deletions
diff --git a/board/plankton/usb_pd_policy.c b/board/plankton/usb_pd_policy.c index ab8eb6c978..8a916e65aa 100644 --- a/board/plankton/usb_pd_policy.c +++ b/board/plankton/usb_pd_policy.c @@ -74,30 +74,13 @@ int pd_is_valid_input_voltage(int mv) return 1; } -int pd_check_requested_voltage(uint32_t rdo) +int pd_board_check_request(uint32_t rdo) { - int max_ma = rdo & 0x3FF; - int op_ma = (rdo >> 10) & 0x3FF; - int idx = rdo >> 28; - uint32_t pdo; - uint32_t pdo_ma; - - if (!idx || idx > pd_src_pdo_cnts[pd_src_pdo_idx]) - return EC_ERROR_INVAL; /* Invalid index */ - - /* check current ... */ - pdo = pd_src_pdo[idx - 1]; - pdo_ma = (pdo & 0x3ff); - if (op_ma > pdo_ma) - return EC_ERROR_INVAL; /* too much op current */ - if (max_ma > pdo_ma) - return EC_ERROR_INVAL; /* too much max current */ - - CPRINTF("Requested %d V %d mA (for %d/%d mA)\n", - ((pdo >> 10) & 0x3ff) * 50, (pdo & 0x3ff) * 10, - ((rdo >> 10) & 0x3ff) * 10, (rdo & 0x3ff) * 10); + int idx = RDO_POS(rdo); - return EC_SUCCESS; + /* Check for invalid index */ + return (!idx || idx > pd_src_pdo_cnts[pd_src_pdo_idx]) ? + EC_ERROR_INVAL : EC_SUCCESS; } void pd_transition_voltage(int idx) |