Re: [PATCH 1/1] usb: typec: tcpm: PSSourceOffTimer timeout in PR_Swap enters ERROR_RECOVERY

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



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);





[Index of Archives]     [Linux Kernel]     [Kernel Development Newbies]     [Linux USB Devel]     [Video for Linux]     [Linux Audio Users]     [Yosemite Hiking]     [Linux Kernel]     [Linux SCSI]

  Powered by Linux