mirror of
https://mirrors.bfsu.edu.cn/git/linux.git
synced 2024-12-15 15:04:27 +08:00
usb: typec: tcpm: During PR_SWAP, source caps should be sent only after tSwapSourceStart
The patch addresses the compliance test failures while running TD.PD.CP.E3, TD.PD.CP.E4, TD.PD.CP.E5 of the "Deterministic PD Compliance MOI" test plan published in https://www.usb.org/usbc. For a product to be Type-C compliant, it's expected that these tests are run on usb.org certified Type-C compliance tester as mentioned in https://www.usb.org/usbc. The purpose of the tests TD.PD.CP.E3, TD.PD.CP.E4, TD.PD.CP.E5 is to verify the PR_SWAP response of the device. While doing so, the test asserts that Source Capabilities message is NOT received from the test device within tSwapSourceStart min (20 ms) from the time the last bit of GoodCRC corresponding to the RS_RDY message sent by the UUT was sent. If it does then the test fails. This is in line with the requirements from the USB Power Delivery Specification Revision 3.0, Version 1.2: "6.6.8.1 SwapSourceStartTimer The SwapSourceStartTimer Shall be used by the new Source, after a Power Role Swap or Fast Role Swap, to ensure that it does not send Source_Capabilities Message before the new Sink is ready to receive the Source_Capabilities Message. The new Source Shall Not send the Source_Capabilities Message earlier than tSwapSourceStart after the last bit of the EOP of GoodCRC Message sent in response to the PS_RDY Message sent by the new Source indicating that its power supply is ready." The patch makes sure that TCPM does not send the Source_Capabilities Message within tSwapSourceStart(20ms) by transitioning into SRC_STARTUP only after tSwapSourceStart(20ms). Signed-off-by: Badhri Jagan Sridharan <badhri@google.com> Reviewed-by: Guenter Roeck <linux@roeck-us.net> Reviewed-by: Heikki Krogerus <heikki.krogerus@linux.intel.com> Link: https://lore.kernel.org/r/20200817183828.1895015-1-badhri@google.com Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
This commit is contained in:
parent
e199d94691
commit
6bbe2a90a0
@ -3555,7 +3555,7 @@ static void run_state_machine(struct tcpm_port *port)
|
||||
*/
|
||||
tcpm_set_pwr_role(port, TYPEC_SOURCE);
|
||||
tcpm_pd_send_control(port, PD_CTRL_PS_RDY);
|
||||
tcpm_set_state(port, SRC_STARTUP, 0);
|
||||
tcpm_set_state(port, SRC_STARTUP, PD_T_SWAP_SRC_START);
|
||||
break;
|
||||
|
||||
case VCONN_SWAP_ACCEPT:
|
||||
|
@ -473,6 +473,7 @@ static inline unsigned int rdo_max_power(u32 rdo)
|
||||
#define PD_T_ERROR_RECOVERY 100 /* minimum 25 is insufficient */
|
||||
#define PD_T_SRCSWAPSTDBY 625 /* Maximum of 650ms */
|
||||
#define PD_T_NEWSRC 250 /* Maximum of 275ms */
|
||||
#define PD_T_SWAP_SRC_START 20 /* Minimum of 20ms */
|
||||
|
||||
#define PD_T_DRP_TRY 100 /* 75 - 150 ms */
|
||||
#define PD_T_DRP_TRYWAIT 600 /* 400 - 800 ms */
|
||||
|
Loading…
Reference in New Issue
Block a user