summaryrefslogtreecommitdiff
path: root/drivers/usb
diff options
context:
space:
mode:
authorJameson Thies <jthies@google.com>2025-11-06 01:14:46 +0000
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>2025-12-07 06:27:38 +0900
commit222f5fdae114d55c8407dd548b3d870e806a7789 (patch)
tree8a9b94be1e4d9ffa392ca0ec2463791ae8d7aab9 /drivers/usb
parent5ebe8d479aaf4f41ac35e6955332304193c646f6 (diff)
downloadlinux-222f5fdae114d55c8407dd548b3d870e806a7789.tar.gz
linux-222f5fdae114d55c8407dd548b3d870e806a7789.tar.bz2
linux-222f5fdae114d55c8407dd548b3d870e806a7789.zip
usb: typec: ucsi: psy: Set max current to zero when disconnected
commit 23379a17334fc24c4a9cbd9967d33dcd9323cc7c upstream. The ucsi_psy_get_current_max function defaults to 0.1A when it is not clear how much current the partner device can support. But this does not check the port is connected, and will report 0.1A max current when nothing is connected. Update ucsi_psy_get_current_max to report 0A when there is no connection. Fixes: af833e7f7db3 ("usb: typec: ucsi: psy: Set current max to 100mA for BC 1.2 and Default") Cc: stable@vger.kernel.org Signed-off-by: Jameson Thies <jthies@google.com> Reviewed-by: Benson Leung <bleung@chromium.org> Reviewed-by: Heikki Krogerus <heikki.krogerus@linux.intel.com> Reviewed-by: Sebastian Reichel <sebastian.reichel@collabora.com> Tested-by: Kenneth R. Crudup <kenny@panix.com> Rule: add Link: https://lore.kernel.org/stable/20251017000051.2094101-1-jthies%40google.com Link: https://patch.msgid.link/20251106011446.2052583-1-jthies@google.com Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Diffstat (limited to 'drivers/usb')
-rw-r--r--drivers/usb/typec/ucsi/psy.c5
1 files changed, 5 insertions, 0 deletions
diff --git a/drivers/usb/typec/ucsi/psy.c b/drivers/usb/typec/ucsi/psy.c
index 62a9d68bb66d..8ae900c8c132 100644
--- a/drivers/usb/typec/ucsi/psy.c
+++ b/drivers/usb/typec/ucsi/psy.c
@@ -145,6 +145,11 @@ static int ucsi_psy_get_current_max(struct ucsi_connector *con,
{
u32 pdo;
+ if (!UCSI_CONSTAT(con, CONNECTED)) {
+ val->intval = 0;
+ return 0;
+ }
+
switch (UCSI_CONSTAT(con, PWR_OPMODE)) {
case UCSI_CONSTAT_PWR_OPMODE_PD:
if (con->num_pdos > 0) {