summaryrefslogtreecommitdiff
path: root/board/samus_pd/usb_pd_policy.c
diff options
context:
space:
mode:
Diffstat (limited to 'board/samus_pd/usb_pd_policy.c')
-rw-r--r--board/samus_pd/usb_pd_policy.c12
1 files changed, 10 insertions, 2 deletions
diff --git a/board/samus_pd/usb_pd_policy.c b/board/samus_pd/usb_pd_policy.c
index c63debcf16..2004f6c53f 100644
--- a/board/samus_pd/usb_pd_policy.c
+++ b/board/samus_pd/usb_pd_policy.c
@@ -206,14 +206,14 @@ int pd_board_checks(void)
return EC_SUCCESS;
}
-int pd_power_swap(int port)
+int pd_check_power_swap(int port)
{
/* TODO: use battery level to decide to accept/reject power swap */
/* Always allow power swap */
return 1;
}
-int pd_data_swap(int port, int data_role)
+int pd_check_data_swap(int port, int data_role)
{
/* Allow data swap if we are a UFP, otherwise don't allow */
return (data_role == PD_ROLE_UFP) ? 1 : 0;
@@ -223,6 +223,14 @@ void pd_execute_data_swap(int port, int data_role)
{
/* TODO: when switching to UFP need to open D+/D- switches */
}
+
+void pd_new_contract(int port, int pr_role, int dr_role,
+ int partner_pr_swap, int partner_dr_swap)
+{
+ /* If UFP, try to switch to DFP */
+ if (partner_dr_swap && dr_role == PD_ROLE_UFP)
+ pd_request_data_swap(port);
+}
/* ----------------- Vendor Defined Messages ------------------ */
const struct svdm_response svdm_rsp = {
.identity = NULL,