[<prev] [next>] [thread-next>] [day] [month] [year] [list]
Message-Id: <20251227-s2mpg1x-regulators-v5-0-0c04b360b4c9@linaro.org>
Date: Sat, 27 Dec 2025 12:24:22 +0000
From: André Draszik <andre.draszik@...aro.org>
To: Tudor Ambarus <tudor.ambarus@...aro.org>, Rob Herring <robh@...nel.org>,
Conor Dooley <conor+dt@...nel.org>, Krzysztof Kozlowski <krzk@...nel.org>,
Liam Girdwood <lgirdwood@...il.com>, Mark Brown <broonie@...nel.org>,
Lee Jones <lee@...nel.org>, Linus Walleij <linus.walleij@...aro.org>,
Bartosz Golaszewski <brgl@...ev.pl>,
Krzysztof Kozlowski <krzk+dt@...nel.org>, Linus Walleij <linusw@...nel.org>,
Bartosz Golaszewski <brgl@...nel.org>
Cc: Peter Griffin <peter.griffin@...aro.org>,
Will McVicker <willmcvicker@...gle.com>, Juan Yescas <jyescas@...gle.com>,
kernel-team@...roid.com, linux-kernel@...r.kernel.org,
linux-samsung-soc@...r.kernel.org, devicetree@...r.kernel.org,
linux-gpio@...r.kernel.org,
André Draszik <andre.draszik@...aro.org>,
Krzysztof Kozlowski <krzk@...nel.org>
Subject: [PATCH v5 00/21] Samsung S2MPG10 regulator and S2MPG11 PMIC
drivers
This series extends the existing S2MPG10 PMIC driver to add support for
the regulators, and adds new S2MPG11 core and regulator drivers.
As part of this it was necessary to update the regulator core to allow
regulator registration to succeed when supplies aren't ready yet,
because on the current user of those PMICs (Google Pixel 6) multiple
PMICs supply each other and otherwise regulator registration would fail
altogether. This is implemented via an additional 'regulator-bus' which
allows us to keep track of regulators with missing supply and retry
supply resolution whenever new regulators are registered.
--- dependency note ---
This series must be applied in-order, due to the regulator drivers
depending on headers & definitions added by the bindings and core
drivers. I would expect them all to go via the MFD tree.
The MFD patches in this series also depend on my Samsung MFD patches
due to patch context:
https://lore.kernel.org/all/20251217-s5m-alarm-v2-0-b7bff003e94c@linaro.org/
While these patches compile, regulator probe will only be successful
with my deferrable regulators patches from
https://lore.kernel.org/r/20251227-regulators-defer-v1-0-3104b22d84cb@linaro.org
--- end ---
The patches are kept together in one series, due to S2MPG11 and its
regulators being very similar to S2MPG10.
The Samsung S2MPG11 PMIC is a Power Management IC for mobile
applications with buck converters, various LDOs, power meters, and
additional GPIO interfaces. It typically complements an S2MPG10 PMIC in
a main/sub configuration as the sub-PMIC and both are used on the
Google Pixel 6 and 6 Pro (oriole / raven).
A DT update for Oriole / Raven to enable these is required which I will
send out separately.
Cheers,
Andre'
Signed-off-by: André Draszik <andre.draszik@...aro.org>
---
Changes in v5:
- rebase against mfd/sec alarm IRQ rework
https://lore.kernel.org/all/20251217-s5m-alarm-v2-0-b7bff003e94c@linaro.org/
- switch to async probe for mfd
- Mark: one MFD cell per PMIC, not per PMIC rail - drop or update
related patches
- making the series runtime depend on
https://lore.kernel.org/r/20251227-regulators-defer-v1-0-3104b22d84cb@linaro.org
- new patch:
- mfd: sec: s2mpg10: reorder regulators for better probe performance
- collect tags
- Link to v4: https://lore.kernel.org/r/20251110-s2mpg1x-regulators-v4-0-94c9e726d4ba@linaro.org
Changes in v4:
- Krzysztof:
- s2mpg10-regulator.yaml: move additionalProperties to after allOf
- s2mpg10-regulator.yaml: use $defs, not definitions
- split samsung,s2mpg10-pmic.yaml and samsung,s2mpg11-pmic.yaml
- add full example for samsung,s2mpg10-pmic.yaml and 11
- acpm binding: commit message update
- acpm binding: pmic -> pmic-1, pmic2 -> pmic-2
- ensure binding file names match bindings
- fix typos in s2mpg11-regulator.yaml description text
- collect tags
- Link to v3: https://lore.kernel.org/r/20251103-s2mpg1x-regulators-v3-0-b8b96b79e058@linaro.org
Changes in v3:
- Krzysztof:
- split s2mpg10 core binding into separate file
- drop PCTRLSEL values that can be described using standard
properties, and update remaining macro names (self)
- drop maxItems:1 where not needed (Krzysztof)
- samsung,ext-control-gpios -> enable-gpios
- fix LDO20M_EN pin name -> VLDO20M_EN
- move all binding patternProperties to top-level
- one (driver) instance per actual rail, not per rail type (LDO or
buck)
- new macro REGULATOR_LINEAR_VRANGE() (patch 10)
- address some (pre-existing) checkpatch warnings
- various updates to regulator driver (patch 16 & 19).See footer there
- more descriptive commit messages
- Link to v2: https://lore.kernel.org/r/20250606-s2mpg1x-regulators-v2-0-b03feffd2621@linaro.org
Changes in v2:
- s2mpg11 also exposes additional GPIOs, update all relevant commit
messages (nevertheless, GPIOs are out of scope in this series)
- fix some commit message typos: s2mp1 -> s2mpg1
- patch2: drop | (literal style mark) from samsung,ext-control-gpios
- patch5: add | to vinb*-supply description for better formatting
- patch13: update ::of_parse_cb assignment
- patch15: drop duplicated ::of_parse_cb assignment
- Link to v1: https://lore.kernel.org/r/20250604-s2mpg1x-regulators-v1-0-6038740f49ae@linaro.org
---
André Draszik (21):
dt-bindings: firmware: google,gs101-acpm-ipc: convert regulators to lowercase
regulator: dt-bindings: add s2mpg10-pmic regulators
regulator: dt-bindings: add s2mpg11-pmic regulators
dt-bindings: mfd: samsung,s2mps11: Split s2mpg10-pmic into separate file
dt-bindings: mfd: samsung,s2mpg10-pmic: Link to its regulators
dt-bindings: mfd: Add samsung,s2mpg11-pmic
dt-bindings: firmware: google,gs101-acpm-ipc: add S2MPG11 secondary PMIC
mfd: sec: s2mpg10: reorder regulators for better probe performance
mfd: sec: Add support for S2MPG11 PMIC via ACPM
regulator: add REGULATOR_LINEAR_VRANGE macro
regulator: s2mps11: drop two needless variable initialisations
regulator: s2mps11: use dev_err_probe() where appropriate
regulator: s2mps11: place constants on right side of comparison tests
regulator: s2mps11: update node parsing (allow -supply properties)
regulator: s2mps11: refactor handling of external rail control
regulator: s2mps11: add S2MPG10 regulator
regulator: s2mps11: refactor S2MPG10 ::set_voltage_time() for S2MPG11 reuse
regulator: s2mps11: refactor S2MPG10 regulator macros for S2MPG11 reuse
regulator: s2mps11: add S2MPG11 regulator
regulator: s2mps11: more descriptive gpio consumer name
regulator: s2mps11: enable-gpios is optional on s2mpg1x
.../bindings/firmware/google,gs101-acpm-ipc.yaml | 54 +-
.../bindings/mfd/samsung,s2mpg10-pmic.yaml | 120 ++
.../bindings/mfd/samsung,s2mpg11-pmic.yaml | 88 ++
.../devicetree/bindings/mfd/samsung,s2mps11.yaml | 29 +-
.../regulator/samsung,s2mpg10-regulator.yaml | 158 +++
.../regulator/samsung,s2mpg11-regulator.yaml | 136 +++
MAINTAINERS | 1 +
drivers/mfd/sec-acpm.c | 171 ++-
drivers/mfd/sec-common.c | 17 +-
drivers/mfd/sec-irq.c | 85 +-
drivers/regulator/s2mps11.c | 1186 ++++++++++++++++++--
.../regulator/samsung,s2mpg10-regulator.h | 53 +
include/linux/mfd/samsung/core.h | 1 +
include/linux/mfd/samsung/irq.h | 105 ++
include/linux/mfd/samsung/s2mpg10.h | 44 +-
include/linux/mfd/samsung/s2mpg11.h | 434 +++++++
include/linux/regulator/driver.h | 5 +
17 files changed, 2526 insertions(+), 161 deletions(-)
---
base-commit: 35eb590e66ac7e9a77033e8ebaff897ab493cd54
change-id: 20250603-s2mpg1x-regulators-7a41c8399abf
Best regards,
--
André Draszik <andre.draszik@...aro.org>
Powered by blists - more mailing lists