Skip to content

Commit bb0e959

Browse files
usb_c: policy engine: Always notify on datarole change
Always use the pe_set_data_role function to switch the datarole. Move the notify call to this function, so that there is always a notification when the data-role is set. Signed-off-by: Alexander Wachter <alexander@wachter.cloud>
1 parent b6a5e6e commit bb0e959

1 file changed

Lines changed: 4 additions & 9 deletions

File tree

subsys/usb/usb_c/usbc_pe_common.c

Lines changed: 4 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -208,6 +208,8 @@ void pe_set_data_role(const struct device *dev, enum tc_data_role dr)
208208

209209
/* Notify TCPC of role update */
210210
tcpc_set_roles(data->tcpc, pe->power_role, pe->data_role);
211+
/* Inform Device Policy Manager of Data Role Change */
212+
policy_notify(dev, (dr == TC_ROLE_UFP) ? DATA_ROLE_IS_UFP : DATA_ROLE_IS_DFP);
211213
}
212214

213215
/**
@@ -795,9 +797,6 @@ static enum smf_state_result pe_drs_evaluate_swap_run(void *obj)
795797
/* Update Data Role */
796798
pe_set_data_role(dev, (pe->data_role == TC_ROLE_UFP) ? TC_ROLE_DFP
797799
: TC_ROLE_UFP);
798-
/* Inform Device Policy Manager of Data Role Change */
799-
policy_notify(dev, (pe->data_role == TC_ROLE_UFP) ? DATA_ROLE_IS_UFP
800-
: DATA_ROLE_IS_DFP);
801800
}
802801
pe_set_ready_state(dev);
803802
} else if (atomic_test_and_clear_bit(pe->flags, PE_FLAGS_MSG_DISCARDED)) {
@@ -856,12 +855,8 @@ static enum smf_state_result pe_drs_send_swap_run(void *obj)
856855
}
857856
} else if (received_control_message(dev, header, PD_CTRL_ACCEPT)) {
858857
/* Update Data Role */
859-
pe->data_role = (pe->data_role == TC_ROLE_UFP) ? TC_ROLE_DFP : TC_ROLE_UFP;
860-
/* Notify TCPC of role update */
861-
tcpc_set_roles(data->tcpc, pe->power_role, pe->data_role);
862-
/* Inform Device Policy Manager of Data Role Change */
863-
policy_notify(dev, (pe->data_role == TC_ROLE_UFP) ? DATA_ROLE_IS_UFP
864-
: DATA_ROLE_IS_DFP);
858+
pe_set_data_role(dev, (pe->data_role == TC_ROLE_UFP) ? TC_ROLE_DFP
859+
: TC_ROLE_UFP);
865860
} else {
866861
/*
867862
* A Protocol Error during a Data Role Swap when the

0 commit comments

Comments
 (0)