Commit 4bd37a90 authored by Linus Torvalds's avatar Linus Torvalds
Browse files
Pull regulator updates from Mark Brown:
 "This was a quite quiet release for regulators on the drivers front,
  but we do have two small but useful core improvements:

   - Improve handling of cases where DT platforms specify both DT and
     init_data based configuration for a single regulator.

   - A helper of_regulator_get_optional() to simplify writing generic
     bindings for regulator consumers in subsystems.

  There's also some YAML conversions for the DT bindings which are a big
  part of the diffstat"

* tag 'regulator-v6.13' of git://git.kernel.org/pub/scm/linux/kernel/git/broonie/regulator:
  regulator: dt-bindings: qcom,rpmh: Correct PM8550VE supplies
  regulator: Switch back to struct platform_driver::remove()
  regulator: doc: remove documentation comment for regulator_init
  regulator: doc: add missing documentation for init_cb
  regulator: rk808: Restrict DVS GPIOs to the RK808 variant only
  regulator: rk808: Use dev_err_probe() in the probe path
  regulator: rk808: Perform trivial code cleanups
  regulator: dt-bindings: qcom,qca6390-pmu: add more properties for wcn6855
  regulator: dt-bindings: lltc,ltc3676: convert to YAML
  regulator: core: Use fsleep() to get best sleep mechanism
  regulator: core: remove machine init callback from config
  regulator: core: add callback to perform runtime init
  regulator: core: do not silently ignore provided init_data
  regulator: max5970: Drop unused structs
  regulator: dt-bindings: vctrl-regulator: convert to YAML
  regulator: qcom-smd: make smd_vreg_rpm static
  regulator: Call of_node_put() only once in rzg2l_usb_vbus_regulator_probe()
  regulator: isl6271a: Drop explicit initialization of struct i2c_device_id::driver_data to 0
  regulator: Add devres version of of_regulator_get_optional()
  regulator: Add of_regulator_get_optional() for pure DT regulator lookup
parents 37c7d353 21ccadc6
Loading
Loading
Loading
Loading
+167 −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/lltc,ltc3676.yaml#
$schema: http://devicetree.org/meta-schemas/core.yaml#

title: Linear Technology LTC3676 8-output regulators

maintainers:
  - Tim Harvey <tharvey@gateworks.com>

description: |
  LTC3676 contains eight regulators, 4 switching SW1..SW4 and four LDO1..4 .

properties:
  compatible:
    const: lltc,ltc3676

  reg:
    maxItems: 1

  interrupts:
    maxItems: 1

  regulators:
    type: object
    additionalProperties: false
    description: |
      List of regulators provided by this controller, must be named
      after their hardware counterparts (SW|LDO)[1-4].

    patternProperties:
      "^(sw[1-4]|ldo[24])$":
        type: object
        unevaluatedProperties: false
        $ref: regulator.yaml#
        description:
          Properties for single SW or LDO regulator. Regulators SW1..SW4 can
          regulate the feedback reference from 412.5mV to 800mV in 12.5 mV
          steps. The output voltage thus ranges between 0.4125 * (1 + R1/R2) V
          and 0.8 * (1 + R1/R2) V.
          Regulators LDO1, LDO2, LDO4 have a fixed 0.725 V reference and thus
          output 0.725 * (1 + R1/R2) V.
          The LDO1 standby regulator can not be disabled and thus should have
          the regulator-always-on property set.

        properties:
          lltc,fb-voltage-divider:
            description:
              An array of two integers containing the resistor values
              R1 and R2 of the feedback voltage divider in ohms.
            $ref: /schemas/types.yaml#/definitions/uint32-array
            minItems: 2
            maxItems: 2

        required:
          - lltc,fb-voltage-divider

    properties:
      ldo1:
        type: object
        unevaluatedProperties: false
        $ref: regulator.yaml#
        description:
          The LDO1 standby regulator can not be disabled and thus should
          have the regulator-always-on property set. See patternProperties
          description above for the rest of the details.

        properties:
          lltc,fb-voltage-divider:
            description:
              An array of two integers containing the resistor values
              R1 and R2 of the feedback voltage divider in ohms.
            $ref: /schemas/types.yaml#/definitions/uint32-array
            minItems: 2
            maxItems: 2

        required:
          - lltc,fb-voltage-divider
          - regulator-always-on

      ldo3:
        type: object
        unevaluatedProperties: false
        $ref: regulator.yaml#
        description:
          The LDO3 regulator is fixed to 1.8 V. See patternProperties
          description above for the rest of the details.

required:
  - compatible
  - reg
  - regulators

