Commit 36f7847
usb: typec: tcpm: Fix altmode re-registration causes sysfs create fail
There's the altmode re-registeration issue after data role
swap (DR_SWAP).
Comparing to USBPD 2.0, in USBPD 3.0, it loose the limit that only DFP
can initiate the VDM command to get partner identity information.
For a USBPD 3.0 UFP device, it may already get the identity information
from its port partner before DR_SWAP. If DR_SWAP send or receive at the
mean time, 'send_discover' flag will be raised again. It causes discover
identify action restart while entering ready state. And after all
discover actions are done, the 'tcpm_register_altmodes' will be called.
If old altmode is not unregistered, this sysfs create fail can be found.
In 'DR_SWAP_CHANGE_DR' state case, only DFP will unregister altmodes.
For UFP, the original altmodes keep registered.
This patch fix the logic that after DR_SWAP, 'tcpm_unregister_altmodes'
must be called whatever the current data role is.
Reviewed-by: Macpaul Lin <[email protected]>
Fixes: ae8a2ca ("usb: typec: Group all TCPCI/TCPM code together")
Reported-by: TommyYl Chen <[email protected]>
Cc: [email protected]
Signed-off-by: ChiYuan Huang <[email protected]>
Acked-by: Heikki Krogerus <[email protected]>
Link: https://lore.kernel.org/r/[email protected]
Signed-off-by: Greg Kroah-Hartman <[email protected]>1 parent e95765e commit 36f7847
1 file changed
+3
-4
lines changed| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
4594 | 4594 | | |
4595 | 4595 | | |
4596 | 4596 | | |
4597 | | - | |
4598 | | - | |
| 4597 | + | |
| 4598 | + | |
4599 | 4599 | | |
4600 | 4600 | | |
4601 | | - | |
| 4601 | + | |
4602 | 4602 | | |
4603 | 4603 | | |
4604 | | - | |
4605 | 4604 | | |
4606 | 4605 | | |
4607 | 4606 | | |
| |||
0 commit comments