Re: [PATCH v3 6/7] dt-bindings: mfd: max77658: Add ADI MAX77658

From: Krzysztof Kozlowski
Date: Mon May 08 2023 - 16:02:25 EST


On 08/05/2023 15:10, Zeynep Arslanbenzer wrote:
> Add ADI MAX77658 devicetree document.
>
> Signed-off-by: Nurettin Bolucu <Nurettin.Bolucu@xxxxxxxxxx>
> Signed-off-by: Zeynep Arslanbenzer <Zeynep.Arslanbenzer@xxxxxxxxxx>
> ---
> .../devicetree/bindings/mfd/adi,max77658.yaml | 160 ++++++++++++++++++
> 1 file changed, 160 insertions(+)
> create mode 100644 Documentation/devicetree/bindings/mfd/adi,max77658.yaml
>
> diff --git a/Documentation/devicetree/bindings/mfd/adi,max77658.yaml b/Documentation/devicetree/bindings/mfd/adi,max77658.yaml
> new file mode 100644
> index 000000000000..4d6d87cd4b52
> --- /dev/null
> +++ b/Documentation/devicetree/bindings/mfd/adi,max77658.yaml
> @@ -0,0 +1,160 @@
> +# SPDX-License-Identifier: GPL-2.0-only OR BSD-2-Clause
> +%YAML 1.2
> +---
> +$id: http://devicetree.org/schemas/mfd/adi,max77658.yaml#
> +$schema: http://devicetree.org/meta-schemas/core.yaml#
> +
> +title: MAX77643/54/58/59 PMIC from ADI
> +
> +maintainers:
> + - Nurettin Bolucu <Nurettin.Bolucu@xxxxxxxxxx>
> + - Zeynep Arslanbenzer <Zeynep.Arslanbenzer@xxxxxxxxxx>
> +
> +description: |
> + MAX77643, MAX77654, MAX77658 and MAX77659 devices are a family of ADI PMICs
> + providing battery charging and power supply solutions for
> + low-power applications.
> +
> + MAX77643 is a Power Management IC with 1 LDO regulator.
> +
> + MAX77654 is a Power Management IC with 2 LDO regulators and 1 charger.
> +
> + MAX77658 is a Power Management IC with 2 LDO regulators, 1 charger
> + and 1 fuel gauge.
> +
> + MAX77659 is a Power Management IC with 1 LDO regulator and 1 charger.
> +
> +properties:
> + compatible:
> + enum:
> + - adi,max77643
> + - adi,max77654
> + - adi,max77658
> + - adi,max77659
> +
> + reg:
> + items:
> + - enum: [0x40, 0x48]
> +
> + interrupts:
> + maxItems: 1
> +
> + charger:
> + $ref: /schemas/power/supply/adi,max77658-charger.yaml
> +
> + fuel-gauge:
> + $ref: /schemas/power/supply/adi,max77658-battery.yaml
> +
> + regulators:
> + type: object
> +
> + description:
> + The regulators is represented as a sub-node of the PMIC node on the device tree.
> +
> + patternProperties:
> + "^LDO[01]$":

lowercase

> + type: object
> + $ref: /schemas/regulator/regulator.yaml
> + additionalProperties: false
> + description:
> + LDO regulator
> +
> + properties:
> + regulator-always-on: true
> + regulator-boot-on: true

Why nothing else is allowed? You have different voltages, so how can you
configure their constraints if you do not allow them to be configured?
Drop all properties and use unevaluatedProperties..

> +
> + additionalProperties: false
> +
> +allOf:
> + - if:
> + properties:
> + compatible:
> + contains:
> + enum:
> + - adi,max77643
> + - adi,max77654
> + - adi,max77658
> +
> + then:
> + properties:
> + reg:
> + items:
> + - const: 0x48
> +
> + else:
> + properties:
> + reg:
> + items:
> + - const: 0x40

- if:
...

then:
properties:
regulators:
properties:
LDO1: false


> +
> +required:
> + - compatible
> + - reg
> + - interrupts

Put required before allOf.

> +
> +additionalProperties: false
> +
> +examples:
> + - |
> + battery: battery-cell {
> + compatible = "simple-battery";
> + alert-celsius = <0 100>;
> + constant-charge-current-max-microamp = <15000>;
> + };
> + #include <dt-bindings/interrupt-controller/irq.h>
> + i2c {
> + #address-cells = <1>;
> + #size-cells = <0>;
> + pmic@48 {
> + compatible = "adi,max77658";
> + reg = <0x48>;
> + interrupt-parent = <&gpio>;
> + interrupts = <16 IRQ_TYPE_EDGE_FALLING>;
> + charger {
> + compatible = "adi,max77658-charger";
> + monitored-battery = <&battery>;
> + adi,input-current-limit-microamp = <475000>;
> + };
> + regulators {
> + LDO0 {
> + regulator-boot-on;
> + regulator-always-on;
> + };
> + LDO1 {
> + regulator-boot-on;
> + regulator-always-on;
> + };
> + };
> + fuel-gauge {
> + compatible = "adi,max77658-battery";
> + monitored-battery = <&battery>;
> + adi,valrt-min-microvolt = <0>;
> + adi,valrt-max-microvolt = <5100000>;
> + adi,ialrt-min-microamp = <(-5000)>;
> + adi,ialrt-max-microamp = <5000>;
> + };
> + };
> + };
> +
> + - |
> + #include <dt-bindings/interrupt-controller/irq.h>
> + i2c {
> + #address-cells = <1>;
> + #size-cells = <0>;
> + pmic@40 {
> + compatible = "adi,max77659";
> + reg = <0x40>;
> + interrupt-parent = <&gpio>;
> + interrupts = <16 IRQ_TYPE_EDGE_FALLING>;
> + charger {
> + compatible = "adi,max77659-charger";
> + monitored-battery = <&battery>;
> + };
> + regulators {
> + LDO0 {
> + regulator-boot-on;
> + regulator-always-on;
> + };
> + };
> + };
> + };

Best regards,
Krzysztof