Some X-Powers AXP PMICs can combine some of their DC/DC buck converter
outputs in a multi-phase fashion, to achieve higher currents and
decrease the output ripple. The datasheets call this poly-phase. This is
programmable in the PMIC, although often set up as the PMIC's reset
default.
Add the "x-powers,polyphased" property to the binding, to describe those
pairs or tuples of regulators that should work together. In the lead
regulator node, the property lists the phandles of the connected
regulators. Just an empty property means no poly-phasing.
Signed-off-by: Andre Przywara <andre.przywara@arm.com>
---
.../devicetree/bindings/mfd/x-powers,axp152.yaml | 14 ++++++++++++++
1 file changed, 14 insertions(+)
diff --git a/Documentation/devicetree/bindings/mfd/x-powers,axp152.yaml b/Documentation/devicetree/bindings/mfd/x-powers,axp152.yaml
index 45f015d63df16..260c4c0afc475 100644
--- a/Documentation/devicetree/bindings/mfd/x-powers,axp152.yaml
+++ b/Documentation/devicetree/bindings/mfd/x-powers,axp152.yaml
@@ -304,6 +304,15 @@ properties:
noise. This probably makes sense for HiFi audio related
applications that aren't battery constrained.
+ x-powers,polyphased:
+ $ref: /schemas/types.yaml#/definitions/phandle-array
+ description:
+ A list of phandles pointing to other regulators that should be
+ polyphased with this regulator. The linked regulators will be
+ synchronised with this regulator, within the PMIC, but only if
+ supported by the PMIC. An empty list means this regulator
+ should be configured in a single-phase setup.
+
additionalProperties: false
required:
@@ -377,6 +386,7 @@ examples:
regulator-min-microvolt = <1000000>;
regulator-max-microvolt = <1450000>;
regulator-name = "vdd-cpu";
+ x-powers,polyphased = <®_dcdc4>;
};
reg_dcdc3: dcdc3 {
@@ -386,6 +396,10 @@ examples:
regulator-name = "vdd-int-dll";
};
+ reg_dcdc4: dcdc4 {
+ /* dual-phased with DCDC2 */
+ };
+
reg_ldo1: ldo1 {
/* LDO1 is a fixed output regulator */
regulator-always-on;
--
2.46.4
On Fri, Sep 19, 2025 at 01:00:16AM +0100, Andre Przywara wrote: > Some X-Powers AXP PMICs can combine some of their DC/DC buck converter > outputs in a multi-phase fashion, to achieve higher currents and > decrease the output ripple. The datasheets call this poly-phase. This is > programmable in the PMIC, although often set up as the PMIC's reset > default. > > Add the "x-powers,polyphased" property to the binding, to describe those > pairs or tuples of regulators that should work together. In the lead > regulator node, the property lists the phandles of the connected > regulators. Just an empty property means no poly-phasing. Don't we have a coupled regulator binding already? > Signed-off-by: Andre Przywara <andre.przywara@arm.com> > --- > .../devicetree/bindings/mfd/x-powers,axp152.yaml | 14 ++++++++++++++ > 1 file changed, 14 insertions(+) > > diff --git a/Documentation/devicetree/bindings/mfd/x-powers,axp152.yaml b/Documentation/devicetree/bindings/mfd/x-powers,axp152.yaml > index 45f015d63df16..260c4c0afc475 100644 > --- a/Documentation/devicetree/bindings/mfd/x-powers,axp152.yaml > +++ b/Documentation/devicetree/bindings/mfd/x-powers,axp152.yaml > @@ -304,6 +304,15 @@ properties: > noise. This probably makes sense for HiFi audio related > applications that aren't battery constrained. > > + x-powers,polyphased: > + $ref: /schemas/types.yaml#/definitions/phandle-array > + description: > + A list of phandles pointing to other regulators that should be > + polyphased with this regulator. The linked regulators will be > + synchronised with this regulator, within the PMIC, but only if > + supported by the PMIC. An empty list means this regulator > + should be configured in a single-phase setup. phandle-array is poorly named and is really a matrix because you can have arg cells. So you need: items: maxItems: 1 And is there an outer max for linked regulators? Rob
On Tue, Sep 23, 2025 at 2:16 AM Rob Herring <robh@kernel.org> wrote: > > On Fri, Sep 19, 2025 at 01:00:16AM +0100, Andre Przywara wrote: > > Some X-Powers AXP PMICs can combine some of their DC/DC buck converter > > outputs in a multi-phase fashion, to achieve higher currents and > > decrease the output ripple. The datasheets call this poly-phase. This is > > programmable in the PMIC, although often set up as the PMIC's reset > > default. > > > > Add the "x-powers,polyphased" property to the binding, to describe those > > pairs or tuples of regulators that should work together. In the lead > > regulator node, the property lists the phandles of the connected > > regulators. Just an empty property means no poly-phasing. > > Don't we have a coupled regulator binding already? That was my first thought as well. Though on the driver side, I guess we would need to add a coupler to the axp regulator driver to handle the polyphase case directly, or somehow tell the regulator core to ignore this property. Unlike separate regulators that are ganged together, in the AXP PMICs it seems that when buck outputs are ganged, only the controls for the first output have any actual effect. In such cases I don't know if we should just ignore / leave out the secondary outputs from both the description and the runtime state. ChenYu > > Signed-off-by: Andre Przywara <andre.przywara@arm.com> > > --- > > .../devicetree/bindings/mfd/x-powers,axp152.yaml | 14 ++++++++++++++ > > 1 file changed, 14 insertions(+) > > > > diff --git a/Documentation/devicetree/bindings/mfd/x-powers,axp152.yaml b/Documentation/devicetree/bindings/mfd/x-powers,axp152.yaml > > index 45f015d63df16..260c4c0afc475 100644 > > --- a/Documentation/devicetree/bindings/mfd/x-powers,axp152.yaml > > +++ b/Documentation/devicetree/bindings/mfd/x-powers,axp152.yaml > > @@ -304,6 +304,15 @@ properties: > > noise. This probably makes sense for HiFi audio related > > applications that aren't battery constrained. > > > > + x-powers,polyphased: > > + $ref: /schemas/types.yaml#/definitions/phandle-array > > + description: > > + A list of phandles pointing to other regulators that should be > > + polyphased with this regulator. The linked regulators will be > > + synchronised with this regulator, within the PMIC, but only if > > + supported by the PMIC. An empty list means this regulator > > + should be configured in a single-phase setup. > > phandle-array is poorly named and is really a matrix because you can > have arg cells. So you need: > > items: > maxItems: 1 > > And is there an outer max for linked regulators? > > Rob >
On Thu, Sep 25, 2025 at 10:52:45PM +0800, Chen-Yu Tsai wrote: > On Tue, Sep 23, 2025 at 2:16 AM Rob Herring <robh@kernel.org> wrote: > > On Fri, Sep 19, 2025 at 01:00:16AM +0100, Andre Przywara wrote: > > > Add the "x-powers,polyphased" property to the binding, to describe those > > > pairs or tuples of regulators that should work together. In the lead > > > regulator node, the property lists the phandles of the connected > > > regulators. Just an empty property means no poly-phasing. > > Don't we have a coupled regulator binding already? > That was my first thought as well. That's something separate, that's two separate regulators that need to be kept within a range of each other manually. > Unlike separate regulators that are ganged together, in the AXP PMICs it > seems that when buck outputs are ganged, only the controls for the first > output have any actual effect. In such cases I don't know if we should > just ignore / leave out the secondary outputs from both the description > and the runtime state. This is very common, I would expect any regulators that are ganged together into a single regulator like this to simply not appear in the DT.
© 2016 - 2025 Red Hat, Inc.