Message ID | 20210510211756.3346954-1-badhri@google.com |
---|---|
State | New |
Headers | show |
Series | usb: typec: tcpm: Fix SINK_DISCOVERY current limit for Rp-default | expand |
On Mon, May 10, 2021 at 02:17:56PM -0700, Badhri Jagan Sridharan wrote: > This is a regression introduced by > <1373fefc6243cc96b3565f0ffffadfac4ccfb977> > "Allow slow charging loops to comply to pSnkStby". > > When Source advertises Rp-default, tcpm would request 500mA when in > SINK_DISCOVERY, Type-C spec advises the sink to follow BC1.2 current > limits when Rp-default is advertised. > [12750.503381] Requesting mux state 1, usb-role 2, orientation 1 > [12750.503837] state change SNK_ATTACHED -> SNK_STARTUP [rev3 NONE_AMS] > [12751.003891] state change SNK_STARTUP -> SNK_DISCOVERY > [12751.003900] Setting voltage/current limit 5000 mV 500 mA > > This patch restores the behavior where the tcpm would request 0mA when > Rp-default is advertised by the source. > [ 73.174252] Requesting mux state 1, usb-role 2, orientation 1 > [ 73.174749] state change SNK_ATTACHED -> SNK_STARTUP [rev3 NONE_AMS] > [ 73.674800] state change SNK_STARTUP -> SNK_DISCOVERY > [ 73.674808] Setting voltage/current limit 5000 mV 0 mA > > During SNK_DISCOVERY, Cap the current limit to PD_P_SNK_STDBY_MW / 5 only > for slow_charger_loop case. > > Fixes: 1373fefc6243 ("Allow slow charging loops to comply to pSnkStby") > Signed-off-by: Badhri Jagan Sridharan <badhri@google.com> Acked-by: Heikki Krogerus <heikki.krogerus@linux.intel.com> > --- > drivers/usb/typec/tcpm/tcpm.c | 2 +- > 1 file changed, 1 insertion(+), 1 deletion(-) > > diff --git a/drivers/usb/typec/tcpm/tcpm.c b/drivers/usb/typec/tcpm/tcpm.c > index c4fdc00a3bc8..a73299a08ef7 100644 > --- a/drivers/usb/typec/tcpm/tcpm.c > +++ b/drivers/usb/typec/tcpm/tcpm.c > @@ -4055,7 +4055,7 @@ static void run_state_machine(struct tcpm_port *port) > if (port->vbus_present) { > u32 current_lim = tcpm_get_current_limit(port); > > - if (port->slow_charger_loop || (current_lim > PD_P_SNK_STDBY_MW / 5)) > + if (port->slow_charger_loop && (current_lim > PD_P_SNK_STDBY_MW / 5)) > current_lim = PD_P_SNK_STDBY_MW / 5; > tcpm_set_current_limit(port, current_lim, 5000); > tcpm_set_charge(port, true); > -- > 2.31.1.607.g51e8a6a459-goog -- heikki
On Mon, May 10, 2021 at 02:17:56PM -0700, Badhri Jagan Sridharan wrote: > This is a regression introduced by > <1373fefc6243cc96b3565f0ffffadfac4ccfb977> > "Allow slow charging loops to comply to pSnkStby". > > When Source advertises Rp-default, tcpm would request 500mA when in > SINK_DISCOVERY, Type-C spec advises the sink to follow BC1.2 current > limits when Rp-default is advertised. > [12750.503381] Requesting mux state 1, usb-role 2, orientation 1 > [12750.503837] state change SNK_ATTACHED -> SNK_STARTUP [rev3 NONE_AMS] > [12751.003891] state change SNK_STARTUP -> SNK_DISCOVERY > [12751.003900] Setting voltage/current limit 5000 mV 500 mA > > This patch restores the behavior where the tcpm would request 0mA when > Rp-default is advertised by the source. > [ 73.174252] Requesting mux state 1, usb-role 2, orientation 1 > [ 73.174749] state change SNK_ATTACHED -> SNK_STARTUP [rev3 NONE_AMS] > [ 73.674800] state change SNK_STARTUP -> SNK_DISCOVERY > [ 73.674808] Setting voltage/current limit 5000 mV 0 mA > > During SNK_DISCOVERY, Cap the current limit to PD_P_SNK_STDBY_MW / 5 only > for slow_charger_loop case. > > Fixes: 1373fefc6243 ("Allow slow charging loops to comply to pSnkStby") Your string here was incorrect, I'll fix it up this time, but please be more careful in the future as it will get caught by our scripts. thanks, greg k-h
Apologies Greg ! Will pay more attention to the "fixes" string next time. Thanks for fixing it up ! -Badhri On Thu, May 13, 2021 at 6:01 AM Greg Kroah-Hartman <gregkh@linuxfoundation.org> wrote: > > On Mon, May 10, 2021 at 02:17:56PM -0700, Badhri Jagan Sridharan wrote: > > This is a regression introduced by > > <1373fefc6243cc96b3565f0ffffadfac4ccfb977> > > "Allow slow charging loops to comply to pSnkStby". > > > > When Source advertises Rp-default, tcpm would request 500mA when in > > SINK_DISCOVERY, Type-C spec advises the sink to follow BC1.2 current > > limits when Rp-default is advertised. > > [12750.503381] Requesting mux state 1, usb-role 2, orientation 1 > > [12750.503837] state change SNK_ATTACHED -> SNK_STARTUP [rev3 NONE_AMS] > > [12751.003891] state change SNK_STARTUP -> SNK_DISCOVERY > > [12751.003900] Setting voltage/current limit 5000 mV 500 mA > > > > This patch restores the behavior where the tcpm would request 0mA when > > Rp-default is advertised by the source. > > [ 73.174252] Requesting mux state 1, usb-role 2, orientation 1 > > [ 73.174749] state change SNK_ATTACHED -> SNK_STARTUP [rev3 NONE_AMS] > > [ 73.674800] state change SNK_STARTUP -> SNK_DISCOVERY > > [ 73.674808] Setting voltage/current limit 5000 mV 0 mA > > > > During SNK_DISCOVERY, Cap the current limit to PD_P_SNK_STDBY_MW / 5 only > > for slow_charger_loop case. > > > > Fixes: 1373fefc6243 ("Allow slow charging loops to comply to pSnkStby") > > Your string here was incorrect, I'll fix it up this time, but please be > more careful in the future as it will get caught by our scripts. > > thanks, > > greg k-h
diff --git a/drivers/usb/typec/tcpm/tcpm.c b/drivers/usb/typec/tcpm/tcpm.c index c4fdc00a3bc8..a73299a08ef7 100644 --- a/drivers/usb/typec/tcpm/tcpm.c +++ b/drivers/usb/typec/tcpm/tcpm.c @@ -4055,7 +4055,7 @@ static void run_state_machine(struct tcpm_port *port) if (port->vbus_present) { u32 current_lim = tcpm_get_current_limit(port); - if (port->slow_charger_loop || (current_lim > PD_P_SNK_STDBY_MW / 5)) + if (port->slow_charger_loop && (current_lim > PD_P_SNK_STDBY_MW / 5)) current_lim = PD_P_SNK_STDBY_MW / 5; tcpm_set_current_limit(port, current_lim, 5000); tcpm_set_charge(port, true);
This is a regression introduced by <1373fefc6243cc96b3565f0ffffadfac4ccfb977> "Allow slow charging loops to comply to pSnkStby". When Source advertises Rp-default, tcpm would request 500mA when in SINK_DISCOVERY, Type-C spec advises the sink to follow BC1.2 current limits when Rp-default is advertised. [12750.503381] Requesting mux state 1, usb-role 2, orientation 1 [12750.503837] state change SNK_ATTACHED -> SNK_STARTUP [rev3 NONE_AMS] [12751.003891] state change SNK_STARTUP -> SNK_DISCOVERY [12751.003900] Setting voltage/current limit 5000 mV 500 mA This patch restores the behavior where the tcpm would request 0mA when Rp-default is advertised by the source. [ 73.174252] Requesting mux state 1, usb-role 2, orientation 1 [ 73.174749] state change SNK_ATTACHED -> SNK_STARTUP [rev3 NONE_AMS] [ 73.674800] state change SNK_STARTUP -> SNK_DISCOVERY [ 73.674808] Setting voltage/current limit 5000 mV 0 mA During SNK_DISCOVERY, Cap the current limit to PD_P_SNK_STDBY_MW / 5 only for slow_charger_loop case. Fixes: 1373fefc6243 ("Allow slow charging loops to comply to pSnkStby") Signed-off-by: Badhri Jagan Sridharan <badhri@google.com> --- drivers/usb/typec/tcpm/tcpm.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-)