Message ID | 20201210160521.3417426-5-gregkh@linuxfoundation.org (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
Series | USB: typec: various patches | expand |
On Thu, Dec 10, 2020 at 05:05:20PM +0100, Greg Kroah-Hartman wrote: > From: Kyle Tso <kyletso@google.com> > > TCPM state machine needs 20-25ms to enter the ErrorRecovery state after > tPSSourceOn timer timeouts. Change the timer from max 480ms to 450ms to > ensure that the timer complies with the Spec. In order to keep the > flexibility for other usecases using tPSSourceOn, add another timer only > for PR_SWAP. > > Cc: Guenter Roeck <linux@roeck-us.net> > Cc: Heikki Krogerus <heikki.krogerus@linux.intel.com> > Cc: Badhri Jagan Sridharan <badhri@google.com> > Signed-off-by: Kyle Tso <kyletso@google.com> > Signed-off-by: Will McVicker <willmcvicker@google.com> > Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org> Reviewed-by: Guenter Roeck <linux@roeck-us.net> > --- > drivers/usb/typec/tcpm/tcpm.c | 2 +- > include/linux/usb/pd.h | 1 + > 2 files changed, 2 insertions(+), 1 deletion(-) > > diff --git a/drivers/usb/typec/tcpm/tcpm.c b/drivers/usb/typec/tcpm/tcpm.c > index d51c45961893..5ed78194a1bd 100644 > --- a/drivers/usb/typec/tcpm/tcpm.c > +++ b/drivers/usb/typec/tcpm/tcpm.c > @@ -3728,7 +3728,7 @@ static void run_state_machine(struct tcpm_port *port) > tcpm_set_state(port, ERROR_RECOVERY, 0); > break; > } > - tcpm_set_state(port, ERROR_RECOVERY, PD_T_PS_SOURCE_ON); > + tcpm_set_state(port, ERROR_RECOVERY, PD_T_PS_SOURCE_ON_PRS); > break; > case PR_SWAP_SRC_SNK_SINK_ON: > /* Set the vbus disconnect threshold for implicit contract */ > diff --git a/include/linux/usb/pd.h b/include/linux/usb/pd.h > index 63a66dd5d832..bb9a782e1411 100644 > --- a/include/linux/usb/pd.h > +++ b/include/linux/usb/pd.h > @@ -466,6 +466,7 @@ static inline unsigned int rdo_max_power(u32 rdo) > #define PD_T_DRP_SRC 30 > #define PD_T_PS_SOURCE_OFF 920 > #define PD_T_PS_SOURCE_ON 480 > +#define PD_T_PS_SOURCE_ON_PRS 450 /* 390 - 480ms */ > #define PD_T_PS_HARD_RESET 30 > #define PD_T_SRC_RECOVER 760 > #define PD_T_SRC_RECOVER_MAX 1000 > -- > 2.29.2 >
diff --git a/drivers/usb/typec/tcpm/tcpm.c b/drivers/usb/typec/tcpm/tcpm.c index d51c45961893..5ed78194a1bd 100644 --- a/drivers/usb/typec/tcpm/tcpm.c +++ b/drivers/usb/typec/tcpm/tcpm.c @@ -3728,7 +3728,7 @@ static void run_state_machine(struct tcpm_port *port) tcpm_set_state(port, ERROR_RECOVERY, 0); break; } - tcpm_set_state(port, ERROR_RECOVERY, PD_T_PS_SOURCE_ON); + tcpm_set_state(port, ERROR_RECOVERY, PD_T_PS_SOURCE_ON_PRS); break; case PR_SWAP_SRC_SNK_SINK_ON: /* Set the vbus disconnect threshold for implicit contract */ diff --git a/include/linux/usb/pd.h b/include/linux/usb/pd.h index 63a66dd5d832..bb9a782e1411 100644 --- a/include/linux/usb/pd.h +++ b/include/linux/usb/pd.h @@ -466,6 +466,7 @@ static inline unsigned int rdo_max_power(u32 rdo) #define PD_T_DRP_SRC 30 #define PD_T_PS_SOURCE_OFF 920 #define PD_T_PS_SOURCE_ON 480 +#define PD_T_PS_SOURCE_ON_PRS 450 /* 390 - 480ms */ #define PD_T_PS_HARD_RESET 30 #define PD_T_SRC_RECOVER 760 #define PD_T_SRC_RECOVER_MAX 1000