[PATCH v1 0/3] Add support for AVS in TCPM
From: Badhri Jagan Sridharan
Date: Thu Feb 26 2026 - 00:53:36 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/
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
.../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 +-
7 files changed, 563 insertions(+), 110 deletions(-)
base-commit: 6de23f81a5e08be8fbf5e8d7e9febc72a5b5f27f
prerequisite-patch-id: 4dacd8bc550e317d67134d030814765fb9f4c6e1
prerequisite-patch-id: e863378fc602b6bee2e9fdd8c568003c00b2a38e
--
2.53.0.414.gf7e9f6c205-goog