additionalProperties: false

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

        pmic@3c {
            compatible = "lltc,ltc3676";
            reg = <0x3c>;

            regulators {
                sw1_reg: sw1 {
                    regulator-min-microvolt = <674400>;
                    regulator-max-microvolt = <1308000>;
                    lltc,fb-voltage-divider = <127000 200000>;
                    regulator-ramp-delay = <7000>;
                    regulator-boot-on;
                    regulator-always-on;
                };

                sw2_reg: sw2 {
                    regulator-min-microvolt = <1033310>;
                    regulator-max-microvolt = <200400>;
                    lltc,fb-voltage-divider = <301000 200000>;
                    regulator-ramp-delay = <7000>;
                    regulator-boot-on;
                    regulator-always-on;
                };

                sw3_reg: sw3 {
                    regulator-min-microvolt = <674400>;
                    regulator-max-microvolt = <130800>;
                    lltc,fb-voltage-divider = <127000 200000>;
                    regulator-ramp-delay = <7000>;
                    regulator-boot-on;
                    regulator-always-on;
                };

                sw4_reg: sw4 {
                    regulator-min-microvolt = <868310>;
                    regulator-max-microvolt = <168400>;
                    lltc,fb-voltage-divider = <221000 200000>;
                    regulator-ramp-delay = <7000>;
                    regulator-boot-on;
                    regulator-always-on;
                };

                ldo2_reg: ldo2 {
                    regulator-min-microvolt = <2490375>;
                    regulator-max-microvolt = <2490375>;
                    lltc,fb-voltage-divider = <487000 200000>;
                    regulator-boot-on;
                    regulator-always-on;
                };

                ldo3_reg: ldo3 {
                    regulator-min-microvolt = <1800000>;
                    regulator-max-microvolt = <1800000>;
                    regulator-boot-on;
                };

                ldo4_reg: ldo4 {
                    regulator-min-microvolt = <3023250>;
                    regulator-max-microvolt = <3023250>;
                    lltc,fb-voltage-divider = <634000 200000>;
                    regulator-boot-on;
                    regulator-always-on;
                };
            };
        };
    };
+0 −94
Original line number Diff line number Diff line
Linear Technology LTC3676 8-output regulators

Required properties:
- compatible: "lltc,ltc3676"
- reg: I2C slave address

Required child node:
- regulators: Contains eight regulator child nodes sw1, sw2, sw3, sw4,
  ldo1, ldo2, ldo3, and ldo4, specifying the initialization data as
  documented in Documentation/devicetree/bindings/regulator/regulator.txt.

Each regulator is defined using the standard binding for regulators. The
nodes for sw1, sw2, sw3, sw4, ldo1, ldo2 and ldo4 additionally need to specify
the resistor values of their external feedback voltage dividers:

Required properties (not on ldo3):
- lltc,fb-voltage-divider: An array of two integers containing the resistor
  values R1 and R2 of the feedback voltage divider in ohms.

Regulators sw1, sw2, sw3, sw4 can regulate the feedback reference from:
412.5mV to 800mV in 12.5 mV steps. The output voltage thus ranges between
0.4125 * (1 + R1/R2) V and 0.8 * (1 + R1/R2) V.

Regulators ldo1, ldo2, and ldo4 have a fixed 0.725 V reference and thus output
0.725 * (1 + R1/R2) V. The ldo3 regulator is fixed to 1.8 V.  The ldo1 standby
regulator can not be disabled and thus should have the regulator-always-on
property set.

Example:

	ltc3676: pmic@3c {
		compatible = "lltc,ltc3676";
		reg = <0x3c>;

		regulators {
			sw1_reg: sw1 {
				regulator-min-microvolt = <674400>;
				regulator-max-microvolt = <1308000>;
				lltc,fb-voltage-divider = <127000 200000>;
				regulator-ramp-delay = <7000>;
				regulator-boot-on;
				regulator-always-on;
			};

			sw2_reg: sw2 {
				regulator-min-microvolt = <1033310>;
				regulator-max-microvolt = <200400>;
				lltc,fb-voltage-divider = <301000 200000>;
				regulator-ramp-delay = <7000>;
				regulator-boot-on;
				regulator-always-on;
			};

			sw3_reg: sw3 {
				regulator-min-microvolt = <674400>;
				regulator-max-microvolt = <130800>;
				lltc,fb-voltage-divider = <127000 200000>;
				regulator-ramp-delay = <7000>;
				regulator-boot-on;
				regulator-always-on;
			};

			sw4_reg: sw4 {
				regulator-min-microvolt = <868310>;
				regulator-max-microvolt = <168400>;
				lltc,fb-voltage-divider = <221000 200000>;
				regulator-ramp-delay = <7000>;
				regulator-boot-on;
				regulator-always-on;
			};

			ldo2_reg: ldo2 {
				regulator-min-microvolt = <2490375>;
				regulator-max-microvolt = <2490375>;
				lltc,fb-voltage-divider = <487000 200000>;
				regulator-boot-on;
				regulator-always-on;
			};

			ldo3_reg: ldo3 {
				regulator-min-microvolt = <1800000>;
				regulator-max-microvolt = <1800000>;
				regulator-boot-on;
			};

			ldo4_reg: ldo4 {
				regulator-min-microvolt = <3023250>;
				regulator-max-microvolt = <3023250>;
				lltc,fb-voltage-divider = <634000 200000>;
				regulator-boot-on;
				regulator-always-on;
			};
		};
	};
