Skip to content
Snippets Groups Projects
Commit c71c43a5 authored by Badhri Jagan Sridharan's avatar Badhri Jagan Sridharan
Browse files

usb: fusb302: Inform TCPM about the change in status.


[  338.436989] Start DRP toggling
[  341.863236] CC1: 0 -> 2, CC2: 0 -> 0 [state DRP_TOGGLING, polarity 0, connected]
[  341.863267] state change DRP_TOGGLING -> SRC_ATTACH_WAIT
[  341.863426] pending state change SRC_ATTACH_WAIT -> SNK_TRY @ 200 ms
[  342.063476] state change SRC_ATTACH_WAIT -> SNK_TRY [delayed 200 ms]
[  342.063504] cc:=2
[  342.070744] pending state change SNK_TRY -> SNK_TRY_WAIT @ 100 ms
[  342.170126] state change SNK_TRY -> SNK_TRY_WAIT [delayed 100 ms]
[  342.170157] pending state change SNK_TRY_WAIT -> SRC_TRYWAIT @ 20 ms
[  342.190152] state change SNK_TRY_WAIT -> SRC_TRYWAIT [delayed 20 ms]
[  342.190176] cc:=3
[  342.197857] pending state change SRC_TRYWAIT -> SRC_ATTACHED @ 200 ms

When tcpm calls set_cc, fusb302 driver assigns open status but does not
report the open status back to tcpm. So, when SNK_TRY fails and TCPM
falls back to making the port to SOURCE by entering SRC_TRYWAIT,
the port enter SRC_ATTACHED even if the remote port didnt assert Rd.

Bug: 62328786
Change-Id: I716d569fac9de48ab511cdc76867ec758cea0997
Signed-off-by: default avatarBadhri Jagan Sridharan <Badhri@google.com>
parent 7122f814
Branches
Tags
No related merge requests found
......@@ -609,6 +609,8 @@ static int tcpm_set_cc(struct tcpc_dev *dev, enum typec_cc_status cc)
/* reset the cc status */
chip->cc1 = TYPEC_CC_OPEN;
chip->cc2 = TYPEC_CC_OPEN;
/* report OPEN status back to TCPM */
tcpm_cc_change(chip->tcpm_port);
/* adjust current for SRC */
if (pull_up) {
ret = fusb302_set_src_current(chip, cc_src_current[cc]);
......
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please to comment