On Mon, Oct 23, 2023 at 08:38:07PM +0200, Geert Uytterhoeven wrote: > Convert the Austria MicroSystems AS3711 Quad Buck High Current PMIC with > Charger Device Tree binding documentation to json-schema. > > Signed-off-by: Geert Uytterhoeven <geert+renesas@xxxxxxxxx> > --- > RFC, as I couldn't get the multiple dependencies right (see FIXMEs): > 1. How to incorporate "su2-dev: [ su2-max-uA ]" and > "su2-feedback-curr-auto: [ su2-dev ]"? > 2. su2-dev requiring one of su2-fbprot-* does not seem to work? > > Anyone with better *Of foo? Thanks! > --- > .../devicetree/bindings/mfd/ams,as3711.yaml | 223 ++++++++++++++++++ > .../devicetree/bindings/mfd/as3711.txt | 73 ------ > 2 files changed, 223 insertions(+), 73 deletions(-) > create mode 100644 Documentation/devicetree/bindings/mfd/ams,as3711.yaml > delete mode 100644 Documentation/devicetree/bindings/mfd/as3711.txt > > diff --git a/Documentation/devicetree/bindings/mfd/ams,as3711.yaml b/Documentation/devicetree/bindings/mfd/ams,as3711.yaml > new file mode 100644 > index 0000000000000000..d9f08e017194c4f8 > --- /dev/null > +++ b/Documentation/devicetree/bindings/mfd/ams,as3711.yaml > @@ -0,0 +1,223 @@ > +# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause) > +%YAML 1.2 > +--- > +$id: http://devicetree.org/schemas/mfd/ams,as3711.yaml# > +$schema: http://devicetree.org/meta-schemas/core.yaml# > + > +title: Austria MicroSystems AS3711 Quad Buck High Current PMIC with Charger > + > +maintainers: > + - Guennadi Liakhovetski <guennadi.liakhovetski@xxxxxxxxxxxxxxx> > + > +description: > + AS3711 is an I2C PMIC from Austria MicroSystems with multiple DCDC and LDO > + power supplies, a battery charger and an RTC. So far only bindings for the > + two stepup DCDC converters are defined. step-up? > + > +properties: > + compatible: > + const: ams,as3711 > + > + reg: > + maxItems: 1 > + > + backlight: > + description: > + Step-up converter configuration, to be used as a backlight source > + type: object > + properties: > + compatible: > + const: ams,as3711-bl > + > + su1-dev: > + description: Framebuffer phandle for the first step-up converter > + $ref: /schemas/types.yaml#/definitions/phandle > + > + su1-max-uA: > + description: Maximum current for the first step-up converter > + $ref: /schemas/types.yaml#/definitions/uint32 > + > + su2-dev: > + description: Framebuffer phandle for the second step-up converter > + $ref: /schemas/types.yaml#/definitions/phandle > + > + su2-max-uA: > + description: Maximum current for the second step-up converter > + $ref: /schemas/types.yaml#/definitions/uint32 > + > + su2-feedback-voltage: > + description: Second step-up converter uses voltage feedback > + type: boolean > + > + su2-feedback-curr1: > + description: > + Second step-up converter uses CURR1 input for current feedback > + type: boolean > + > + su2-feedback-curr2: > + description: > + Second step-up converter uses CURR2 input for current feedback > + type: boolean > + > + su2-feedback-curr3: > + description: > + Second step-up converter uses CURR3 input for current feedback > + type: boolean > + > + su2-feedback-curr-auto: > + description: > + Second step-up converter uses automatic current feedback selection > + type: boolean > + > + su2-fbprot-lx-sd4: > + description: > + Second step-up converter uses LX_SD4 for over-voltage protection > + type: boolean > + > + su2-fbprot-gpio2: > + description: > + Second step-up converter uses GPIO2 for over-voltage protection > + type: boolean > + > + su2-fbprot-gpio3: > + description: > + Second step-up converter uses GPIO3 for over-voltage protection > + type: boolean > + > + su2-fbprot-gpio4: > + description: > + Second step-up converter uses GPIO4 for over-voltage protection > + type: boolean > + > + su2-auto-curr1: > + description: > + Second step-up converter uses CURR1 input for automatic current > + feedback > + type: boolean > + > + su2-auto-curr2: > + description: > + Second step-up converter uses CURR2 input for automatic current > + feedback > + type: boolean > + > + su2-auto-curr3: > + description: > + Second step-up converter uses CURR3 input for automatic current > + feedback > + type: boolean > + > + required: > + - compatible > + > + dependencies: > + # To use the SU1 converter as a backlight source the following two > + # properties must be provided: > + su1-dev: [ su1-max-uA ] > + su1-max-uA: [ su1-dev ] > + > + # To use the SU2 converter as a backlight source the following two > + # properties must be provided: > + # FIXME How to incorporate "su2-dev: [ su2-max-uA ]"? > + # FIXME su2-dev requiring one of su2-fbprot-* does not seem to work? > + su2-dev: > + allOf: > + - oneOf: > + - required: > + - su2-feedback-voltage > + - required: > + - su2-feedback-curr1 > + - required: > + - su2-feedback-curr2 > + - required: > + - su2-feedback-curr3 > + - required: > + - su2-feedback-curr-auto > + - oneof: > + - required: > + - su2-fbprot-lx-sd4 > + - required: > + - su2-fbprot-gpio2 > + - required: > + - su2-fbprot-gpio3 > + - required: > + - su2-fbprot-gpio4 > + > + su2-max-uA: [ su2-dev ] > + su2-feedback-voltage: [ su2-dev ] > + su2-feedback-curr1: [ su2-dev ] > + su2-feedback-curr2: [ su2-dev ] > + su2-feedback-curr3: [ su2-dev ] > + # FIXME How to incorporate "su2-feedback-curr-auto: [ su2-dev ]"? > + su2-feedback-curr-auto: > + anyOf: > + - required: > + - su2-auto-curr1 > + - required: > + - su2-auto-curr2 > + - required: > + - su2-auto-curr3 > + su2-fbprot-lx-sd4: [ su2-dev ] > + su2-fbprot-gpio2: [ su2-dev ] > + su2-fbprot-gpio3: [ su2-dev ] > + su2-fbprot-gpio4: [ su2-dev ] > + su2-auto-curr1: [ su2-feedback-curr-auto ] > + su2-auto-curr2: [ su2-feedback-curr-auto ] > + su2-auto-curr3: [ su2-feedback-curr-auto ] > + > + additionalProperties: false Move this above 'properties'. Easier to read in the indented cases. > + > + regulators: > + description: Other DCDC and LDO supplies > + type: object > + patternProperties: > + "^(sd[1-4]|ldo[1-8])$": > + type: object > + $ref: /schemas/regulator/regulator.yaml# > + unevaluatedProperties: false > + > + unevaluatedProperties: false Same here, though this one is short. > + > +required: > + - compatible > + - reg > + > +additionalProperties: false > + > +examples: > + - | > + i2c { > + #address-cells = <1>; > + #size-cells = <0>; > + > + as3711@40 { pmic@40 > + compatible = "ams,as3711"; > + reg = <0x40>; > + > + regulators { > + sd4 { > + regulator-name = "1.215V"; > + regulator-min-microvolt = <1215000>; > + regulator-max-microvolt = <1235000>; > + }; > + ldo2 { > + regulator-name = "2.8V CPU"; > + regulator-min-microvolt = <2800000>; > + regulator-max-microvolt = <2800000>; > + regulator-always-on; > + regulator-boot-on; > + }; > + }; > + > + backlight { > + compatible = "ams,as3711-bl"; > + su2-dev = <&lcdc>; > + su2-max-uA = <36000>; > + su2-feedback-curr-auto; > + su2-fbprot-gpio4; > + su2-auto-curr1; > + su2-auto-curr2; > + su2-auto-curr3; > + }; > + }; > + };