Commit ca62e909 authored by Linus Torvalds's avatar Linus Torvalds
Browse files
Pull regulator updates from Mark Brown:
 "Not much going on with regulator this cycle, even in terms of cleanups
  and fixes things were fairly quiet.

   - New helper for setting ramp delay

   - Conversion of the Qualcomm RPMH bindings to YAML

   - Support for Tang Cheng TCS4525"

* tag 'regulator-v5.13' of git://git.kernel.org/pub/scm/linux/kernel/git/broonie/regulator: (26 commits)
  regulator: Add binding for TCS4525
  regulator: fan53555: Add TCS4525 DCDC support
  dt-bindings: vendor-prefixes: Add Tang Cheng (TCS)
  regulator: core: Fix off_on_delay handling
  regulator: core: Respect off_on_delay at startup
  regulator: core.c: Improve a comment
  regulator: Avoid a double 'of_node_get' in 'regulator_of_get_init_node()'
  regulator: core.c: Fix indentation of comment
  regulator: s2mps11: Drop initialization via platform data
  regulator: s2mpa01: Drop initialization via platform data
  regulator: da9121: automotive variants identity fix
  regulator: Add regmap helper for ramp-delay setting
  regulator: helpers: Export helper voltage listing
  regulator: Add compatibles for PM7325/PMR735A
  regulator: Convert RPMh regulator bindings to YAML
  regulator: qcom-rpmh: Add PM7325/PMR735A regulator support
  regulator: qcom-rpmh: Add pmic5_ftsmps520 buck
  regulator: mt6360: remove redundant error print
  regulator: bd9576: Fix return from bd957x_probe()
  regulator: add missing call to of_node_put()
  ...
parents fed584c4 4dd1c953
Loading
Loading
Loading
Loading
+2 −2
Original line number Diff line number Diff line
Binding for Fairchild FAN53555 regulators

Required properties:
  - compatible: one of "fcs,fan53555", "fcs,fan53526", "silergy,syr827" or
		"silergy,syr828"
  - compatible: one of "fcs,fan53555", "fcs,fan53526", "silergy,syr827",
		"silergy,syr828" or "tcs,tcs4525".
  - reg: I2C address

Optional properties:
+0 −180
Original line number Diff line number Diff line
Qualcomm Technologies, Inc. RPMh Regulators

rpmh-regulator devices support PMIC regulator management via the Voltage
Regulator Manager (VRM) and Oscillator Buffer (XOB) RPMh accelerators.  The APPS
processor communicates with these hardware blocks via a Resource State
Coordinator (RSC) using command packets.  The VRM allows changing three
parameters for a given regulator: enable state, output voltage, and operating
mode.  The XOB allows changing only a single parameter for a given regulator:
its enable state.  Despite its name, the XOB is capable of controlling the
enable state of any PMIC peripheral.  It is used for clock buffers, low-voltage
switches, and LDO/SMPS regulators which have a fixed voltage and mode.

=======================
Required Node Structure
=======================

RPMh regulators must be described in two levels of device nodes.  The first
level describes the PMIC containing the regulators and must reside within an
RPMh device node.  The second level describes each regulator within the PMIC
which is to be used on the board.  Each of these regulators maps to a single
RPMh resource.

The names used for regulator nodes must match those supported by a given PMIC.
Supported regulator node names:
	PM8005:		smps1 - smps4
	PM8009:		smps1 - smps2, ldo1 - ldo7
	PM8150:		smps1 - smps10, ldo1 - ldo18
	PM8150L:	smps1 - smps8, ldo1 - ldo11, bob, flash, rgb
	PM8350:		smps1 - smps12, ldo1 - ldo10,
	PM8350C:	smps1 - smps10, ldo1 - ldo13, bob
	PM8998:		smps1 - smps13, ldo1 - ldo28, lvs1 - lvs2
	PMI8998:	bob
	PM6150:         smps1 - smps5, ldo1 - ldo19
	PM6150L:        smps1 - smps8, ldo1 - ldo11, bob
	PMX55:		smps1 - smps7, ldo1 - ldo16

========================
First Level Nodes - PMIC
========================

