On 28/05/2024 18:42, Andreas Kemnade wrote: > Convert the regulator bindings to yaml files. To allow only the regulator > compatible corresponding to the toplevel mfd compatible, split the file > into one per device. > > To not need to allow any subnode name, specify clearly node names > for all the regulators. > > Drop one twl5030 compatible due to no documentation on mfd side and no > users of the twl5030. > > Signed-off-by: Andreas Kemnade <andreas@xxxxxxxxxxxx> > --- > Changes in v2: > - add regulators directly to ti,twl.yaml > - less restrictions on regulator node name > > .../devicetree/bindings/mfd/ti,twl.yaml | 110 +++++++++++++++++- > .../bindings/regulator/twl-regulator.txt | 80 ------------- > 2 files changed, 109 insertions(+), 81 deletions(-) > delete mode 100644 Documentation/devicetree/bindings/regulator/twl-regulator.txt > > diff --git a/Documentation/devicetree/bindings/mfd/ti,twl.yaml b/Documentation/devicetree/bindings/mfd/ti,twl.yaml > index c2357fecb56c..9dc1874a79dc 100644 > --- a/Documentation/devicetree/bindings/mfd/ti,twl.yaml > +++ b/Documentation/devicetree/bindings/mfd/ti,twl.yaml > @@ -22,6 +22,42 @@ allOf: > contains: > const: ti,twl4030 > then: > + patternProperties: > + "^regulator-": Please define all nodes and properties in top-level. You can customize them in if:then. If this gets too complicated, then maybe schema should be split. > + type: object > + $ref: /schemas/regulator/regulator.yaml > + unevaluatedProperties: false > + properties: > + compatible: > + enum: > + - ti,twl4030-vaux1 > + - ti,twl4030-vaux2 > + - ti,twl4030-vaux3 > + - ti,twl4030-vaux4 > + - ti,twl4030-vmmc1 > + - ti,twl4030-vmmc2 > + - ti,twl4030-vpll1 > + - ti,twl4030-vpll2 > + - ti,twl4030-vsim > + - ti,twl4030-vdac > + - ti,twl4030-vintana2 > + - ti,twl4030-vio > + - ti,twl4030-vdd1 > + - ti,twl4030-vdd2 > + - ti,twl4030-vintana1 > + - ti,twl4030-vintdig > + - ti,twl4030-vusb1v5 > + - ti,twl4030-vusb1v8 > + - ti,twl4030-vusb3v1 > + regulator-initial-mode: > + items: > + - items: I am confused why you made it a matrix. This is an uint, so one number. enum: - 0x8 - 0xe > + enum: > + - 0x08 # Sleep mode, the nominal output voltage is maintained > + # with low power consumption with low load current capability > + - 0x0e # Active mode, the regulator can deliver its nominal output > + # voltage with full-load current capability > + > properties: > madc: > type: object > @@ -50,13 +86,43 @@ allOf: > properties: > compatible: > const: ti,twl4030-wdt > - > - if: > properties: > compatible: > contains: > const: ti,twl6030 > then: > + patternProperties: > + "^regulator-": > + type: object > + $ref: /schemas/regulator/regulator.yaml > + unevaluatedProperties: false > + properties: > + compatible: > + enum: > + - ti,twl6030-vaux1 > + - ti,twl6030-vaux2 > + - ti,twl6030-vaux3 > + - ti,twl6030-vmmc > + - ti,twl6030-vpp > + - ti,twl6030-vusim > + - ti,twl6030-vana > + - ti,twl6030-vcxio > + - ti,twl6030-vdac > + - ti,twl6030-vusb > + - ti,twl6030-v1v8 > + - ti,twl6030-v2v1 > + - ti,twl6030-vdd1 > + - ti,twl6030-vdd2 > + - ti,twl6030-vdd3 > + ti,retain-on-reset: > + description: > + Does not turn off the supplies during warm > + reset. Could be needed for VMMC, as TWL6030 > + reset sequence for this signal does not comply > + with the SD specification. > + type: boolean > + > properties: > gpadc: > type: object > @@ -69,6 +135,34 @@ allOf: > contains: > const: ti,twl6032 > then: > + patternProperties: > + "^regulator-": > + type: object > + $ref: /schemas/regulator/regulator.yaml > + unevaluatedProperties: false > + properties: > + compatible: > + enum: > + - ti,twl6032-ldo1 > + - ti,twl6032-ldo2 > + - ti,twl6032-ldo3 > + - ti,twl6032-ldo4 > + - ti,twl6032-ldo5 > + - ti,twl6032-ldo6 > + - ti,twl6032-ldo7 > + - ti,twl6032-ldoln > + - ti,twl6032-ldousb > + - ti,twl6032-smps3 > + - ti,twl6032-smps4 > + - ti,twl6032-vio > + ti,retain-on-reset: > + description: > + Does not turn off the supplies during warm > + reset. Could be needed for VMMC, as TWL6030 > + reset sequence for this signal does not comply > + with the SD specification. > + type: boolean > + > properties: > gpadc: > type: object > @@ -134,6 +228,20 @@ examples: > interrupt-controller; > #interrupt-cells = <1>; > interrupt-parent = <&gic>; > + > + gpadc { > + compatible = "ti,twl6030-gpadc"; > + interrupts = <6>; > + }; > + > + rtc { > + compatible = "ti,twl4030-rtc"; > + interrupts = <8>; > + }; > + > + regulator-vaux1 { > + compatible = "ti,twl6030-vaux1"; Add the initial mode and retain-on-reset properties to validate them. Best regards, Krzysztof