[PATCH v2 0/3] Add support for AVS in TCPM
From: Badhri Jagan Sridharan
Date: Mon Mar 16 2026 - 11:07:41 EST
To facilitate optimum charging USB_PD_R3_2 introduced a SPR AVS
(Standard Power Range Adjustable Voltage Supply) which is a power supply
mode operating within the Standard Power Range (up to 100W). It allows a
Source to offer an output voltage that can be adjusted by the Sink in
fine increments (100mV) within a defined range.
Unlike the Programmable Power Supply (PPS), SPR AVS does not support a
programmable current limit (Current Limit Mode). Instead, it functions
similarly to a Fixed Supply where the voltage is adjustable; the Sink
is responsible for ensuring it does not draw more current than negotiated.
This patch series enables sink to enable and negotiate SPR AVS with an
SPR AVS capable PD source. This allows gs101 to negotiate SPR AVS with
a SPR AVS compatible USB PD port partner. The DTS changes for gs101
will be sent as a separate patch while marking this topic as a
dependency.
This patch series also depends on the "Introduce Sink Cap Extended AMS"
introduced by Amit Sunil Dhamne as it introduces the SPR AVS voltage
tier constants which this patch series relies on.
Depends-on: https://lore.kernel.org/lkml/20260223-skedb-v2-0-60675765bc7e@xxxxxxxxxx/
---
Changes in v2:
- Updated Documentation/ABI/testing/sysfs-class-power to address
Sebastian Reichel's comments
- Added Acked-by tag for patch 3 and patch 1.
- Rebased on top of usb-next which dropped prerequisite-patch-id tags as
Depends-on patch is now part of usb-next
Link to v1: https://lore.kernel.org/lkml/20260226055311.2591357-1-badhri@xxxxxxxxxx/
---
Badhri Jagan Sridharan (3):
dt-bindings: connector: Add SPR AVS Sink APDO definitions
power: supply: Add PD SPR AVS support to USB type enum
tcpm: Implement sink support for PD SPR AVS negotiation
Documentation/ABI/testing/sysfs-class-power | 3 +-
.../bindings/connector/usb-connector.yaml | 5 +-
drivers/power/supply/power_supply_sysfs.c | 2 +
drivers/usb/typec/tcpm/tcpm.c | 611 +++++++++++++++---
include/dt-bindings/usb/pd.h | 18 +
include/linux/power_supply.h | 3 +
include/linux/usb/pd.h | 32 +-
include/linux/usb/tcpm.h | 2 +-
8 files changed, 565 insertions(+), 111 deletions(-)
base-commit: de6c925db978004703944585e9dd57d58aba0fac
--
2.53.0.851.ga537e3e6e9-goog