- compatible
	Usage:      required
	Value type: <string>
	Definition: Must be one of below:
		    "qcom,pm8005-rpmh-regulators"
		    "qcom,pm8009-rpmh-regulators"
		    "qcom,pm8009-1-rpmh-regulators"
		    "qcom,pm8150-rpmh-regulators"
		    "qcom,pm8150l-rpmh-regulators"
		    "qcom,pm8350-rpmh-regulators"
		    "qcom,pm8350c-rpmh-regulators"
		    "qcom,pm8998-rpmh-regulators"
		    "qcom,pmc8180-rpmh-regulators"
		    "qcom,pmc8180c-rpmh-regulators"
		    "qcom,pmi8998-rpmh-regulators"
		    "qcom,pm6150-rpmh-regulators"
		    "qcom,pm6150l-rpmh-regulators"
		    "qcom,pmx55-rpmh-regulators"

- qcom,pmic-id
	Usage:      required
	Value type: <string>
	Definition: RPMh resource name suffix used for the regulators found on
		    this PMIC.  Typical values: "a", "b", "c", "d", "e", "f".

- vdd-s1-supply
- vdd-s2-supply
- vdd-s3-supply
- vdd-s4-supply
	Usage:      optional (PM8998 and PM8005 only)
	Value type: <phandle>
	Definition: phandle of the parent supply regulator of one or more of the
		    regulators for this PMIC.

- vdd-s5-supply
- vdd-s6-supply
- vdd-s7-supply
- vdd-s8-supply
- vdd-s9-supply
- vdd-s10-supply
- vdd-s11-supply
- vdd-s12-supply
- vdd-s13-supply
- vdd-l1-l27-supply
- vdd-l2-l8-l17-supply
- vdd-l3-l11-supply
- vdd-l4-l5-supply
- vdd-l6-supply
- vdd-l7-l12-l14-l15-supply
- vdd-l9-supply
- vdd-l10-l23-l25-supply
- vdd-l13-l19-l21-supply
- vdd-l16-l28-supply
- vdd-l18-l22-supply
- vdd-l20-l24-supply
- vdd-l26-supply
- vin-lvs-1-2-supply
	Usage:      optional (PM8998 only)
	Value type: <phandle>
	Definition: phandle of the parent supply regulator of one or more of the
		    regulators for this PMIC.

- vdd-bob-supply
	Usage:      optional (PMI8998 only)
	Value type: <phandle>
	Definition: BOB regulator parent supply phandle

===============================
Second Level Nodes - Regulators
===============================

- qcom,always-wait-for-ack
	Usage:      optional
	Value type: <empty>
	Definition: Boolean flag which indicates that the application processor
		    must wait for an ACK or a NACK from RPMh for every request
		    sent for this regulator including those which are for a
		    strictly lower power state.

Other properties defined in Documentation/devicetree/bindings/regulator/regulator.txt
may also be used.  regulator-initial-mode and regulator-allowed-modes may be
specified for VRM regulators using mode values from
include/dt-bindings/regulator/qcom,rpmh-regulator.h.  regulator-allow-bypass
may be specified for BOB type regulators managed via VRM.
regulator-allow-set-load may be specified for LDO type regulators managed via
VRM.

========
Examples
========

#include <dt-bindings/regulator/qcom,rpmh-regulator.h>

&apps_rsc {
	pm8998-rpmh-regulators {
		compatible = "qcom,pm8998-rpmh-regulators";
		qcom,pmic-id = "a";

		vdd-l7-l12-l14-l15-supply = <&pm8998_s5>;

		smps2 {
			regulator-min-microvolt = <1100000>;
			regulator-max-microvolt = <1100000>;
		};

		pm8998_s5: smps5 {
			regulator-min-microvolt = <1904000>;
			regulator-max-microvolt = <2040000>;
		};

		ldo7 {
			regulator-min-microvolt = <1800000>;
			regulator-max-microvolt = <1800000>;
			regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
			regulator-allowed-modes =
				<RPMH_REGULATOR_MODE_LPM
				 RPMH_REGULATOR_MODE_HPM>;
			regulator-allow-set-load;
		};

		lvs1 {
			regulator-min-microvolt = <1800000>;
			regulator-max-microvolt = <1800000>;
		};
	};

	pmi8998-rpmh-regulators {
		compatible = "qcom,pmi8998-rpmh-regulators";
		qcom,pmic-id = "b";

		bob {
			regulator-min-microvolt = <3312000>;
			regulator-max-microvolt = <3600000>;
			regulator-allowed-modes =
				<RPMH_REGULATOR_MODE_AUTO
				 RPMH_REGULATOR_MODE_HPM>;
			regulator-initial-mode = <RPMH_REGULATOR_MODE_AUTO>;
		};
	};
};
+162 −0
Original line number Diff line number Diff line
# SPDX-License-Identifier: (GPL-2.0 OR BSD-2-Clause)
%YAML 1.2
---
$id: http://devicetree.org/schemas/regulator/qcom,rpmh-regulator.yaml#
$schema: http://devicetree.org/meta-schemas/core.yaml#

