[PATCH v2] power: supply: qcom_battmgr: report the USB type from USB_ADAP_TYPE

From: Joonhoe Kim

Date: Mon Oct 12 2026 - 09:06:15 EST


On SM8350 and SM8550 class firmware the USB power supply reads its
usb_type from the USB_TYPE property. On a Kaanapali (SM8850) tablet that
property is 1 (SDP) whatever is plugged in, while USB_ADAP_TYPE reports
the adapter, using the same numbering as POWER_SUPPLY_USB_TYPE_*:

PC port USB_TYPE 1 USB_ADAP_TYPE 1 (SDP)
USB-C dock, 5 V PD USB_TYPE 1 USB_ADAP_TYPE 6 (PD)
65 W PPS charger USB_TYPE 1 USB_ADAP_TYPE 8 (PD_PPS)

Qualcomm's downstream qti_battery_charger driver also maps
USB_ADAP_TYPE to POWER_SUPPLY_PROP_USB_TYPE.

Request USB_ADAP_TYPE for POWER_SUPPLY_PROP_USB_TYPE instead.

Tested on a Lenovo Legion Tab Y700 gen 5 (qcom,kaanapali-pmic-glink,
which uses the SM8550 path). Only tested on this device; the SM8350
variant shares the property map and was not tested.

Fixes: 29e8142b5623 ("power: supply: Introduce Qualcomm PMIC GLINK power supply")
Reviewed-by: Kamal Wadhwa <kamal.wadhwa@xxxxxxxxxxxxxxxx>
Assisted-by: LLM
Signed-off-by: Joonhoe Kim <26rote@xxxxxxxxx>
---
v2: add Fixes tag, collect Kamal's Reviewed-by
v1: https://lore.kernel.org/all/20261007123932.1664-1-26rote@xxxxxxxxx/

drivers/power/supply/qcom_battmgr.c | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/drivers/power/supply/qcom_battmgr.c b/drivers/power/supply/qcom_battmgr.c
index 7716eb9e1aff..b24860d2ded2 100644
--- a/drivers/power/supply/qcom_battmgr.c
+++ b/drivers/power/supply/qcom_battmgr.c
@@ -975,7 +975,7 @@ static const u8 sm8350_usb_prop_map[] = {
[POWER_SUPPLY_PROP_CURRENT_NOW] = USB_CURR_NOW,
[POWER_SUPPLY_PROP_CURRENT_MAX] = USB_CURR_MAX,
[POWER_SUPPLY_PROP_INPUT_CURRENT_LIMIT] = USB_INPUT_CURR_LIMIT,
- [POWER_SUPPLY_PROP_USB_TYPE] = USB_TYPE,
+ [POWER_SUPPLY_PROP_USB_TYPE] = USB_ADAP_TYPE,
};

static int qcom_battmgr_usb_sm8350_update(struct qcom_battmgr *battmgr,
@@ -1513,7 +1513,7 @@ static void qcom_battmgr_sm8350_callback(struct qcom_battmgr *battmgr,
case USB_INPUT_CURR_LIMIT:
battmgr->usb.current_limit = le32_to_cpu(resp->intval.value);
break;
- case USB_TYPE:
+ case USB_ADAP_TYPE:
battmgr->usb.usb_type = le32_to_cpu(resp->intval.value);
break;
default:
--
2.43.0