On Mon, Feb 10, 2025 at 3:02 PM Amit Sunil Dhamne <amitsd@xxxxxxxxxx> wrote: > > > On 2/8/25 11:17 PM, joswang wrote: > > From: Jos Wang <joswang@xxxxxxxxxx> nit: From https://elixir.bootlin.com/linux/v6.13.1/source/Documentation/process/submitting-patches.rst#L619 - A ``from`` line specifying the patch author, followed by an empty line (only needed if the person sending the patch is not the author). Given that you are the author, wondering why do you have an explicit "From:" ? > > > > As PD2.0 spec ("6.5.6.2 PSSourceOffTimer"),the PSSourceOffTimer is nit: https://elixir.bootlin.com/linux/v6.13.1/source/Documentation/process/submitting-patches.rst#L619 - The body of the explanation, line wrapped at 75 columns, which will be copied to the permanent changelog to describe this patch. > > used by the Policy Engine in Dual-Role Power device that is currently > > acting as a Sink to timeout on a PS_RDY Message during a Power Role > > Swap sequence. This condition leads to a Hard Reset for USB Type-A and > > Type-B Plugs and Error Recovery for Type-C plugs and return to USB > > Default Operation. > > > > Therefore, after PSSourceOffTimer timeout, the tcpm state machine should > > switch from PR_SWAP_SNK_SRC_SINK_OFF to ERROR_RECOVERY. This can also solve > > the test items in the USB power delivery compliance test: > > TEST.PD.PROT.SNK.12 PR_Swap – PSSourceOffTimer Timeout Thanks for fixing this ! > > > > [1] https://usb.org/document-library/usb-power-delivery-compliance-test-specification-0/USB_PD3_CTS_Q4_2025_OR.zip > > > > Fixes: f0690a25a140 ("staging: typec: USB Type-C Port Manager (tcpm)") > > Cc: stable@xxxxxxxxxxxxxxx > > nit: Empty line not needed here. > > Signed-off-by: Jos Wang <joswang@xxxxxxxxxx> > > Tested-by: Amit Sunil Dhamne <amitsd@xxxxxxxxxx> > > > Regards, > > Amit > > > --- > > drivers/usb/typec/tcpm/tcpm.c | 3 +-- > > 1 file changed, 1 insertion(+), 2 deletions(-) > > > > diff --git a/drivers/usb/typec/tcpm/tcpm.c b/drivers/usb/typec/tcpm/tcpm.c > > index 47be450d2be3..6bf1a22c785a 100644 > > --- a/drivers/usb/typec/tcpm/tcpm.c > > +++ b/drivers/usb/typec/tcpm/tcpm.c > > @@ -5591,8 +5591,7 @@ static void run_state_machine(struct tcpm_port *port) > > tcpm_set_auto_vbus_discharge_threshold(port, TYPEC_PWR_MODE_USB, > > port->pps_data.active, 0); > > tcpm_set_charge(port, false); > > - tcpm_set_state(port, hard_reset_state(port), > > - port->timings.ps_src_off_time); > > + tcpm_set_state(port, ERROR_RECOVERY, port->timings.ps_src_off_time); > > break; > > case PR_SWAP_SNK_SRC_SOURCE_ON: > > tcpm_enable_auto_vbus_discharge(port, true);