title: Qualcomm Technologies, Inc. RPMh Regulators

maintainers:
  - David Collins <collinsd@codeaurora.org>

description: |
    rpmh-regulator devices support PMIC regulator management via the Voltage
    Regulator Manager (VRM) and Oscillator Buffer (XOB) RPMh accelerators.
    The APPS processor communicates with these hardware blocks via a
    Resource State Coordinator (RSC) using command packets.  The VRM allows
    changing three parameters for a given regulator, enable state, output
    voltage, and operating mode.  The XOB allows changing only a single
    parameter for a given regulator, its enable state.  Despite its name,
    the XOB is capable of controlling the enable state of any PMIC peripheral.
    It is used for clock buffers, low-voltage switches, and LDO/SMPS regulators
    which have a fixed voltage and mode.

    =======================
    Required Node Structure
    =======================

    RPMh regulators must be described in two levels of device nodes.  The first
    level describes the PMIC containing the regulators and must reside within an
    RPMh device node.  The second level describes each regulator within the PMIC
    which is to be used on the board.  Each of these regulators maps to a single
    RPMh resource.

    The names used for regulator nodes must match those supported by a given
    PMIC. Supported regulator node names are
      For PM8005, smps1 - smps4
      For PM8009, smps1 - smps2, ldo1 - ldo7
      For PM8150, smps1 - smps10, ldo1 - ldo18
      For PM8150L, smps1 - smps8, ldo1 - ldo11, bob, flash, rgb
      For PM8350, smps1 - smps12, ldo1 - ldo10
      For PM8350C, smps1 - smps10, ldo1 - ldo13, bob
      For PM8998, smps1 - smps13, ldo1 - ldo28, lvs1 - lvs2
      For PMI8998, bob
      For PM6150, smps1 - smps5, ldo1 - ldo19
      For PM6150L, smps1 - smps8, ldo1 - ldo11, bob
      For PMX55, smps1 - smps7, ldo1 - ldo16
      For PM7325, smps1 - smps8, ldo1 - ldo19
      For PMR735A, smps1 - smps3, ldo1 - ldo7

properties:
  compatible:
    enum:
      - qcom,pm8005-rpmh-regulators
      - qcom,pm8009-rpmh-regulators
      - qcom,pm8009-1-rpmh-regulators
      - qcom,pm8150-rpmh-regulators
      - qcom,pm8150l-rpmh-regulators
      - qcom,pm8350-rpmh-regulators
      - qcom,pm8350c-rpmh-regulators
      - qcom,pm8998-rpmh-regulators
      - qcom,pmi8998-rpmh-regulators
      - qcom,pm6150-rpmh-regulators
      - qcom,pm6150l-rpmh-regulators
      - qcom,pmx55-rpmh-regulators
      - qcom,pm7325-rpmh-regulators
      - qcom,pmr735a-rpmh-regulators

  qcom,pmic-id:
    description: |
        RPMh resource name suffix used for the regulators found
        on this PMIC.
    $ref: /schemas/types.yaml#/definitions/string
    enum: [a, b, c, d, e, f]

  qcom,always-wait-for-ack:
    description: |
        Boolean flag which indicates that the application processor
        must wait for an ACK or a NACK from RPMh for every request
        sent for this regulator including those which are for a
        strictly lower power state.
    $ref: /schemas/types.yaml#/definitions/flag

  vdd-flash-supply:
    description: Input supply phandle of flash.

  vdd-rgb-supply:
    description: Input supply phandle of rgb.

  vin-lvs-1-2-supply:
    description: Input supply phandle of one or more regulators.

  vdd-bob-supply:
    description: BOB regulator parent supply phandle.

  bob:
    type: object
    $ref: "regulator.yaml#"
    description: BOB regulator node.

