[PATCH v6 02/10] dt-bindings: mfd: brcm,bcm59056: Add compatible for BCM59054

Artur Weber posted 10 patches 11 months, 1 week ago
There is a newer version of this series
[PATCH v6 02/10] dt-bindings: mfd: brcm,bcm59056: Add compatible for BCM59054
Posted by Artur Weber 11 months, 1 week ago
The BCM59054 MFD is fairly similar to the BCM59056, and will use
the same driver. Add compatible and specify the allowed regulator
nodes.

Signed-off-by: Artur Weber <aweber.kernel@gmail.com>
---
Changes in v6:
- Replace mfd/brcm,bcm590xx.yaml with mfd/brcm,bcm59056.yaml

Changes in v5:
- Replace mfd/brcm,bcm59056.yaml with mfd/brcm,bcm590xx.yaml in
  regulator bindings description

Changes in v4:
- Fix yamllint errors (missing unevaluatedProperties)
- Drop comment with regulator name list
- Use full schema paths for $reg
- Change description of regulator binding to mention BCM59054
  explicitly
- Drop quotes around vbus reg name
- Change "Power Management IC" to "Power Management Unit" to match
  official Broadcom naming

Note that I did not end up moving the regulator refs from
allOf compatible matches; I explained my reasoning in [1].

[1] https://lore.kernel.org/lkml/ab853605-859d-44c6-8cbd-44391cd677e6@gmail.com/

Changes in v3:
- Split regulator node into separate file
- Removed quotes around compatible
---
 .../devicetree/bindings/mfd/brcm,bcm59056.yaml     | 26 +++++++++-
 .../bindings/regulator/brcm,bcm59054.yaml          | 56 ++++++++++++++++++++++
 2 files changed, 80 insertions(+), 2 deletions(-)

diff --git a/Documentation/devicetree/bindings/mfd/brcm,bcm59056.yaml b/Documentation/devicetree/bindings/mfd/brcm,bcm59056.yaml
index b387ef9885c3ac524e0782545dbca9c0e81a556c..b67d7a723fc242869e5bdc6b3602785f62af45bd 100644
--- a/Documentation/devicetree/bindings/mfd/brcm,bcm59056.yaml
+++ b/Documentation/devicetree/bindings/mfd/brcm,bcm59056.yaml
@@ -11,7 +11,9 @@ maintainers:
 
 properties:
   compatible:
-    const: brcm,bcm59056
+    enum:
+      - brcm,bcm59054
+      - brcm,bcm59056
 
   reg:
     maxItems: 1
@@ -21,7 +23,6 @@ properties:
 
   regulators:
     type: object
-    $ref: /schemas/regulator/brcm,bcm59056.yaml#
 
 required:
   - compatible
@@ -30,6 +31,27 @@ required:
 
 additionalProperties: false
 
+allOf:
+  - if:
+      properties:
+        compatible:
+          contains:
+            const: brcm,bcm59054
+    then:
+      properties:
+        regulators:
+          $ref: /schemas/regulator/brcm,bcm59054.yaml#
+
+  - if:
+      properties:
+        compatible:
+          contains:
+            const: brcm,bcm59056
+    then:
+      properties:
+        regulators:
+          $ref: /schemas/regulator/brcm,bcm59056.yaml#
+
 examples:
   - |
     #include <dt-bindings/interrupt-controller/arm-gic.h>
