Unverified Commit 744ef9b0 authored by Adam Ward's avatar Adam Ward Committed by Mark Brown
Browse files

regulator: Update DA9121 dt-bindings



Update bindings for the Dialog Semiconductor DA9121 voltage regulator to
add device variants.
Because several variants have multiple regulators, and to regard potential
to add GPIO support in future, the 'regulators' sub-node is added,
following the precedent set by other multi-regulator devices, including
the DA9211 family. This breaks compatibility with the original submission
by Vincent Whitchurch - but as this is still in for-next, the alignment
could be made before upstreaming occurs.

Signed-off-by: default avatarAdam Ward <Adam.Ward.opensource@diasemi.com>
Link: https://lore.kernel.org/r/0606d3ded5fef4c38760246146f197db4ce3a374.1606755367.git.Adam.Ward.opensource@diasemi.com


Signed-off-by: default avatarMark Brown <broonie@kernel.org>
parent d3795d63
Loading
Loading
Loading
Loading
+153 −11
Original line number Diff line number Diff line
@@ -7,41 +7,183 @@ $schema: http://devicetree.org/meta-schemas/core.yaml#
title: Dialog Semiconductor DA9121 voltage regulator

maintainers:
  - Vincent Whitchurch <vincent.whitchurch@axis.com>
  - Adam Ward <Adam.Ward.opensource@diasemi.com>

description: |
  Dialog Semiconductor DA9121 Single-channel 10A double-phase buck converter
  Dialog Semiconductor DA9122 Double-channel  5A single-phase buck converter
  Dialog Semiconductor DA9220 Double-channel  3A single-phase buck converter
  Dialog Semiconductor DA9217 Single-channel  6A double-phase buck converter
  Dialog Semiconductor DA9130 Single-channel 10A double-phase buck converter
  Dialog Semiconductor DA9131 Double-channel  5A single-phase buck converter
  Dialog Semiconductor DA9132 Double-channel  3A single-phase buck converter

  Current limits

  This is PER PHASE, and the current limit setting in the devices reflect
  that with a maximum 10A limit. Allowing for transients at/near double
  the rated current, this translates across the device range to per
  channel figures as so...

                               | DA9121    DA9122     DA9220    DA9217   DA9140
                               | /DA9130   /DA9131    /DA9132
    -----------------------------------------------------------------------------
    Output current / channel   | 10000000   5000000   3000000   6000000  40000000
    Output current / phase     |  5000000   5000000   3000000   3000000   9500000
    -----------------------------------------------------------------------------
    Min regulator-min-microvolt|   300000    300000    300000    300000    500000
    Max regulator-max-microvolt|  1900000   1900000   1900000   1900000   1000000
    Device hardware default    |  1000000   1000000   1000000   1000000   1000000
    -----------------------------------------------------------------------------
    Min regulator-min-microamp |  7000000   3500000   3500000   7000000  26000000
    Max regulator-max-microamp | 20000000  10000000   6000000  12000000  78000000
    Device hardware default    | 15000000   7500000   5500000  11000000  58000000

properties:
  $nodename:
    pattern: "pmic@[0-9a-f]{1,2}"
  compatible:
    const: dlg,da9121
    enum:
      - dlg,da9121
      - dlg,da9122
      - dlg,da9220
      - dlg,da9217
      - dlg,da9130
      - dlg,da9131
      - dlg,da9132
      - dlg,da9140

  reg:
    maxItems: 1
    description: Specifies the I2C slave address.

  buck1:
    description:
      Initial data for the Buck1 regulator.
    $ref: "regulator.yaml#"
  interrupts:
    maxItems: 1
    description: IRQ line information.

  dlg,irq-polling-delay-passive-ms:
    $ref: "/schemas/types.yaml#/definitions/uint32"
    minimum: 1000
    maximum: 10000
    description: |
      Specify the polling period, measured in milliseconds, between interrupt status
      update checks. Range 1000-10000 ms.

  regulators:
    type: object
    $ref: regulator.yaml#
    description: |
      This node defines the settings for the BUCK. The content of the
      sub-node is defined by the standard binding for regulators; see regulator.yaml.
      The DA9121 regulator is bound using their names listed below
      buck1 - BUCK1
      buck2 - BUCK2       //DA9122, DA9220, DA9131, DA9132 only

additionalProperties: false
    patternProperties:
      "^buck([1-2])$":
        type: object
        $ref: regulator.yaml#

        properties:
          regulator-mode:
            maxItems: 1
            description: Defined in include/dt-bindings/regulator/dlg,da9121-regulator.h

          regulator-initial-mode:
            maxItems: 1
            description: Defined in include/dt-bindings/regulator/dlg,da9121-regulator.h

          enable-gpios:
            maxItems: 1
            description: Specify a valid GPIO for platform control of the regulator

          dlg,ripple-cancel:
            $ref: "/schemas/types.yaml#/definitions/uint32"
            description: |
              Defined in include/dt-bindings/regulator/dlg,da9121-regulator.h
              Only present on multi-channel devices (DA9122, DA9220, DA9131, DA9132)

        unevaluatedProperties: false

required:
  - compatible
  - reg
  - regulators

