* [PATCH v2 1/2] dt-bindings: regulator: Add support for multiple supplies @ 2023-04-20 19:24 Naresh Solanki 2023-04-20 19:24 ` [PATCH v2 2/2] regulator: userspace-consumer: Support multiple supplies in DT Naresh Solanki 2023-04-21 21:36 ` [PATCH v2 1/2] dt-bindings: regulator: Add support for multiple supplies Rob Herring 0 siblings, 2 replies; 5+ messages in thread From: Naresh Solanki @ 2023-04-20 19:24 UTC (permalink / raw) To: zev, Liam Girdwood, Mark Brown, Rob Herring, Krzysztof Kozlowski Cc: Naresh Solanki, linux-kernel, devicetree 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 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>; + }; base-commit: 43c75e470e5b56a992acb08474810e6822f0989c -- 2.39.1 ^ permalink raw reply related [flat|nested] 5+ messages in thread
* [PATCH v2 2/2] regulator: userspace-consumer: Support multiple supplies in DT 2023-04-20 19:24 [PATCH v2 1/2] dt-bindings: regulator: Add support for multiple supplies Naresh Solanki @ 2023-04-20 19:24 ` Naresh Solanki 2023-04-21 21:36 ` [PATCH v2 1/2] dt-bindings: regulator: Add support for multiple supplies Rob Herring 1 sibling, 0 replies; 5+ messages in thread From: Naresh Solanki @ 2023-04-20 19:24 UTC (permalink / raw) To: zev, Liam Girdwood, Mark Brown; +Cc: Naresh Solanki, linux-kernel Add support for 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 some connector output 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: - Update commit message - Code improved to add fallback if the property isn't used. --- drivers/regulator/userspace-consumer.c | 33 +++++++++++++++++++++----- 1 file changed, 27 insertions(+), 6 deletions(-) diff --git a/drivers/regulator/userspace-consumer.c b/drivers/regulator/userspace-consumer.c index 97f075ed68c9..aaa0189d6dab 100644 --- a/drivers/regulator/userspace-consumer.c +++ b/drivers/regulator/userspace-consumer.c @@ -120,7 +120,10 @@ static int regulator_userspace_consumer_probe(struct platform_device *pdev) struct regulator_userspace_consumer_data tmpdata; struct regulator_userspace_consumer_data *pdata; struct userspace_consumer_data *drvdata; - int ret; + struct device_node *np = pdev->dev.of_node; + struct property *prop; + const char *supply; + int ret, count = 0; pdata = dev_get_platdata(&pdev->dev); if (!pdata) { @@ -131,11 +134,29 @@ static int regulator_userspace_consumer_probe(struct platform_device *pdev) memset(pdata, 0, sizeof(*pdata)); pdata->no_autoswitch = true; - pdata->num_supplies = 1; - pdata->supplies = devm_kzalloc(&pdev->dev, sizeof(*pdata->supplies), GFP_KERNEL); - if (!pdata->supplies) - return -ENOMEM; - pdata->supplies[0].supply = "vout"; + + if (of_find_property(np, "regulator-supplies", NULL)) { + pdata->num_supplies = of_property_count_strings(np, "regulator-supplies"); + if (pdata->num_supplies < 1) { + dev_err(&pdev->dev, + "could not parse property regulator-supplies\n"); + return -EINVAL; + } + pdata->supplies = devm_kzalloc(&pdev->dev, sizeof(*pdata->supplies) * + pdata->num_supplies, GFP_KERNEL); + if (!pdata->supplies) + return -ENOMEM; + of_property_for_each_string(np, "regulator-supplies", prop, supply) { + pdata->supplies[count++].supply = supply; + } + } else { + pdata->num_supplies = 1; + pdata->supplies = devm_kzalloc(&pdev->dev, sizeof(*pdata->supplies), + GFP_KERNEL); + if (!pdata->supplies) + return -ENOMEM; + pdata->supplies[0].supply = "vout"; + } } if (pdata->num_supplies < 1) { -- 2.39.1 ^ permalink raw reply related [flat|nested] 5+ messages in thread
* Re: [PATCH v2 1/2] dt-bindings: regulator: Add support for multiple supplies 2023-04-20 19:24 [PATCH v2 1/2] dt-bindings: regulator: Add support for multiple supplies Naresh Solanki 2023-04-20 19:24 ` [PATCH v2 2/2] regulator: userspace-consumer: Support multiple supplies in DT Naresh Solanki @ 2023-04-21 21:36 ` Rob Herring 2023-04-24 8:52 ` Naresh Solanki 1 sibling, 1 reply; 5+ messages in thread From: Rob Herring @ 2023-04-21 21:36 UTC (permalink / raw) To: Naresh Solanki Cc: zev, Liam Girdwood, Mark Brown, Krzysztof Kozlowski, linux-kernel, devicetree 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 ^ permalink raw reply [flat|nested] 5+ messages in thread
* Re: [PATCH v2 1/2] dt-bindings: regulator: Add support for multiple supplies 2023-04-21 21:36 ` [PATCH v2 1/2] dt-bindings: regulator: Add support for multiple supplies Rob Herring @ 2023-04-24 8:52 ` Naresh Solanki 2023-05-03 8:03 ` Naresh Solanki 0 siblings, 1 reply; 5+ messages in thread From: Naresh Solanki @ 2023-04-24 8:52 UTC (permalink / raw) To: Rob Herring Cc: zev, Liam Girdwood, Mark Brown, Krzysztof Kozlowski, linux-kernel, devicetree 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 ^ permalink raw reply [flat|nested] 5+ messages in thread
* Re: [PATCH v2 1/2] dt-bindings: regulator: Add support for multiple supplies 2023-04-24 8:52 ` Naresh Solanki @ 2023-05-03 8:03 ` Naresh Solanki 0 siblings, 0 replies; 5+ messages in thread From: Naresh Solanki @ 2023-05-03 8:03 UTC (permalink / raw) To: Rob Herring Cc: zev, Liam Girdwood, Mark Brown, Krzysztof Kozlowski, linux-kernel, devicetree 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 ^ permalink raw reply [flat|nested] 5+ messages in thread
end of thread, other threads:[~2023-05-03 8:03 UTC | newest] Thread overview: 5+ messages (download: mbox.gz follow: Atom feed -- links below jump to the message on this page -- 2023-04-20 19:24 [PATCH v2 1/2] dt-bindings: regulator: Add support for multiple supplies Naresh Solanki 2023-04-20 19:24 ` [PATCH v2 2/2] regulator: userspace-consumer: Support multiple supplies in DT Naresh Solanki 2023-04-21 21:36 ` [PATCH v2 1/2] dt-bindings: regulator: Add support for multiple supplies Rob Herring 2023-04-24 8:52 ` Naresh Solanki 2023-05-03 8:03 ` Naresh Solanki
This is an external index of several public inboxes, see mirroring instructions on how to clone and mirror all data and code used by this external index.