diff --git a/Documentation/devicetree/bindings/regulator/brcm,bcm59054.yaml b/Documentation/devicetree/bindings/regulator/brcm,bcm59054.yaml
new file mode 100644
index 0000000000000000000000000000000000000000..5b46d7fca05e21aa1eae991b5f9f60b444f20c1c
--- /dev/null
+++ b/Documentation/devicetree/bindings/regulator/brcm,bcm59054.yaml
@@ -0,0 +1,56 @@
+# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
+%YAML 1.2
+---
+$id: http://devicetree.org/schemas/regulator/brcm,bcm59054.yaml#
+$schema: http://devicetree.org/meta-schemas/core.yaml#
+
+title: Broadcom BCM59054 Power Management Unit regulators
+
+description: |
+  This is a part of device tree bindings for the BCM59054 power
+  management unit.
+
+  See Documentation/devicetree/bindings/mfd/brcm,bcm59056.yaml for
+  additional information and example.
+
+maintainers:
+  - Artur Weber <aweber.kernel@gmail.com>
+
+patternProperties:
+  "^(cam|sim|mmc)ldo[1-2]$":
+    type: object
+    $ref: /schemas/regulator/regulator.yaml#
+    unevaluatedProperties: false
+
+  "^(rf|sd|sdx|aud|mic|usb|vib|tcx)ldo$":
+    type: object
+    $ref: /schemas/regulator/regulator.yaml#
+    unevaluatedProperties: false
+
+  "^(c|mm|v)sr$":
+    type: object
+    $ref: /schemas/regulator/regulator.yaml#
+    unevaluatedProperties: false
+
+  "^(io|sd)sr[1-2]$":
+    type: object
+    $ref: /schemas/regulator/regulator.yaml#
+    unevaluatedProperties: false
+
+  "^gpldo[1-3]$":
+    type: object
+    $ref: /schemas/regulator/regulator.yaml#
+    unevaluatedProperties: false
+
+  "^lvldo[1-2]$":
+    type: object
+    $ref: /schemas/regulator/regulator.yaml#
+    unevaluatedProperties: false
+
+properties:
+  vbus:
+    type: object
+    $ref: /schemas/regulator/regulator.yaml#
+    unevaluatedProperties: false
+
+additionalProperties: false

-- 
2.48.1
Re: [PATCH v6 02/10] dt-bindings: mfd: brcm,bcm59056: Add compatible for BCM59054
Posted by Rob Herring 11 months, 1 week ago
On Tue, Mar 04, 2025 at 07:20:33AM +0100, Artur Weber wrote:
> The BCM59054 MFD is fairly similar to the BCM59056, and will use
> the same driver. Add compatible and specify the allowed regulator
> nodes.
> 
> Signed-off-by: Artur Weber <aweber.kernel@gmail.com>
> ---
> Changes in v6:
> - Replace mfd/brcm,bcm590xx.yaml with mfd/brcm,bcm59056.yaml
> 
> Changes in v5:
> - Replace mfd/brcm,bcm59056.yaml with mfd/brcm,bcm590xx.yaml in
>   regulator bindings description
> 
> Changes in v4:
> - Fix yamllint errors (missing unevaluatedProperties)
> - Drop comment with regulator name list
> - Use full schema paths for $reg
> - Change description of regulator binding to mention BCM59054
>   explicitly
> - Drop quotes around vbus reg name
> - Change "Power Management IC" to "Power Management Unit" to match
>   official Broadcom naming
> 
> Note that I did not end up moving the regulator refs from
> allOf compatible matches; I explained my reasoning in [1].
> 
> [1] https://lore.kernel.org/lkml/ab853605-859d-44c6-8cbd-44391cd677e6@gmail.com/
> 
> Changes in v3:
> - Split regulator node into separate file
> - Removed quotes around compatible
> ---
>  .../devicetree/bindings/mfd/brcm,bcm59056.yaml     | 26 +++++++++-
>  .../bindings/regulator/brcm,bcm59054.yaml          | 56 ++++++++++++++++++++++
>  2 files changed, 80 insertions(+), 2 deletions(-)
> 
> diff --git a/Documentation/devicetree/bindings/mfd/brcm,bcm59056.yaml b/Documentation/devicetree/bindings/mfd/brcm,bcm59056.yaml
> index b387ef9885c3ac524e0782545dbca9c0e81a556c..b67d7a723fc242869e5bdc6b3602785f62af45bd 100644
> --- a/Documentation/devicetree/bindings/mfd/brcm,bcm59056.yaml
> +++ b/Documentation/devicetree/bindings/mfd/brcm,bcm59056.yaml
> @@ -11,7 +11,9 @@ maintainers:
>  
>  properties:
>    compatible:
> -    const: brcm,bcm59056
> +    enum:
> +      - brcm,bcm59054
> +      - brcm,bcm59056
>  
>    reg:
>      maxItems: 1
> @@ -21,7 +23,6 @@ properties:
>  
>    regulators:
>      type: object
> -    $ref: /schemas/regulator/brcm,bcm59056.yaml#

Just do:

additionalProperties: true
properties:
  compatible:
    contains:
      enum:
        - brcm,bcm59056
        - brcm,bcm59054

(This patch should just add the last line)

And drop the allOf below.

