Commit bbb83990 authored by Linus Torvalds's avatar Linus Torvalds
Browse files
Pull regulator updates from Mark Brown:
 "This time around the bulk of the work on the regulator API has been
  cleanups of various kinds, partly but not entirely inspired by the W=1
  stuff that 0day turned on.

  There's also been a fairly large crop of new drivers, and a few
  bugfixes for existing drivers.

   - Mode setting support for MT6397 and DA9211.

   - New drivers for ChromeOS embedded controllers, Fairchild FAN53880,
     NXP PCA9450, Qualcomm LABIBB, MP5496, and VBUS booster, and Silergy
     SY8827N"

* tag 'regulator-v5.9' of git://git.kernel.org/pub/scm/linux/kernel/git/broonie/regulator: (67 commits)
  regulator: add the sub node names for the MP5496 PMIC
  regulator: cros-ec-regulator: Fix double free of desc->name.
  platform/chrome: cros_ec: Fix host command for regulator control.
  regulator: pca9450: Convert to use module_i2c_driver
  regulator: fix memory leak on error path of regulator_register()
  regulator: Replace HTTP links with HTTPS ones
  regulator: convert QCOM SMD-RPM regulator document to YAML schema
  regulator: gpio: Honor regulator-boot-on property
  regulator: core: Add destroy_regulator()
  regulator: Correct kernel-doc inconsistency
  regulator: Add labibb regulator binding
  regulator: qcom: Add labibb driver
  regulator: Allow regulators to verify enabled during enable()
  regulator: cros-ec: Constify cros_ec_regulator_voltage_ops
  regulator: devres: Standardise on function documentation headers
  regulator: of_regulator: Add missing colon for rdev kerneldoc argument
  regulator: devres: Fix issues with kerneldoc headers
  regulator: fan53880: Add support for COMPILE_TEST
  regulator: fan53880: Add missing .owner field in regulator_desc
  dt-bindings: regulator: add pca9450 regulator yaml
  ...
parents f8851cb2 3f027948
Loading
Loading
Loading
Loading
+4 −0
Original line number Diff line number Diff line
@@ -15,6 +15,8 @@ Required properties:
Optional properties:
- enable-gpios: platform gpio for control of BUCKA/BUCKB.
- Any optional property defined in regulator.txt
  - regulator-initial-mode and regulator-allowed-modes may be specified using
    mode values from dt-bindings/regulator/dlg,da9211-regulator.h

Example 1) DA9211
	pmic: da9211@68 {
@@ -30,6 +32,8 @@ Example 1) DA9211
				regulator-min-microamp 	= <2000000>;
				regulator-max-microamp 	= <5000000>;
				enable-gpios = <&gpio 27 0>;
				regulator-allowed-modes = <DA9211_BUCK_MODE_SYNC
							   DA9211_BUCK_MODE_AUTO>;
			};
		};
	};
+51 −0
Original line number Diff line number Diff line
# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
%YAML 1.2
---
$id: http://devicetree.org/schemas/regulator/google,cros-ec-regulator.yaml#
$schema: http://devicetree.org/meta-schemas/core.yaml#

title: ChromeOS EC controlled voltage regulators

maintainers:
  - Pi-Hsun Shih <pihsun@chromium.org>

description:
  Any property defined as part of the core regulator binding, defined in
  regulator.yaml, can also be used.

allOf:
  - $ref: "regulator.yaml#"

properties:
  compatible:
    const: google,cros-ec-regulator

  reg:
    maxItems: 1
    description: Identifier for the voltage regulator to ChromeOS EC.

required:
  - compatible
  - reg

examples:
  - |
    spi0 {
        #address-cells = <1>;
        #size-cells = <0>;

        cros_ec: ec@0 {
            compatible = "google,cros-ec-spi";
            reg = <0>;
            #address-cells = <1>;
            #size-cells = <0>;

            regulator@0 {
                compatible = "google,cros-ec-regulator";
                regulator-min-microvolt = <1800000>;
                regulator-max-microvolt = <3300000>;
                reg = <0>;
            };
        };
    };
...
+2 −2
Original line number Diff line number Diff line
@@ -37,8 +37,8 @@ Optional properties:
    (Documentation/devicetree/bindings/regulator/regulator.txt)

Datasheet
  - LP8720: http://www.ti.com/lit/ds/symlink/lp8720.pdf
  - LP8725: http://www.ti.com/lit/ds/symlink/lp8725.pdf
  - LP8720: https://www.ti.com/lit/ds/symlink/lp8720.pdf
  - LP8725: https://www.ti.com/lit/ds/symlink/lp8725.pdf

Example 1) LP8720

+3 −0
Original line number Diff line number Diff line
@@ -16,6 +16,9 @@ LDO:
  ldo_vemc3v3, ldo_vgp1, ldo_vgp2, ldo_vgp3, ldo_vgp4, ldo_vgp5, ldo_vgp6,
  ldo_vibr

BUCK regulators can set regulator-initial-mode and regulator-allowed-modes to
values specified in dt-bindings/regulator/mediatek,mt6397-regulator.h

