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
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>
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
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>
© 2016 - 2026 Red Hat, Inc.