additionalProperties: false

examples:
  - |
    #include <dt-bindings/gpio/gpio.h>
    #include <dt-bindings/interrupt-controller/irq.h>
    #include <dt-bindings/regulator/dlg,da9121-regulator.h>
    i2c {
      #address-cells = <1>;
      #size-cells = <0>;
      regulator@68 {
      pmic@68 {
        compatible = "dlg,da9121";
        reg = <0x68>;

        buck1 {
          regulator-min-microvolt = <680000>;
          regulator-max-microvolt = <820000>;
        interrupt-parent = <&gpio6>;
        interrupts = <11 IRQ_TYPE_LEVEL_LOW>;

        dlg,irq-polling-delay-passive-ms = <2000>;

        regulators {
          DA9121_BUCK1: buck1 {
            regulator-name = "BUCK1";
            regulator-min-microvolt = <300000>;
            regulator-max-microvolt = <1900000>;
            regulator-min-microamp = <7000000>;
            regulator-max-microamp = <20000000>;
            regulator-boot-on;
            regulator-initial-mode = <DA9121_BUCK_MODE_AUTO>;
            enable-gpios = <&gpio 1 GPIO_ACTIVE_HIGH>;
          };
        };
      };
    };

  - |
    #include <dt-bindings/gpio/gpio.h>
    #include <dt-bindings/interrupt-controller/irq.h>
    #include <dt-bindings/regulator/dlg,da9121-regulator.h>
    i2c {
      #address-cells = <1>;
      #size-cells = <0>;
      pmic@68 {
        compatible = "dlg,da9122";
        reg = <0x68>;

        interrupt-parent = <&gpio6>;
        interrupts = <11 IRQ_TYPE_LEVEL_LOW>;

        dlg,irq-polling-delay-passive-ms = <2000>;

        regulators {
          DA9122_BUCK1: buck1 {
            regulator-name = "BUCK1";
            regulator-min-microvolt = <300000>;
            regulator-max-microvolt = <1900000>;
            regulator-min-microamp = <3500000>;
            regulator-max-microamp = <10000000>;
            regulator-boot-on;
            regulator-initial-mode = <DA9121_BUCK_MODE_AUTO>;
            enable-gpios = <&gpio6 1 GPIO_ACTIVE_HIGH>;
            dlg,ripple-cancel = <DA9121_BUCK_RIPPLE_CANCEL_NONE>;
          };
          DA9122_BUCK2: buck2 {
            regulator-name = "BUCK2";
            regulator-min-microvolt = <300000>;
            regulator-max-microvolt = <1900000>;
            regulator-min-microamp = <3500000>;
            regulator-max-microamp = <10000000>;
            regulator-boot-on;
            regulator-initial-mode = <DA9121_BUCK_MODE_AUTO>;
            enable-gpios = <&gpio6 2 GPIO_ACTIVE_HIGH>;
            dlg,ripple-cancel = <DA9121_BUCK_RIPPLE_CANCEL_NONE>;
          };
        };
      };
    };
...
+2 −0
Original line number Diff line number Diff line
@@ -5118,6 +5118,7 @@ S: Supported
W:	http://www.dialog-semiconductor.com/products
F:	Documentation/devicetree/bindings/input/da90??-onkey.txt
F:	Documentation/devicetree/bindings/mfd/da90*.txt
F:	Documentation/devicetree/bindings/regulator/dlg,da9*.yaml
F:	Documentation/devicetree/bindings/regulator/da92*.txt
F:	Documentation/devicetree/bindings/regulator/slg51000.txt
F:	Documentation/devicetree/bindings/sound/da[79]*.txt
@@ -5142,6 +5143,7 @@ F: drivers/rtc/rtc-da90??.c
F:	drivers/thermal/da90??-thermal.c
F:	drivers/video/backlight/da90??_bl.c
F:	drivers/watchdog/da90??_wdt.c
F:	include/dt-bindings/regulator/dlg,da9*-regulator.h
F:	include/linux/mfd/da903x.h
F:	include/linux/mfd/da9052/
F:	include/linux/mfd/da9055/
+22 −0
Original line number Diff line number Diff line
/* SPDX-License-Identifier: GPL-2.0+ */

#ifndef _DT_BINDINGS_REGULATOR_DLG_DA9121_H
#define _DT_BINDINGS_REGULATOR_DLG_DA9121_H

/*
 * These buck mode constants may be used to specify values in device tree
 * properties (e.g. regulator-initial-mode).
 * A description of the following modes is in the manufacturers datasheet.
 */

#define DA9121_BUCK_MODE_FORCE_PFM		0
#define DA9121_BUCK_MODE_FORCE_PWM		1
#define DA9121_BUCK_MODE_FORCE_PWM_SHEDDING	2
#define DA9121_BUCK_MODE_AUTO			3

#define DA9121_BUCK_RIPPLE_CANCEL_NONE		0
#define DA9121_BUCK_RIPPLE_CANCEL_SMALL		1
#define DA9121_BUCK_RIPPLE_CANCEL_MID		2
#define DA9121_BUCK_RIPPLE_CANCEL_LARGE		3

#endif