[PATCH 0/4] regulator: qcom-rpmh: Support RPMH address reads and use it for rpmh-regulators
From: Kamal Wadhwa
Date: Mon Apr 06 2026 - 18:16:10 EST
This patch series adds a new `rpmh_read()` API to allow reading RPMH
addresses. Using this API enhances the RPMH regulator driver by adding
new `get_status()` callback to reflect the regulator status and also
readback the voltage/bypass/mode settings as they have been applied by
APPS during the bootloader stage, so regulator framework can get them
via `get_mode`, `get_bypass` & `get_voltage_selector` callbacks during
regulator registration.
This is needed because currently regulator framework does a unnecessary
write with `min-microvolt` DT setting for all the RPMH regulators during
regulator registration, because the first time after boot the value is
seen as -ENOTRECOVERABLE, as there is no option to read these regulator
settings.
With this change this unnecessary write can be avoided and regulator
framework gets a sense of the initial state set during the bootloader
stage for all regulator settings.
NOTE - During discussion on the v2 series - PATCH 3/4, reviewer had
inquired about possible need for the use of the sync_state() to handle the
"multiple" client case - for maintaining the regulator settings till all
the clients are probed.
This case was not covered in my previous series and had originally planned
to do that series seperately. But after the discussion decided to merge
the 2 series as it seemed this would be a better approach. But after
working on sync_state change. I realized a basic issue with using
sync_state() for regulators - that its per-driver and not per-regulator
resource. But we needed a sync_state callback for each regulator seperately.
I had been experimenting with few ideas but seems its going to need more
time for me to close on the eqvivalent solution that has per-regulator
sync_state or something to that effect. So I thought to close on this
series and attend to that seperately.
Signed-off-by: Kamal Wadhwa <kamal.wadhwa@xxxxxxxxxxxxxxxx>
---
Changes in v3:
- Removed "bypass_supported" as that is not needed for regulators
that don't have set_bypass implemented, as pointed by Dmitry.
- Handled the corner case where the mode/bypass setting is read 0, but
its unclear if the register has been set to 0 or its un-accessed.
- Dropped `convert_mode_to_status()` and use the `regulator_mode_to_status()`
instead.
- Refactored some code to simplify the `status` update after every
enable/mode/bypass setting change.
- Corrected subject line of all patches to have `regulator: qcom-rpmh:`
for all the `qcom-rpmh-regulator.c` file changes, as pointed by Bjorn.
- Re-ordered the series to have the `rpmh.c` driver patches first and
than `qcom-rpmh-regulator.c` driver patches as asked by Bjorn.
- In the BOB5 bypass fix patch (PATCH 1/4 in previous series), added
the fixes commit#, as it was missed earlier.
- In the rpmh driver change(PATCH 2/4 in previous series), modified
commit wording and removed linked as suggested by reviewer.
- Fixed kernel test robot issues and other formatting issues in
PATCH 3/4 of last series.
- Corrected the checkpatch error fix PATCH 4/4 to keep to only
one error in comment section which existed prior to this
series.
- Link to v2: https://lore.kernel.org/all/20251022-add-rpmh-read-support-v2-0-5c7a8e4df601@xxxxxxxxxxxxxxxx/
Changes in v2:
- Fixed the BOB bypass mode handling (existing issue in current driver).
This was needed for `get_status()` implementation.
- Implemented `get_status()` callback.
- Callbacks for `is_enabled()` & `get_mode()` will now be used as-is
ie. v1 changes reverted.
- Bootstapped the read values for `mode` and `status` in probe, based on
comments recieved from reviewer.
- Callback for `get_voltage_sel()` has been modified to handle cases
where read voltage is out-of-range defined in the regulator DT settings,
this is needed to ensure backward compatibilty. Regulator probes may
fail otherwise for some older targets.
- This patch is rebased & tested on:
https://lore.kernel.org/all/176070318151.57631.15443673679580823321.b4-ty@xxxxxxxxxx/
to avoid any merge issues.
- Fixed code style issues reported by checkpatch.pl script.
- Link to v1: https://lore.kernel.org/r/20250623-add-rpmh-read-support-v1-0-ae583d260195@xxxxxxxxxxxxxxxx
Signed-off-by: Kamal Wadhwa <kamal.wadhwa@xxxxxxxxxxxxxxxx>
---
Kamal Wadhwa (3):
regulator: qcom-rpmh: Fix PMIC5 BOB bypass mode handling
regulator: qcom-rpmh: readback voltage/bypass/mode/status set during bootup
regulator: qcom-rpmh: Fix coding style issues
Maulik Shah (1):
soc: qcom: rpmh: Add support to read back resource settings
drivers/regulator/qcom-rpmh-regulator.c | 186 +++++++++++++++++++++++++++++++-
drivers/soc/qcom/rpmh-rsc.c | 13 ++-
drivers/soc/qcom/rpmh.c | 47 +++++++-
include/soc/qcom/rpmh.h | 5 +
include/soc/qcom/tcs.h | 2 +
5 files changed, 245 insertions(+), 8 deletions(-)
---
base-commit: bd0f139e5fc11182777b81cefc3893ea508544ec
change-id: 20260407-read-rpmh-v3-821188eae030
Best regards,
--
Kamal Wadhwa <kamal.wadhwa@xxxxxxxxxxxxxxxx>