]> git.ipfire.org Git - thirdparty/linux.git/commitdiff
usb: typec: ucsi: psy: Set max current to zero when disconnected
authorJameson Thies <jthies@google.com>
Thu, 6 Nov 2025 01:14:46 +0000 (01:14 +0000)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Sun, 9 Nov 2025 02:11:24 +0000 (11:11 +0900)
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>
drivers/usb/typec/ucsi/psy.c

index 62a9d68bb66d21bc805035c29db9b30936d5c802..8ae900c8c1321dcd1efa014d17b1a288283e55b7 100644 (file)
@@ -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) {