Re: [PATCH 1/1] usb: pd: fix the SenderResponseTimer conform to specification
From: Greg KH
Date: Sun Jan 05 2025 - 08:00:41 EST
On Sun, Jan 05, 2025 at 08:52:51PM +0800, joswang wrote:
> From: Jos Wang <joswang@xxxxxxxxxx>
>
> According to the USB PD3 CTS specification
> (https://usb.org/document-library/
> usb-power-delivery-compliance-test-specification-0/
> USB_PD3_CTS_Q4_2024_OR.zip), the requirements for
Please put urls on one line so that they can be linked to correctly.
> tSenderResponse are different in PD2 and PD3 modes, see
> Table 19 Timing Table & Calculations. For PD2 mode, the
> tSenderResponse min 24ms and max 30ms; for PD3 mode, the
> tSenderResponse min 27ms and max 33ms.
>
> For the "TEST.PD.PROT.SRC.2 Get_Source_Cap No Request" test
> item, after receiving the Source_Capabilities Message sent by
> the UUT, the tester deliberately does not send a Request Message
> in order to force the SenderResponse timer on the Source UUT to
> timeout. The Tester checks that a Hard Reset is detected between
> tSenderResponse min and max,the delay is between the last bit of
> the GoodCRC Message EOP has been sent and the first bit of Hard
> Reset SOP has been received. The current code does not distinguish
> between PD2 and PD3 modes, and tSenderResponse defaults to 60ms.
> This will cause this test item and the following tests to fail:
> TEST.PD.PROT.SRC3.2 SenderResponseTimer Timeout
> TEST.PD.PROT.SNK.6 SenderResponseTimer Timeout
>
> Set the SenderResponseTimer timeout to 27ms to meet the PD2
> and PD3 mode requirements.
>
> Fixes: f0690a25a140 ("staging: typec: USB Type-C Port Manager (tcpm)")
> Cc: stable@xxxxxxxxxxxxxxx
> Signed-off-by: Jos Wang <joswang@xxxxxxxxxx>
> ---
> include/linux/usb/pd.h | 2 +-
> 1 file changed, 1 insertion(+), 1 deletion(-)
>
> diff --git a/include/linux/usb/pd.h b/include/linux/usb/pd.h
> index 3068c3084eb6..99ca49bbf376 100644
> --- a/include/linux/usb/pd.h
> +++ b/include/linux/usb/pd.h
> @@ -475,7 +475,7 @@ static inline unsigned int rdo_max_power(u32 rdo)
> #define PD_T_NO_RESPONSE 5000 /* 4.5 - 5.5 seconds */
> #define PD_T_DB_DETECT 10000 /* 10 - 15 seconds */
> #define PD_T_SEND_SOURCE_CAP 150 /* 100 - 200 ms */
> -#define PD_T_SENDER_RESPONSE 60 /* 24 - 30 ms, relaxed */
> +#define PD_T_SENDER_RESPONSE 27 /* 24 - 30 ms */
Why 27 and not 30? The comment seems odd here, right?
thanks,
greg k-h