+12 −0
Original line number Diff line number Diff line
@@ -33,6 +33,12 @@ properties:
  vddpmu-supply:
    description: VDD_PMU supply regulator handle

  vddpmumx-supply:
    description: VDD_PMU_MX supply regulator handle

  vddpmucx-supply:
    description: VDD_PMU_CX supply regulator handle

  vddio1p2-supply:
    description: VDD_IO_1P2 supply regulator handle

@@ -72,6 +78,10 @@ properties:
    maxItems: 1
    description: GPIO line indicating the state of the clock supply to the BT module

  xo-clk-gpios:
    maxItems: 1
    description: GPIO line allowing to select the XO clock configuration for the module

  clocks:
    maxItems: 1
    description: Reference clock handle
@@ -119,6 +129,8 @@ allOf:
        - vddio-supply
        - vddaon-supply
        - vddpmu-supply
        - vddpmumx-supply
        - vddpmucx-supply
        - vddrfa0p95-supply
        - vddrfa1p3-supply
        - vddrfa1p9-supply
+1 −1
Original line number Diff line number Diff line
@@ -349,7 +349,6 @@ allOf:
      properties:
        compatible:
          enum:
            - qcom,pm8550ve-rpmh-regulators
            - qcom,pm8550vs-rpmh-regulators
    then:
      patternProperties:
@@ -385,6 +384,7 @@ allOf:
        compatible:
          enum:
            - qcom,pmc8380-rpmh-regulators
            - qcom,pm8550ve-rpmh-regulators
    then:
      patternProperties:
        "^vdd-l[1-3]-supply$": true
+80 −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/vctrl-regulator.yaml#
$schema: http://devicetree.org/meta-schemas/core.yaml#

title: Voltage controlled regulators

maintainers:
  - Heiko Stuebner <heiko@sntech.de>

allOf:
  - $ref: regulator.yaml#

properties:
  compatible:
    const: vctrl-regulator

  ctrl-supply:
    description: Regulator supplying the control voltage

  ctrl-voltage-range:
    description:
      Array of two integer values describing the range (min/max) of the
      control voltage. The values specify the control voltage needed to
      generate the corresponding regulator-min/max-microvolt output
      voltage.
    minItems: 2
    maxItems: 2
    $ref: /schemas/types.yaml#/definitions/uint32-array

  min-slew-down-rate:
    description:
      Describes how slowly the regulator voltage will decay down in the
      worst case (lightest expected load). Specified in uV / us (like
      main regulator ramp rate). This value is required when
      ovp-threshold-percent is specified.
    $ref: /schemas/types.yaml#/definitions/uint32

  ovp-threshold-percent:
    description:
      Overvoltage protection (OVP) threshold of the regulator in percent.
      Some regulators have an OVP circuitry which shuts down the regulator
      when the actual output voltage deviates beyond a certain margin from
      the expected value for a given control voltage. On larger voltage
      decreases this can occur undesiredly since the output voltage does
      not adjust immediately to changes in the control voltage. To avoid
      this situation the vctrl driver breaks down larger voltage decreases
      into multiple steps, where each step is within the OVP threshold.
    minimum: 0
    maximum: 100

unevaluatedProperties: false

dependencies:
  ovp-threshold-percent: [ min-slew-down-rate ]

required:
  - compatible
  - ctrl-supply
  - ctrl-voltage-range
  - regulator-min-microvolt
  - regulator-max-microvolt

examples:
  - |
    vctrl-reg {
            compatible = "vctrl-regulator";
            regulator-name = "vctrl_reg";

            ctrl-supply = <&ctrl_reg>;
            ctrl-voltage-range = <200000 500000>;

            min-slew-down-rate = <225>;
            ovp-threshold-percent = <16>;

            regulator-min-microvolt = <800000>;
            regulator-max-microvolt = <1500000>;
    };
...
Loading