[PATCH 0/3] usb: typec: report a current limit for non-PD Rp-def sources
From: Amit Sunil Dhamne via B4 Relay
Date: Thu Oct 01 2026 - 18:57:15 EST
As per Sec. 4.6.2.1 of the Type-C cable & connector spec when the
source advertises Rp-default, the current limit is set as per the
USB 2.0/USB 3.2 specification, BC1.2 specification as applicable or the
PD negotiation.
Reset value for the Input Current Limit register for the MAX77759
charger is 500 mA. Prior to the max77759_charger driver, the battery
would always charge at that limit since it wasn't re-programmed. Since
the driver was introduced, for any non-PD source advertising Rp-default,
the charger turns off as tcpm reports the current limit to be 0. The
max77759_charger driver reads POWER_SUPPLY_PROP_CURRENT_MAX from the
"tcpm-source" power supply that tcpm_set_current_limit() updates, and
programs its input current limit from it. The limit is 0 because the
tcpm doesn't have visibility on the USB data speed or BC1.2 detection.
As a workaround for the Rp-default case, let the Type-C stack report a
USB 2.0 current limit of 500 mA so that the behavior is at parity with
what was before. This is until we implement a conduit for USB core to
communicate with the Type-C stack.
Signed-off-by: Amit Sunil Dhamne <amitsd@xxxxxxxxxx>
---
Amit Sunil Dhamne (3):
usb: typec: tcpm: only call get_current_limit() for cc=Rp-def
usb: typec: tcpci: implement get_current_limit
usb: typec: tcpci_maxim: implement get_current_limit
drivers/usb/typec/tcpm/tcpci.c | 14 ++++++++++++++
drivers/usb/typec/tcpm/tcpci_maxim_core.c | 15 +++++++++++++++
drivers/usb/typec/tcpm/tcpm.c | 7 +++----
include/linux/usb/tcpci.h | 6 ++++++
4 files changed, 38 insertions(+), 4 deletions(-)
---
base-commit: 551c722f40809618230001baccf219193e22fc5a
change-id: 20260918-max77759-icl-typec-8dfb9f83d712
Best regards,
--
Amit Sunil Dhamne <amitsd@xxxxxxxxxx>