From: Herman van Hazendonk <github.com@herrie.org>
To: sre@kernel.org
Cc: robh@kernel.org, krzk+dt@kernel.org, conor+dt@kernel.org,
linux-pm@vger.kernel.org, devicetree@vger.kernel.org,
linux-kernel@vger.kernel.org,
Herman van Hazendonk <github.com@herrie.org>
Subject: [PATCH 0/2] power: supply: max8903: add GPIO-controlled input current-limit
Date: Wed, 3 Jun 2026 09:15:17 +0200 [thread overview]
Message-ID: <20260603071519.807604-1-github.com@herrie.org> (raw)
The MAX8903 charger exposes two hardware pins for input current control:
IDC (DC path, pin 11) and IUSB (USB path, pin 7). On many boards these
are driven by GPIO lines to a resistor mux or logic selector, letting
software select the input current limit. The driver currently has no
mechanism to set POWER_SUPPLY_PROP_INPUT_CURRENT_LIMIT at all.
This series adds that capability via two optional DT property groups:
DC path: "dc-current-limit-gpios" + "dc-current-limit-mapping"
A 1..4-GPIO array drives a resistor mux connected to the MAX8903 IDC
pin. The IDC pin programs the step-down DC input current limit from
0.5 A to 2 A (R_IDC = 6000V/I_DC_MAX) when the DCM mode pin is
logic-high. The mapping table (uint32-matrix of {microamps,
gpio_bit_pattern} pairs) lists every step the board supports. The
driver picks the largest step at or below the requested limit.
USB path: "usb-current-limit-gpios" + "usb-current-limit-values"
A single GPIO drives the MAX8903 IUSB pin. Logic-low selects 100 mA,
logic-high selects 500 mA per the MAX8903 spec. The two microamp
values are described in DT so boards with non-standard IUSB thresholds
can override them. Requests below the lower value are rejected with
-EINVAL rather than silently programming a higher-than-requested limit.
The dispatch between the two paths is guarded by a new mutex (source_lock)
that is also taken in the IRQ handlers that update the "source online"
flags, preventing a race between set_property and a concurrent DOK/UOK
IRQ flip. The IRQs are already requested IRQF_ONESHOT so the sleepable
mutex is the appropriate primitive.
Motivation: the HP TouchPad carries a MAX8903B charger with two TLMM GPIO
lines feeding a four-step IDC resistor mux (500 mA, 1 A, 1.5 A, 2 A DC
input current limit) and a third TLMM line driving IUSB for the 100 mA /
500 mA USB limit. Without this series, the charger always draws its
hardware-default current irrespective of what the USB host negotiated.
Both patches are purely additive; platforms that don't provide the new DT
properties continue to behave exactly as before.
Herman van Hazendonk (2):
dt-bindings: power: supply: maxim,max8903: add DC and USB input
current-limit controls
power: supply: max8903: add DC and USB input current-limit GPIO
controls
.../bindings/power/supply/maxim,max8903.yaml | 58 +++
drivers/power/supply/max8903_charger.c | 369 +++++++++++++++++-
2 files changed, 416 insertions(+), 11 deletions(-)
--
2.43.0
next reply other threads:[~2026-06-03 7:15 UTC|newest]
Thread overview: 6+ messages / expand[flat|nested] mbox.gz Atom feed top
2026-06-03 7:15 Herman van Hazendonk [this message]
2026-06-03 7:15 ` [PATCH 1/2] dt-bindings: power: supply: maxim,max8903: add DC and USB input current-limit controls Herman van Hazendonk
2026-06-03 7:22 ` sashiko-bot
2026-06-04 22:43 ` Sebastian Reichel
2026-06-03 7:15 ` [PATCH 2/2] power: supply: max8903: add DC and USB input current-limit GPIO controls Herman van Hazendonk
2026-06-03 7:33 ` sashiko-bot
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20260603071519.807604-1-github.com@herrie.org \
--to=github.com@herrie.org \
--cc=conor+dt@kernel.org \
--cc=devicetree@vger.kernel.org \
--cc=krzk+dt@kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-pm@vger.kernel.org \
--cc=robh@kernel.org \
--cc=sre@kernel.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.