Message ID | 20230420192402.3695265-1-Naresh.Solanki@9elements.com |
---|---|
State | New |
Headers | show |
Series | [v2,1/2] dt-bindings: regulator: Add support for multiple supplies | expand |
On Thu, Apr 20, 2023 at 09:24:01PM +0200, Naresh Solanki wrote: > Add optional DT property 'regulator-supplies' to handle connectors with > multiple supplies. > If this property is present, it will determine all regulator supplies. > Otherwise, the 'vout' supply will be used as a fallback. > > This change improves support for connector like PCIe connectors on > mainboards that can be powered by 12V and 3.3V supplies. > > Signed-off-by: Naresh Solanki <Naresh.Solanki@9elements.com> > ... > Change in V2: > - Added example > - Update property type & description. > - Improve commit message > --- > .../bindings/regulator/regulator-output.yaml | 21 ++++++++++++++++--- > 1 file changed, 18 insertions(+), 3 deletions(-) > > diff --git a/Documentation/devicetree/bindings/regulator/regulator-output.yaml b/Documentation/devicetree/bindings/regulator/regulator-output.yaml > index 078b37a1a71a..a9dce26991ff 100644 > --- a/Documentation/devicetree/bindings/regulator/regulator-output.yaml > +++ b/Documentation/devicetree/bindings/regulator/regulator-output.yaml > @@ -21,13 +21,22 @@ properties: > compatible: > const: regulator-output > > - vout-supply: > + regulator-supplies: > + $ref: /schemas/types.yaml#/definitions/string-array > description: > - Phandle of the regulator supplying the output. > + Optional property that specifies supply names provided by > + the regulator. Defaults to "vout" if not specified. The > + array contains a list of supply names. > + Each supply name corresponds to a phandle in the > + patternProperties. > + > +patternProperties: > + ".*-supply": > + description: > + Specifies the phandle for various supplies While you say use 'vout-supply' for a single supply, nothing enforces that anymore. > > required: > - compatible > - - vout-supply > > additionalProperties: false > > @@ -37,3 +46,9 @@ examples: > compatible = "regulator-output"; > vout-supply = <&output_reg>; > }; > + out2 { > + compatible = "regulator-output"; > + regulator-supplies = "sw0", "sw1"; > + sw0-supply = <&out2_sw0>; > + sw1-supply = <&out2_sw1>; Names in the consumer are relative to the consumer. You appear to be naming these by the supplier. Just add vout[0-9]-supply and iterate over that name in the driver. Then you don't need "regulator-supplies". Really, you never did. You could just find all properties ending in "-supply". Rob
Hi Rob, On 22-04-2023 03:06 am, Rob Herring wrote: > On Thu, Apr 20, 2023 at 09:24:01PM +0200, Naresh Solanki wrote: >> Add optional DT property 'regulator-supplies' to handle connectors with >> multiple supplies. >> If this property is present, it will determine all regulator supplies. >> Otherwise, the 'vout' supply will be used as a fallback. >> >> This change improves support for connector like PCIe connectors on >> mainboards that can be powered by 12V and 3.3V supplies. >> >> Signed-off-by: Naresh Solanki <Naresh.Solanki@9elements.com> >> ... >> Change in V2: >> - Added example >> - Update property type & description. >> - Improve commit message >> --- >> .../bindings/regulator/regulator-output.yaml | 21 ++++++++++++++++--- >> 1 file changed, 18 insertions(+), 3 deletions(-) >> >> diff --git a/Documentation/devicetree/bindings/regulator/regulator-output.yaml b/Documentation/devicetree/bindings/regulator/regulator-output.yaml >> index 078b37a1a71a..a9dce26991ff 100644 >> --- a/Documentation/devicetree/bindings/regulator/regulator-output.yaml >> +++ b/Documentation/devicetree/bindings/regulator/regulator-output.yaml >> @@ -21,13 +21,22 @@ properties: >> compatible: >> const: regulator-output >> >> - vout-supply: >> + regulator-supplies: >> + $ref: /schemas/types.yaml#/definitions/string-array >> description: >> - Phandle of the regulator supplying the output. >> + Optional property that specifies supply names provided by >> + the regulator. Defaults to "vout" if not specified. The >> + array contains a list of supply names. >> + Each supply name corresponds to a phandle in the >> + patternProperties. >> + >> +patternProperties: >> + ".*-supply": >> + description: >> + Specifies the phandle for various supplies > > While you say use 'vout-supply' for a single supply, nothing enforces > that anymore. > >> >> required: >> - compatible >> - - vout-supply >> >> additionalProperties: false >> >> @@ -37,3 +46,9 @@ examples: >> compatible = "regulator-output"; >> vout-supply = <&output_reg>; >> }; >> + out2 { >> + compatible = "regulator-output"; >> + regulator-supplies = "sw0", "sw1"; >> + sw0-supply = <&out2_sw0>; >> + sw1-supply = <&out2_sw1>; > > Names in the consumer are relative to the consumer. You appear to be > naming these by the supplier. Just add vout[0-9]-supply and iterate over > that name in the driver. Then you don't need "regulator-supplies". > Really, you never did. You could just find all properties ending in > "-supply". Please correct me if I have misunderstood anything What I understood is: 1. Use 'for_each_property_of_node' & iterate each property, 2. String compare each property name ending with '-supply', 3. If there is match then initialize accordingly. This way all *-supply property are also included including vout-supply. This way, regulator-supplies isn't needed. Shall I go ahead in this way ? > > Rob Regards, Naresh
Hi Rob, On 24-04-2023 02:22 pm, Naresh Solanki wrote: > Hi Rob, > > On 22-04-2023 03:06 am, Rob Herring wrote: >> On Thu, Apr 20, 2023 at 09:24:01PM +0200, Naresh Solanki wrote: >>> Add optional DT property 'regulator-supplies' to handle connectors with >>> multiple supplies. >>> If this property is present, it will determine all regulator supplies. >>> Otherwise, the 'vout' supply will be used as a fallback. >>> >>> This change improves support for connector like PCIe connectors on >>> mainboards that can be powered by 12V and 3.3V supplies. >>> >>> Signed-off-by: Naresh Solanki <Naresh.Solanki@9elements.com> >>> ... >>> Change in V2: >>> - Added example >>> - Update property type & description. >>> - Improve commit message >>> --- >>> .../bindings/regulator/regulator-output.yaml | 21 ++++++++++++++++--- >>> 1 file changed, 18 insertions(+), 3 deletions(-) >>> >>> diff --git >>> a/Documentation/devicetree/bindings/regulator/regulator-output.yaml >>> b/Documentation/devicetree/bindings/regulator/regulator-output.yaml >>> index 078b37a1a71a..a9dce26991ff 100644 >>> --- a/Documentation/devicetree/bindings/regulator/regulator-output.yaml >>> +++ b/Documentation/devicetree/bindings/regulator/regulator-output.yaml >>> @@ -21,13 +21,22 @@ properties: >>> compatible: >>> const: regulator-output >>> - vout-supply: >>> + regulator-supplies: >>> + $ref: /schemas/types.yaml#/definitions/string-array >>> description: >>> - Phandle of the regulator supplying the output. >>> + Optional property that specifies supply names provided by >>> + the regulator. Defaults to "vout" if not specified. The >>> + array contains a list of supply names. >>> + Each supply name corresponds to a phandle in the >>> + patternProperties. >>> + >>> +patternProperties: >>> + ".*-supply": >>> + description: >>> + Specifies the phandle for various supplies >> >> While you say use 'vout-supply' for a single supply, nothing enforces >> that anymore. >> >>> required: >>> - compatible >>> - - vout-supply >>> additionalProperties: false >>> @@ -37,3 +46,9 @@ examples: >>> compatible = "regulator-output"; >>> vout-supply = <&output_reg>; >>> }; >>> + out2 { >>> + compatible = "regulator-output"; >>> + regulator-supplies = "sw0", "sw1"; >>> + sw0-supply = <&out2_sw0>; >>> + sw1-supply = <&out2_sw1>; >> >> Names in the consumer are relative to the consumer. You appear to be >> naming these by the supplier. Just add vout[0-9]-supply and iterate over >> that name in the driver. Then you don't need "regulator-supplies". >> Really, you never did. You could just find all properties ending in >> "-supply". > Please correct me if I have misunderstood anything > What I understood is: > 1. Use 'for_each_property_of_node' & iterate each property, > 2. String compare each property name ending with '-supply', > 3. If there is match then initialize accordingly. > This way all *-supply property are also included including vout-supply. > This way, regulator-supplies isn't needed. > Shall I go ahead in this way ? I wanted to follow up on our previous discussion regarding the naming of properties in the consumer. Based on your feedback, I believe that I should use 'for_each_property_of_node' to iterate over each property and then string compare each property name to find those that end with '-supply'. This way, all *-supply properties will be included, including vout-supply, and the 'regulator-supplies' won't be needed. Can you please confirm if my understanding is correct? Thank you. > >> >> Rob > Regards, > Naresh
diff --git a/Documentation/devicetree/bindings/regulator/regulator-output.yaml b/Documentation/devicetree/bindings/regulator/regulator-output.yaml index 078b37a1a71a..a9dce26991ff 100644 --- a/Documentation/devicetree/bindings/regulator/regulator-output.yaml +++ b/Documentation/devicetree/bindings/regulator/regulator-output.yaml @@ -21,13 +21,22 @@ properties: compatible: const: regulator-output - vout-supply: + regulator-supplies: + $ref: /schemas/types.yaml#/definitions/string-array description: - Phandle of the regulator supplying the output. + Optional property that specifies supply names provided by + the regulator. Defaults to "vout" if not specified. The + array contains a list of supply names. + Each supply name corresponds to a phandle in the + patternProperties. + +patternProperties: + ".*-supply": + description: + Specifies the phandle for various supplies required: - compatible - - vout-supply additionalProperties: false @@ -37,3 +46,9 @@ examples: compatible = "regulator-output"; vout-supply = <&output_reg>; }; + out2 { + compatible = "regulator-output"; + regulator-supplies = "sw0", "sw1"; + sw0-supply = <&out2_sw0>; + sw1-supply = <&out2_sw1>; + };
Add optional DT property 'regulator-supplies' to handle connectors with multiple supplies. If this property is present, it will determine all regulator supplies. Otherwise, the 'vout' supply will be used as a fallback. This change improves support for connector like PCIe connectors on mainboards that can be powered by 12V and 3.3V supplies. Signed-off-by: Naresh Solanki <Naresh.Solanki@9elements.com> ... Change in V2: - Added example - Update property type & description. - Improve commit message --- .../bindings/regulator/regulator-output.yaml | 21 ++++++++++++++++--- 1 file changed, 18 insertions(+), 3 deletions(-) base-commit: 43c75e470e5b56a992acb08474810e6822f0989c