Lines Matching full:pdo

217  * Based on "Table 6-14 Fixed Supply PDO - Sink" of "USB Power Delivery Specification Revision 3.0,
558 const u32 pdo = src_pdo[i]; in tcpm_rp_cc() local
560 if (pdo_type(pdo) == PDO_TYPE_FIXED && in tcpm_rp_cc()
561 pdo_fixed_voltage(pdo) == 5000) { in tcpm_rp_cc()
562 unsigned int curr = pdo_max_current(pdo); in tcpm_rp_cc()
936 static enum pdo_err tcpm_caps_err(struct tcpm_port *port, const u32 *pdo, in tcpm_caps_err() argument
946 if (pdo_type(pdo[0]) != PDO_TYPE_FIXED || in tcpm_caps_err()
947 pdo_fixed_voltage(pdo[0]) != VSAFE5V) in tcpm_caps_err()
951 if (pdo_type(pdo[i]) < pdo_type(pdo[i - 1])) { in tcpm_caps_err()
953 } else if (pdo_type(pdo[i]) == pdo_type(pdo[i - 1])) { in tcpm_caps_err()
954 enum pd_pdo_type type = pdo_type(pdo[i]); in tcpm_caps_err()
963 if (pdo_fixed_voltage(pdo[i]) <= in tcpm_caps_err()
964 pdo_fixed_voltage(pdo[i - 1])) in tcpm_caps_err()
974 if (pdo_min_voltage(pdo[i]) < in tcpm_caps_err()
975 pdo_min_voltage(pdo[i - 1])) in tcpm_caps_err()
977 else if ((pdo_min_voltage(pdo[i]) == in tcpm_caps_err()
978 pdo_min_voltage(pdo[i - 1])) && in tcpm_caps_err()
979 (pdo_max_voltage(pdo[i]) == in tcpm_caps_err()
980 pdo_max_voltage(pdo[i - 1]))) in tcpm_caps_err()
989 if (pdo_apdo_type(pdo[i]) != APDO_TYPE_PPS) in tcpm_caps_err()
992 if (pdo_pps_apdo_max_voltage(pdo[i]) < in tcpm_caps_err()
993 pdo_pps_apdo_max_voltage(pdo[i - 1])) in tcpm_caps_err()
995 else if (pdo_pps_apdo_min_voltage(pdo[i]) == in tcpm_caps_err()
996 pdo_pps_apdo_min_voltage(pdo[i - 1]) && in tcpm_caps_err()
997 pdo_pps_apdo_max_voltage(pdo[i]) == in tcpm_caps_err()
998 pdo_pps_apdo_max_voltage(pdo[i - 1]) && in tcpm_caps_err()
999 pdo_pps_apdo_max_current(pdo[i]) == in tcpm_caps_err()
1000 pdo_pps_apdo_max_current(pdo[i - 1])) in tcpm_caps_err()
1004 printf("%s: Unknown pdo type\n", __func__); in tcpm_caps_err()
1012 static int tcpm_validate_caps(struct tcpm_port *port, const u32 *pdo, in tcpm_validate_caps() argument
1015 enum pdo_err err_index = tcpm_caps_err(port, pdo, nr_pdo); in tcpm_validate_caps()
1486 u32 pdo, rdo = port->sink_request; in tcpm_pd_check_request() local
1494 pdo = port->src_pdo[index - 1]; in tcpm_pd_check_request()
1495 type = pdo_type(pdo); in tcpm_pd_check_request()
1501 pdo_max = pdo_max_current(pdo); in tcpm_pd_check_request()
1510 pdo_fixed_voltage(pdo), pdo_max, op, max); in tcpm_pd_check_request()
1513 pdo_min_voltage(pdo), pdo_max_voltage(pdo), in tcpm_pd_check_request()
1519 pdo_max = pdo_max_power(pdo); in tcpm_pd_check_request()
1526 pdo_min_voltage(pdo), pdo_max_voltage(pdo), in tcpm_pd_check_request()
1553 * Select the source PDO providing the most power which has a in tcpm_pd_select_pdo()
1557 u32 pdo = port->source_caps[i]; in tcpm_pd_select_pdo() local
1558 enum pd_pdo_type type = pdo_type(pdo); in tcpm_pd_select_pdo()
1562 max_src_mv = pdo_fixed_voltage(pdo); in tcpm_pd_select_pdo()
1567 max_src_mv = pdo_max_voltage(pdo); in tcpm_pd_select_pdo()
1568 min_src_mv = pdo_min_voltage(pdo); in tcpm_pd_select_pdo()
1571 if (pdo_apdo_type(pdo) == APDO_TYPE_PPS) { in tcpm_pd_select_pdo()
1578 printf("Invalid source PDO type, ignoring\n"); in tcpm_pd_select_pdo()
1585 src_ma = pdo_max_current(pdo); in tcpm_pd_select_pdo()
1589 src_mw = pdo_max_power(pdo); in tcpm_pd_select_pdo()
1594 printf("Invalid source PDO type, ignoring\n"); in tcpm_pd_select_pdo()
1599 pdo = port->snk_pdo[j]; in tcpm_pd_select_pdo()
1601 switch (pdo_type(pdo)) { in tcpm_pd_select_pdo()
1603 max_snk_mv = pdo_fixed_voltage(pdo); in tcpm_pd_select_pdo()
1608 max_snk_mv = pdo_max_voltage(pdo); in tcpm_pd_select_pdo()
1609 min_snk_mv = pdo_min_voltage(pdo); in tcpm_pd_select_pdo()
1614 printf("Invalid sink PDO type, ignoring\n"); in tcpm_pd_select_pdo()
1645 u32 pdo, src, snk; in tcpm_pd_select_pps_apdo() local
1650 * within the board's limits. We skip the first PDO as this is always in tcpm_pd_select_pps_apdo()
1654 pdo = port->source_caps[i]; in tcpm_pd_select_pps_apdo()
1656 switch (pdo_type(pdo)) { in tcpm_pd_select_pps_apdo()
1658 if (pdo_apdo_type(pdo) != APDO_TYPE_PPS) { in tcpm_pd_select_pps_apdo()
1663 min_src_mv = pdo_pps_apdo_min_voltage(pdo); in tcpm_pd_select_pps_apdo()
1664 max_src_mv = pdo_pps_apdo_max_voltage(pdo); in tcpm_pd_select_pps_apdo()
1665 src_ma = pdo_pps_apdo_max_current(pdo); in tcpm_pd_select_pps_apdo()
1670 * PPS APDO. Again skip the first sink PDO as this will in tcpm_pd_select_pps_apdo()
1674 pdo = port->snk_pdo[j]; in tcpm_pd_select_pps_apdo()
1676 switch (pdo_type(pdo)) { in tcpm_pd_select_pps_apdo()
1678 if (pdo_apdo_type(pdo) != APDO_TYPE_PPS) { in tcpm_pd_select_pps_apdo()
1684 pdo_pps_apdo_min_voltage(pdo); in tcpm_pd_select_pps_apdo()
1686 pdo_pps_apdo_max_voltage(pdo); in tcpm_pd_select_pps_apdo()
1740 u32 pdo, matching_snk_pdo; in tcpm_pd_build_request() local
1749 pdo = port->source_caps[src_pdo_index]; in tcpm_pd_build_request()
1751 type = pdo_type(pdo); in tcpm_pd_build_request()
1755 mv = pdo_fixed_voltage(pdo); in tcpm_pd_build_request()
1759 mv = pdo_min_voltage(pdo); in tcpm_pd_build_request()
1762 printf("Invalid PDO selected!\n"); in tcpm_pd_build_request()
1766 /* Select maximum available current within the sink pdo's limit */ in tcpm_pd_build_request()
1768 mw = min_power(pdo, matching_snk_pdo); in tcpm_pd_build_request()
1771 ma = min_current(pdo, matching_snk_pdo); in tcpm_pd_build_request()
1783 (pdo_max_power(matching_snk_pdo) > pdo_max_power(pdo))) in tcpm_pd_build_request()
1786 pdo_max_current(pdo)) in tcpm_pd_build_request()
1798 printf("Requesting PDO %d: %u mV, %u mW%s\n", in tcpm_pd_build_request()
1804 printf("Requesting PDO %d: %u mV, %u mA%s\n", in tcpm_pd_build_request()
1841 u32 pdo; in tcpm_pd_build_pps_request() local
1847 pdo = port->source_caps[src_pdo_index]; in tcpm_pd_build_pps_request()
1848 type = pdo_type(pdo); in tcpm_pd_build_pps_request()
1852 if (pdo_apdo_type(pdo) != APDO_TYPE_PPS) { in tcpm_pd_build_pps_request()
1862 printf("Invalid PDO selected!\n"); in tcpm_pd_build_pps_request()
2464 * safely fall back to a standard PDO. in run_state_machine()