Example:
	pmic {
		compatible = "mediatek,mt6397";
+190 −0
Original line number Diff line number Diff line
# SPDX-License-Identifier: GPL-2.0-only OR BSD-2-Clause
%YAML 1.2
---
$id: http://devicetree.org/schemas/regulator/nxp,pca9450-regulator.yaml#
$schema: http://devicetree.org/meta-schemas/core.yaml#

title: NXP PCA9450A/B/C Power Management Integrated Circuit regulators

maintainers:
  - Robin Gong <yibin.gong@nxp.com>

description: |
  Regulator nodes should be named to BUCK_<number> and LDO_<number>. The
  definition for each of these nodes is defined using the standard
  binding for regulators at
  Documentation/devicetree/bindings/regulator/regulator.txt.
  Datasheet is available at
  https://www.nxp.com/docs/en/data-sheet/PCA9450DS.pdf

#The valid names for PCA9450 regulator nodes are:
#BUCK1, BUCK2, BUCK3, BUCK4, BUCK5, BUCK6,
#LDO1, LDO2, LDO3, LDO4, LDO5
#Note: Buck3 removed on PCA9450B and connect with Buck1 on PCA9450C.

properties:
  compatible:
    enum:
      - nxp,pca9450a
      - nxp,pca9450b
      - nxp,pca9450c

  reg:
    maxItems: 1

  interrupts:
    maxItems: 1

  regulators:
    type: object
    description: |
      list of regulators provided by this controller

    patternProperties:
      "^LDO[1-5]$":
        type: object
        $ref: regulator.yaml#
        description:
          Properties for single LDO regulator.

        properties:
          regulator-name:
            pattern: "^LDO[1-5]$"
            description:
              should be "LDO1", ..., "LDO5"

        unevaluatedProperties: false

      "^BUCK[1-6]$":
        type: object
        $ref: regulator.yaml#
        description:
          Properties for single BUCK regulator.

        properties:
          regulator-name:
            pattern: "^BUCK[1-6]$"
            description:
              should be "BUCK1", ..., "BUCK6"

          nxp,dvs-run-voltage:
            $ref: "/schemas/types.yaml#/definitions/uint32"
            minimum: 600000
            maximum: 2187500
            description:
              PMIC default "RUN" state voltage in uV. Only Buck1~3 have such
              dvs(dynamic voltage scaling) property.

          nxp,dvs-standby-voltage:
            $ref: "/schemas/types.yaml#/definitions/uint32"
            minimum: 600000
            maximum: 2187500
            description:
              PMIC default "STANDBY" state voltage in uV. Only Buck1~3 have such
              dvs(dynamic voltage scaling) property.

        unevaluatedProperties: false

    additionalProperties: false

required:
  - compatible
  - reg
  - interrupts
  - regulators

additionalProperties: false

examples:
  - |
    #include <dt-bindings/interrupt-controller/irq.h>

    i2c {
        #address-cells = <1>;
        #size-cells = <0>;
        pmic: pmic@25 {
            compatible = "nxp,pca9450b";
            reg = <0x25>;
            pinctrl-0 = <&pinctrl_pmic>;
            interrupt-parent = <&gpio1>;
            interrupts = <3 IRQ_TYPE_LEVEL_LOW>;

            regulators {
                buck1: BUCK1 {
                    regulator-name = "BUCK1";
                    regulator-min-microvolt = <600000>;
                    regulator-max-microvolt = <2187500>;
                    regulator-boot-on;
                    regulator-always-on;
                    regulator-ramp-delay = <3125>;
                };
                buck2: BUCK2 {
                    regulator-name = "BUCK2";
                    regulator-min-microvolt = <600000>;
                    regulator-max-microvolt = <2187500>;
                    regulator-boot-on;
                    regulator-always-on;
                    regulator-ramp-delay = <3125>;
                    nxp,dvs-run-voltage = <950000>;
                    nxp,dvs-standby-voltage = <850000>;
                };
                buck4: BUCK4 {
                    regulator-name = "BUCK4";
                    regulator-min-microvolt = <600000>;
                    regulator-max-microvolt = <3400000>;
                    regulator-boot-on;
                    regulator-always-on;
                };
                buck5: BUCK5 {
                    regulator-name = "BUCK5";
                    regulator-min-microvolt = <600000>;
                    regulator-max-microvolt = <3400000>;
                    regulator-boot-on;
                    regulator-always-on;
                };
                buck6: BUCK6 {
                    regulator-name = "BUCK6";
                    regulator-min-microvolt = <600000>;
                    regulator-max-microvolt = <3400000>;
                    regulator-boot-on;
                    regulator-always-on;
                };

                ldo1: LDO1 {
                    regulator-name = "LDO1";
                    regulator-min-microvolt = <1600000>;
                    regulator-max-microvolt = <3300000>;
                    regulator-boot-on;
                    regulator-always-on;
                };
                ldo2: LDO2 {
                    regulator-name = "LDO2";
                    regulator-min-microvolt = <800000>;
                    regulator-max-microvolt = <1150000>;
                    regulator-boot-on;
                    regulator-always-on;
                };
                ldo3: LDO3 {
                    regulator-name = "LDO3";
                    regulator-min-microvolt = <800000>;
                    regulator-max-microvolt = <3300000>;
                    regulator-boot-on;
                    regulator-always-on;
                };
                ldo4: LDO4 {
                    regulator-name = "LDO4";
                    regulator-min-microvolt = <800000>;
                    regulator-max-microvolt = <3300000>;
                    regulator-boot-on;
                    regulator-always-on;
                };
                ldo5: LDO5 {
                    regulator-name = "LDO5";
                    regulator-min-microvolt = <1800000>;
                    regulator-max-microvolt = <3300000>;
                    regulator-boot-on;
                    regulator-always-on;
                };
            };
        };
    };
Loading