linux/drivers/usb/typec
Badhri Jagan Sridharan 12701ce524 usb: typec: tcpm: Fix SINK_DISCOVERY current limit for Rp-default
This is a regression introduced by 1373fefc62 ("usb: typec: tcpm:
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: 1373fefc62 ("usb: typec: tcpm: Allow slow charging loops to comply to pSnkStby")
Reviewed-by: Guenter Roeck <linux@roeck-us.net>
Acked-by: Heikki Krogerus <heikki.krogerus@linux.intel.com>
Signed-off-by: Badhri Jagan Sridharan <badhri@google.com>
Link: https://lore.kernel.org/r/20210510211756.3346954-1-badhri@google.com
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
2021-05-13 15:01:04 +02:00
..
altmodes usb: typec: displayport: Fill the negotiated SVDM Version in the header 2021-02-09 11:48:55 +01:00
mux usb: typec: intel_pmc_mux: Configure HPD first for HPD+IRQ request 2020-12-28 15:44:26 +01:00
tcpm usb: typec: tcpm: Fix SINK_DISCOVERY current limit for Rp-default 2021-05-13 15:01:04 +02:00
tipd Linux 5.12-rc4 2021-03-22 08:58:02 +01:00
ucsi usb: typec: ucsi: Retrieve all the PDOs instead of just the first 4 2021-05-10 15:51:57 +02:00
bus.c usb: typec: Organize the private headers properly 2021-04-05 09:07:41 +02:00
bus.h usb: typec: Organize the private headers properly 2021-04-05 09:07:41 +02:00
class.c usb: typec: Add typec_port_register_altmodes() 2021-04-09 16:07:41 +02:00
class.h usb: typec: Link all ports during connector registration 2021-04-09 16:00:00 +02:00
hd3ss3220.c usb: typec: hd3ss3220: Use OF graph API to get the connector fwnode 2020-10-02 15:28:18 +02:00
Kconfig usb: typec: tps6598x: Move the driver under its own subdirectory 2021-03-12 15:32:20 +01:00
Makefile usb: typec: Port mapping utility 2021-04-09 16:00:00 +02:00
mux.c usb: typec: Organize the private headers properly 2021-04-05 09:07:41 +02:00
mux.h usb: typec: Organize the private headers properly 2021-04-05 09:07:41 +02:00
port-mapper.c usb: typec: silence a static checker warning 2021-04-14 15:15:40 +02:00
qcom-pmic-typec.c usb: typec: Add QCOM PMIC typec detection driver 2020-10-09 15:14:43 +02:00
stusb160x.c usb: typec: stusb160x: fix return value check in stusb160x_probe() 2021-03-10 09:37:18 +01:00