Files
linux-net/Documentation/devicetree/bindings/regulator/samsung,s2mpg10-regulator.yaml
André Draszik 71bc6adae4 regulator: dt-bindings: add s2mpg10-pmic regulators
The S2MPG10 PMIC is a Power Management IC for mobile applications with
buck converters, various LDOs, power meters, RTC, clock outputs, and
additional GPIO interfaces.

It has 10 buck and 31 LDO rails. Several of these can either be
controlled via software (register writes) or via external signals, in
particular by:
    * one out of several input pins connected to a main processor's:
        *  GPIO pins
        * other pins that are e.g. firmware- or power-domain-controlled
          without explicit driver intervention
    * a combination of input pins and register writes.

Control via input pins allows PMIC rails to be controlled by firmware,
e.g. during standby/suspend, or as part of power domain handling where
otherwise that would not be possible. Additionally toggling a pin is
faster than register writes, and it also allows the PMIC to ensure that
any necessary timing requirements between rails are respected
automatically if multiple rails are to be enabled or disabled quasi
simultaneously.

While external control via input pins appears to exist on other
versions of this PMIC, there is more flexibility in this version, in
particular there is a selection of input pins to choose from for each
rail (which must therefore be configured accordingly if in use),
whereas other versions don't have this flexibility.

Add documentation related to the regulator (buck & ldo) parts like
devicetree definitions, regulator naming patterns, and additional
properties.

S2MPG10 is typically used as the main-PMIC together with an S2MPG11
PMIC in a main/sub configuration, hence the datasheet and the binding
both suffix the rails with an 'm'.

Reviewed-by: Krzysztof Kozlowski <krzysztof.kozlowski@linaro.org>
Signed-off-by: André Draszik <andre.draszik@linaro.org>
Link: https://patch.msgid.link/20260122-s2mpg1x-regulators-v7-2-3b1f9831fffd@linaro.org
Signed-off-by: Mark Brown <broonie@kernel.org>
2026-02-04 13:35:30 +00:00

159 lines
4.4 KiB
YAML

# SPDX-License-Identifier: GPL-2.0-only OR BSD-2-Clause
%YAML 1.2
---
$id: http://devicetree.org/schemas/regulator/samsung,s2mpg10-regulator.yaml#
$schema: http://devicetree.org/meta-schemas/core.yaml#
title: Samsung S2MPG10 Power Management IC regulators
maintainers:
- André Draszik <andre.draszik@linaro.org>
description: |
This is part of the device tree bindings for the S2MG10 Power Management IC
(PMIC).
The S2MPG10 PMIC provides 10 buck and 31 LDO regulators.
See also Documentation/devicetree/bindings/mfd/samsung,s2mps11.yaml for
additional information and example.
properties:
# 1 LDO with possible (but limited) external control
ldo20m:
type: object
$ref: regulator.yaml#
unevaluatedProperties: false
description:
Properties for a single LDO regulator.
allOf:
- $ref: "#/$defs/s2mpg10-ext-control"
properties:
regulator-ramp-delay: false
samsung,ext-control:
minimum: 11
patternProperties:
# 10 bucks
"^buck([1-9]|10)m$":
type: object
$ref: regulator.yaml#
unevaluatedProperties: false
description:
Properties for a single buck regulator.
allOf:
- $ref: "#/$defs/s2mpg10-ext-control"
properties:
regulator-ramp-delay:
enum: [6250, 12500, 25000]
default: 6250
samsung,ext-control:
maximum: 10
# 12 standard LDOs
"^ldo(2[1-9]?|3[0-1])m$":
type: object
$ref: regulator.yaml#
unevaluatedProperties: false
description:
Properties for single LDO regulator.
properties:
regulator-ramp-delay: false
# 12 LDOs with possible external control
"^ldo([3-689]|1[046-9])m$":
type: object
$ref: regulator.yaml#
unevaluatedProperties: false
description:
Properties for a single LDO regulator.
allOf:
- $ref: "#/$defs/s2mpg10-ext-control"
properties:
regulator-ramp-delay: false
samsung,ext-control:
maximum: 10
# 6 LDOs with ramp support, 5 out of those with possible external control
"^ldo(1[1235]?|7)m$":
type: object
$ref: regulator.yaml#
unevaluatedProperties: false
description:
Properties for a single LDO regulator.
allOf:
- $ref: "#/$defs/s2mpg10-ext-control"
properties:
regulator-ramp-delay:
enum: [6250, 12500]
default: 6250
samsung,ext-control:
maximum: 10
$defs:
s2mpg10-ext-control:
properties:
samsung,ext-control:
description: |
These rails can be controlled via one of several possible external
(hardware) signals. If so, this property configures the signal the PMIC
should monitor. For S2MPG10 rails where external control is possible other
than ldo20m, the following values generally corresponding to the
respective on-chip pin are valid:
- 0 # S2MPG10_EXTCTRL_PWREN - PWREN pin
- 1 # S2MPG10_EXTCTRL_PWREN_MIF - PWREN_MIF pin
- 2 # S2MPG10_EXTCTRL_AP_ACTIVE_N - ~AP_ACTIVE_N pin
- 3 # S2MPG10_EXTCTRL_CPUCL1_EN - CPUCL1_EN pin
- 4 # S2MPG10_EXTCTRL_CPUCL1_EN2 - CPUCL1_EN & PWREN pins
- 5 # S2MPG10_EXTCTRL_CPUCL2_EN - CPUCL2_EN pin
- 6 # S2MPG10_EXTCTRL_CPUCL2_EN2 - CPUCL2_E2 & PWREN pins
- 7 # S2MPG10_EXTCTRL_TPU_EN - TPU_EN pin
- 8 # S2MPG10_EXTCTRL_TPU_EN2 - TPU_EN & ~AP_ACTIVE_N pins
- 9 # S2MPG10_EXTCTRL_TCXO_ON - TCXO_ON pin
- 10 # S2MPG10_EXTCTRL_TCXO_ON2 - TCXO_ON & ~AP_ACTIVE_N pins
For S2MPG10 ldo20m, the following values are valid
- 11 # S2MPG10_EXTCTRL_LDO20M_EN2 - VLDO20M_EN & LDO20M_SFR
- 12 # S2MPG10_EXTCTRL_LDO20M_EN - VLDO20M_EN pin
$ref: /schemas/types.yaml#/definitions/uint32
minimum: 0
maximum: 12
enable-gpios:
description:
For rails where external control is done via a GPIO, this optional
property describes the GPIO line used.
dependentRequired:
enable-gpios: [ "samsung,ext-control" ]
allOf:
# Bucks 8, 9, and LDO 1 can not be controlled externally - above definition
# allows it and we deny it here. This approach reduces repetition.
- if:
anyOf:
- required: [buck8m]
- required: [buck9m]
- required: [ldo1m]
then:
patternProperties:
"^(buck[8-9]|ldo1)m$":
properties:
samsung,ext-control: false
additionalProperties: false