patternProperties:
  "^vdd-s([0-9]+)-supply$":
    description: Input supply phandle(s) of one or more regulators.

  "^vdd-(l[0-9]+[-]){1,5}supply$":
    description: Input supply phandle(s) of one or more regulators.

  "^(smps|ldo|lvs)[0-9]+$":
    type: object
    $ref: "regulator.yaml#"
    description: smps/ldo regulator nodes(s).

additionalProperties: false

required:
  - compatible
  - qcom,pmic-id

examples:
  - |
    #include <dt-bindings/regulator/qcom,rpmh-regulator.h>

    pm8998-rpmh-regulators {
        compatible = "qcom,pm8998-rpmh-regulators";
        qcom,pmic-id = "a";

        vdd-l7-l12-l14-l15-supply = <&pm8998_s5>;

        smps2 {
            regulator-min-microvolt = <1100000>;
            regulator-max-microvolt = <1100000>;
        };

        ldo7 {
            regulator-min-microvolt = <1800000>;
            regulator-max-microvolt = <1800000>;
            regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
            regulator-allowed-modes =
                <RPMH_REGULATOR_MODE_LPM
                 RPMH_REGULATOR_MODE_HPM>;
            regulator-allow-set-load;
        };

        lvs1 {
            regulator-min-microvolt = <1800000>;
            regulator-max-microvolt = <1800000>;
        };
    };

    pmi8998-rpmh-regulators {
        compatible = "qcom,pmi8998-rpmh-regulators";
        qcom,pmic-id = "b";

        bob {
            regulator-min-microvolt = <3312000>;
            regulator-max-microvolt = <3600000>;
            regulator-allowed-modes =
                <RPMH_REGULATOR_MODE_AUTO
                 RPMH_REGULATOR_MODE_HPM>;
            regulator-initial-mode = <RPMH_REGULATOR_MODE_AUTO>;
        };
    };
...
+2 −0
Original line number Diff line number Diff line
@@ -1113,6 +1113,8 @@ patternProperties:
    description: Trusted Computing Group
  "^tcl,.*":
    description: Toby Churchill Ltd.
  "^tcs,.*":
    description: Shenzhen City Tang Cheng Technology Co., Ltd.
  "^tdo,.*":
    description: Shangai Top Display Optoelectronics Co., Ltd
  "^technexion,.*":
+4 −7
Original line number Diff line number Diff line
@@ -206,7 +206,7 @@ static int bd957x_probe(struct platform_device *pdev)
{
	struct regmap *regmap;
	struct regulator_config config = { 0 };
	int i, err;
	int i;
	bool vout_mode, ddr_sel;
	const struct bd957x_regulator_data *reg_data = &bd9576_regulators[0];
	unsigned int num_reg_data = ARRAY_SIZE(bd9576_regulators);
@@ -279,8 +279,7 @@ static int bd957x_probe(struct platform_device *pdev)
		break;
	default:
		dev_err(&pdev->dev, "Unsupported chip type\n");
		err = -EINVAL;
		goto err;
		return -EINVAL;
	}

	config.dev = pdev->dev.parent;
@@ -300,8 +299,7 @@ static int bd957x_probe(struct platform_device *pdev)
			dev_err(&pdev->dev,
				"failed to register %s regulator\n",
				desc->name);
			err = PTR_ERR(rdev);
			goto err;
			return PTR_ERR(rdev);
		}
		/*
		 * Clear the VOUT1 GPIO setting - rest of the regulators do not
@@ -310,8 +308,7 @@ static int bd957x_probe(struct platform_device *pdev)
		config.ena_gpiod = NULL;
	}

err:
	return err;
	return 0;
}

static const struct platform_device_id bd957x_pmic_id[] = {
Loading