[PATCH v2 0/2] power: supply: qcom_smbx: add SMB5 support

From: Robin Snyders via B4 Relay

Date: Tue Aug 11 2026 - 19:58:16 EST


Add support for the SMB5 charger generation found in PM7250B and
PM8150B to the existing qcom_smbx driver.

The series extends the binding and selects register layouts, charger
status encodings and electrical limits from per-PMIC match data. Encode
PM7250B as PM8150B-compatible in the binding and use the shared charge-
parameter block, including the +0x08 effective input-current status
register. Convert the SMB5 0.2 V/A USB current-sense voltage measurement
to microamps while leaving the SMB2 current reading unchanged.

SMB5 setup suspends USB input and disables charging before configuration.
The power-supply registration init callback programs battery limits before
device_add publishes properties, and writable properties remain gated
until IRQ, wake and final-enable setup finishes. Managed rollback restores
the charging state before the USB input state; if charging cannot be
restored, USB input remains suspended. Managed teardown cancels status
work before unregistering the power supply.

Enable periodic hardware AICL with the downstream twelve-second rerun
interval while leaving ADC-based AICL disabled by default. Clear the
unsupported HVDCP modes so firmware state cannot raise VBUS, and do not
override the firmware recharge policy without a binding input. The
dedicated TCPM and VBUS regulator drivers retain ownership of Type-C
power-role and VBUS control.

Apply the five-patch qcom_smbx Fixes series before this one. This series is
based on power-supply for-next (99b38cda3f4c). The b4 dependency metadata
records all five prerequisite patch IDs. This ordering preserves the SMB2
watchdog, health, overvoltage and float-voltage fixes across the SMB5
driver refactoring. The prerequisite series is public at:
https://lore.kernel.org/r/20260812-qcom-smbx-fixes-v1-0-eb48246be599@xxxxxxxxxxx/

The initial implementation was tested on a OnePlus 7T Pro (HD1913) with
PM8150B. Register reads confirmed 4.40 V, 1.50 A and 500 mA limits. A
180-second guarded charging trace and a subsequent 600-second runtime
trace completed without crossing the voltage guard. The v2 corrections
were validated offline and have not been re-tested on hardware.

The driver builds with LLVM W=1 and passes sparse without driver warnings.
The binding passes dt_binding_check, and both patches pass checkpatch
--strict.

Signed-off-by: Robin Snyders <robin@xxxxxxxxxxx>
---
Changes in v2:
- Rebase onto power-supply for-next 99b38cda3f4c.
- Encode PM7250B with the required PM8150B compatible fallback.
- Leave SMB5 Type-C power-role and VBUS control to the TCPM and regulator
drivers.
- Preserve the SMB2 3-second AICL interval and use the SMB5 downstream
12-second interval; leave ADC-based AICL disabled by default.
- Disable unsupported HVDCP negotiation deterministically.
- Do not override the firmware recharge policy without a binding input.
- Model PM7250B with PM8150B electrical limits and the +0x08 AICL ICL
status register.
- Convert the SMB5 0.2 V/A USB current-sense reading to microamps while
leaving the SMB2 current reading unscaled.
- Program battery limits in the pre-device_add registration init callback
and gate setters until probe completes.
- Order managed teardown so status work is cancelled before the power
supply is unregistered.
- Restore charging before USB input on probe failure, and leave input
suspended if charging restoration fails.
- Correct the SMB5 overvoltage register and charger-state decoding.
- Avoid repeated error logs when polling a persistent overvoltage state.
- Use battery-info property presence when selecting charge targets.
- Remove duplicate scaling from the already-prescaled USB voltage reading
and clarify the binding IIO channel descriptions.
- Update the binding title, Kconfig prompt and module description for both
charger generations.
- Move the five pre-existing SMB2 fixes to a prerequisite Fixes series.
- Link to v1: https://lore.kernel.org/r/20260811-submit-qcom-smbx-send-v1-v1-0-feec6cfa123a@xxxxxxxxxxx

---
Casey Connolly (2):
dt-bindings: power: supply: qcom,pmi8998-charger: add SMB5 PMICs
power: supply: qcom_smbx: add SMB5 support

.../power/supply/qcom,pmi8998-charger.yaml | 17 +-
drivers/power/supply/Kconfig | 8 +-
drivers/power/supply/qcom_smbx.c | 766 ++++++++++++++++-----
3 files changed, 623 insertions(+), 168 deletions(-)
---
base-commit: 99b38cda3f4c486cfbc40f3c8ede1703594e9f13
change-id: 20260811-submit-qcom-smbx-send-v1-69acefa61977
prerequisite-patch-id: 3d8a9cf43b5e5eac64a60aeec5e9c90880bcf792
prerequisite-patch-id: de3e3b494f9644596cfa4cafc362ca0b48288c45
prerequisite-patch-id: d5e22a0fe7cd55374f60d7c2cb14ed3df8f94e0b
prerequisite-patch-id: 9eafa41402e97d6a3e5369bec46df4e9db3d2af6
prerequisite-patch-id: 5638b901cd10773fa9485605f84b25a1dd826a84

Best regards,
--
Robin Snyders <robin@xxxxxxxxxxx>