>  
>  required:
>    - compatible
> @@ -30,6 +31,27 @@ required:
>  
>  additionalProperties: false
>  
> +allOf:
> +  - if:
> +      properties:
> +        compatible:
> +          contains:
> +            const: brcm,bcm59054
> +    then:
> +      properties:
> +        regulators:
> +          $ref: /schemas/regulator/brcm,bcm59054.yaml#
> +
> +  - if:
> +      properties:
> +        compatible:
> +          contains:
> +            const: brcm,bcm59056
> +    then:
> +      properties:
> +        regulators:
> +          $ref: /schemas/regulator/brcm,bcm59056.yaml#
> +
>  examples:
>    - |
>      #include <dt-bindings/interrupt-controller/arm-gic.h>
Re: [PATCH v6 02/10] dt-bindings: mfd: brcm,bcm59056: Add compatible for BCM59054
Posted by Artur Weber 11 months, 1 week ago
On 4.03.2025 15:19, Rob Herring wrote:
> On Tue, Mar 04, 2025 at 07:20:33AM +0100, Artur Weber wrote:
>> The BCM59054 MFD is fairly similar to the BCM59056, and will use
>> the same driver. Add compatible and specify the allowed regulator
>> nodes.
>>
>> Signed-off-by: Artur Weber <aweber.kernel@gmail.com>
>> ...
> And drop the allOf below.
> 
>>   
>>   required:
>>     - compatible
>> @@ -30,6 +31,27 @@ required:
>>   
>>   additionalProperties: false
>>   
>> +allOf:
>> +  - if:
>> +      properties:
>> +        compatible:
>> +          contains:
>> +            const: brcm,bcm59054
>> +    then:
>> +      properties:
>> +        regulators:
>> +          $ref: /schemas/regulator/brcm,bcm59054.yaml#
>> +
>> +  - if:
>> +      properties:
>> +        compatible:
>> +          contains:
>> +            const: brcm,bcm59056
>> +    then:
>> +      properties:
>> +        regulators:
>> +          $ref: /schemas/regulator/brcm,bcm59056.yaml#
>> +
>>   examples:
>>     - |
>>       #include <dt-bindings/interrupt-controller/arm-gic.h>

"Drop the allOf" as in, drop just the "allOf" line or the entire block
with "if" statements? If it's the latter - wouldn't that break the
bindings for the "regulators" subnode?

Best regards
Artur
Re: [PATCH v6 02/10] dt-bindings: mfd: brcm,bcm59056: Add compatible for BCM59054
Posted by Rob Herring 11 months, 1 week ago
On Wed, Mar 5, 2025 at 10:52 AM Artur Weber <aweber.kernel@gmail.com> wrote:
>
> On 4.03.2025 15:19, Rob Herring wrote:
> > On Tue, Mar 04, 2025 at 07:20:33AM +0100, Artur Weber wrote:
> >> The BCM59054 MFD is fairly similar to the BCM59056, and will use
> >> the same driver. Add compatible and specify the allowed regulator
> >> nodes.
> >>
> >> Signed-off-by: Artur Weber <aweber.kernel@gmail.com>
> >> ...
> > And drop the allOf below.
> >
> >>
> >>   required:
> >>     - compatible
> >> @@ -30,6 +31,27 @@ required:
> >>
> >>   additionalProperties: false
> >>
> >> +allOf:
> >> +  - if:
> >> +      properties:
> >> +        compatible:
> >> +          contains:
> >> +            const: brcm,bcm59054
> >> +    then:
> >> +      properties:
> >> +        regulators:
> >> +          $ref: /schemas/regulator/brcm,bcm59054.yaml#
> >> +
> >> +  - if:
> >> +      properties:
> >> +        compatible:
> >> +          contains:
> >> +            const: brcm,bcm59056
> >> +    then:
> >> +      properties:
> >> +        regulators:
> >> +          $ref: /schemas/regulator/brcm,bcm59056.yaml#
> >> +
> >>   examples:
> >>     - |
> >>       #include <dt-bindings/interrupt-controller/arm-gic.h>
>
> "Drop the allOf" as in, drop just the "allOf" line or the entire block
> with "if" statements? If it's the latter - wouldn't that break the
> bindings for the "regulators" subnode?

Uh, I misread this thinking the regulators node had a compatible... Never mind.

Reviewed-by: Rob Herring (Arm) <robh@kernel.org>