[PATCH v2 0/4] hwmon: (pmbus) Support relative VOUT mode, add TDK FS1412 and FS1525
From: Abdurrahman Hussain
Date: Tue Oct 20 2026 - 03:46:33 EST
The TDK FS1412 and FS1525 are 12A and 25A uPOL regulators with PMBus
telemetry. Their VOUT_MODE is read-only with bit 7 set, the PMBus 1.3
relative mode: the VOUT margin, warning and fault limits and
POWER_GOOD_ON are stored as fractions of VOUT_COMMAND. The PMBus core
takes bits [7:5] as the mode and rejects both parts.
v1 worked around this in the driver. As Guenter asked, v2 instead
carries Lars Petter Mostad's 2024 patch adding relative mode to the
PMBus core, rebased and fixed up, and the driver only adds what is
specific to these parts.
Patch 1 adds the TDK vendor prefix, patch 2 documents both parts as
trivial devices, patch 3 is the PMBus core change and patch 4 adds the
driver.
Tested on 7.2.10 on a board with four FS1412 and one FS1525:
- VOUT_MODE reads 0x98 (FS1412) and 0x96 (FS1525). Writing it is
NACKed with STATUS_CML invalid data, and it keeps its value.
- Neither part implements PAGE; reading it sets STATUS_CML INVALID_CMD.
- The output voltage limits read as the raw fraction times VOUT_COMMAND,
and writing them through hwmon stores the expected raw values.
- With VOUT_OV_WARN_LIMIT at 1.5 the FS1525 sets VOUT_OV_WARNING
against its 1.094V READ_VOUT with a 0.600V VOUT_COMMAND, so it
compares READ_VOUT against the same limit the core reports.
The regulator path of the core change is built but not exercised; the
driver registers no regulator.
Open question, also asked in the v1 thread: the FS1525 over-voltage
fault is an analog comparison at the feedback pin, so with an external
divider in2_crit is in feedback-pin volts while in2_input is the rail.
v2 keeps in2_crit and documents this; it can be hidden or scaled
instead, depending on the answer.
---
Changes in v2:
- Add relative VOUT mode to the PMBus core (Lars Petter Mostad's patch,
rebased) instead of handling it in the driver (Guenter)
- PMBus core patch, on top of Lars' version: check VOUT_MODE for 0xff
before testing the relative bit, use signed division and clamp the
written value before scaling, reject a VOUT_COMMAND of 0 at probe,
update the cached VOUT_COMMAND only after a successful write
- Driver: drop the VOUT_MODE and limit conversion code, keep the MFR_ID
check and hiding OT_WARN_LIMIT on the FS1412
- Add the FS1525 (driver, trivial-devices, documentation); the parts
are told apart by IC_DEVICE_ID
- trivial-devices: dropped Krzysztof's Reviewed-by, since the patch now
also adds tdk,fs1525
- Picked up Krzysztof's Acked-by on the vendor prefix
- Link to v1: https://patch.msgid.link/20261008-hwmon-pmbus-fs1412-v1-0-0ae7e5ee4e41@xxxxxxxxxx
---
Abdurrahman Hussain (3):
dt-bindings: vendor-prefixes: Add TDK Corporation
dt-bindings: trivial-devices: Add TDK FS1412 and FS1525
hwmon: (pmbus/fs1412) Add TDK FS1412 and FS1525 driver
Lars Petter Mostad (1):
hwmon: (pmbus_core) Support relative encoding of vout related commands
.../devicetree/bindings/trivial-devices.yaml | 4 +
.../devicetree/bindings/vendor-prefixes.yaml | 2 +
Documentation/hwmon/fs1412.rst | 124 ++++++++++++++++++
Documentation/hwmon/index.rst | 1 +
MAINTAINERS | 7 +
drivers/hwmon/pmbus/Kconfig | 9 ++
drivers/hwmon/pmbus/Makefile | 1 +
drivers/hwmon/pmbus/fs1412.c | 144 +++++++++++++++++++++
drivers/hwmon/pmbus/pmbus.c | 2 +-
drivers/hwmon/pmbus/pmbus_core.c | 103 +++++++++++++--
10 files changed, 383 insertions(+), 14 deletions(-)
---
base-commit: a90ee4305c4a5df72c11b31dacfdc76e00fcf78a
change-id: 20261008-hwmon-pmbus-fs1412-fd4434717c19
Best regards,
--
Abdurrahman Hussain <abdurrahman@xxxxxxxxxx>