Re: [PATCH v2 1/2] regulator: dt-bindings: add QCOM RPMh regulator bindings

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Fri, Apr 13, 2018 at 07:50:34PM -0700, David Collins wrote:
> Introduce bindings for RPMh regulator devices found on some
> Qualcomm Technlogies, Inc. SoCs.  These devices allow a given
> processor within the SoC to make PMIC regulator requests which
> are aggregated within the RPMh hardware block along with requests
> from other processors in the SoC to determine the final PMIC
> regulator hardware state.
> 
> Signed-off-by: David Collins <collinsd@xxxxxxxxxxxxxx>
> ---
>  .../bindings/regulator/qcom,rpmh-regulator.txt     | 207 +++++++++++++++++++++
>  .../dt-bindings/regulator/qcom,rpmh-regulator.h    |  36 ++++
>  2 files changed, 243 insertions(+)
>  create mode 100644 Documentation/devicetree/bindings/regulator/qcom,rpmh-regulator.txt
>  create mode 100644 include/dt-bindings/regulator/qcom,rpmh-regulator.h
> 
> diff --git a/Documentation/devicetree/bindings/regulator/qcom,rpmh-regulator.txt b/Documentation/devicetree/bindings/regulator/qcom,rpmh-regulator.txt
> new file mode 100644
> index 0000000..69748ea
> --- /dev/null
> +++ b/Documentation/devicetree/bindings/regulator/qcom,rpmh-regulator.txt
> @@ -0,0 +1,207 @@
> +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 four
> +parameters for a given regulator: enable state, output voltage, operating mode,
> +and minimum headroom voltage.  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:
> +	PM8998:		smps1 - smps13, ldo1 - ldo28, lvs1 - lvs2
> +	PMI8998:	bob
> +	PM8005:		smps1 - smps4
> +
> +========================
> +First Level Nodes - PMIC
> +========================
> +
> +- compatible
> +	Usage:      required
> +	Value type: <string>
> +	Definition: Must be one of: "qcom,pm8998-rpmh-regulators",
> +		    "qcom,pmi8998-rpmh-regulators" or
> +		    "qcom,pm8005-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

Use '-' rather than '_' on all these.

> +- vdd_s2-supply
> +- vdd_s3-supply
> +- vdd_s4-supply
> +- 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
> +- vdd_lvs1_lvs2-supply
> +- vdd_lvs1_lvs2-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
> +
> +- vdd_s1-supply
> +- vdd_s2-supply
> +- vdd_s3-supply
> +- vdd_s4-supply

Listed twice?

> +	Usage:      optional (PM8005 only)
> +	Value type: <phandle>
> +	Definition: phandle of the parent supply regulator of one or more of the
> +		    regulators for this PMIC.
> +
> +===============================
> +Second Level Nodes - Regulators
> +===============================
> +
> +- qcom,regulator-initial-voltage
> +	Usage:      optional; VRM regulators only
> +	Value type: <u32>
> +	Definition: Specifies the initial voltage in microvolts to request for a
> +		    VRM regulator.
> +
> +- regulator-initial-mode

Vendor prefix?

> +	Usage:      optional; VRM regulators only
> +	Value type: <u32>
> +	Definition: Specifies the initial mode to request for a VRM regulator.
> +		    Supported values are RPMH_REGULATOR_MODE_* which are defined
> +		    in [1] (i.e. 0 to 3).  This property may be specified even
> +		    if the regulator-allow-set-load property is not specified.
> +
> +- qcom,allowed-drms-modes
> +	Usage:      required if regulator-allow-set-load is specified;
> +		    VRM regulators only
> +	Value type: <prop-encoded-array>
> +	Definition: A list of integers specifying the PMIC regulator modes which
> +		    can be configured at runtime based upon consumer load needs.
> +		    Supported values are RPMH_REGULATOR_MODE_* which are defined
> +		    in [1] (i.e. 0 to 3).
> +
> +- qcom,drms-mode-threshold-currents
> +	Usage:      required if regulator-allow-set-load is specified;
> +		    VRM regulators only
> +	Value type: <prop-encoded-array>
> +	Definition: A list of integers specifying the maximum allowed load
> +		    current in microamps for each of the modes listed in
> +		    qcom,allowed-drms-modes (matched 1-to-1 in order).  Elements
> +		    must be specified in order from lowest to highest value.
> +
> +- qcom,headroom-voltage
> +	Usage:      optional; VRM regulators only
> +	Value type: <u32>
> +	Definition: Specifies the headroom voltage in microvolts to request for
> +		    a VRM regulator.  RPMh hardware automatically ensures that
> +		    the parent of this regulator outputs a voltage high enough
> +		    to satisfy the requested headroom.  Supported values are
> +		    0 to 511000.
> +
> +- 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.txt
> +may also be used.
> +
> +[1] include/dt-bindings/regulator/qcom,rpmh-regulator.h
> +
> +========
> +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>;
> +			qcom,regulator-initial-voltage = <1100000>;
> +		};
> +
> +		pm8998_s5: smps5 {
> +			regulator-min-microvolt = <1904000>;
> +			regulator-max-microvolt = <2040000>;
> +			qcom,regulator-initial-voltage = <1904000>;
> +		};
> +
> +		ldo7 {
> +			regulator-min-microvolt = <1800000>;
> +			regulator-max-microvolt = <1800000>;
> +			qcom,regulator-initial-voltage = <1800000>;
> +			qcom,headroom-voltage = <56000>;
> +			regulator-initial-mode = <RPMH_REGULATOR_MODE_LPM>;
> +			regulator-allow-set-load;
> +			qcom,allowed-drms-modes =
> +				<RPMH_REGULATOR_MODE_LPM
> +				 RPMH_REGULATOR_MODE_HPM>;
> +			qcom,drms-mode-threshold-currents = <10000 1000000>;
> +		};
> +
> +		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>;
> +			qcom,regulator-initial-voltage = <3312000>;
> +			regulator-initial-mode = <RPMH_REGULATOR_MODE_AUTO>;
> +		};
> +	};
> +};
> diff --git a/include/dt-bindings/regulator/qcom,rpmh-regulator.h b/include/dt-bindings/regulator/qcom,rpmh-regulator.h
> new file mode 100644
> index 0000000..4378c4b
> --- /dev/null
> +++ b/include/dt-bindings/regulator/qcom,rpmh-regulator.h
> @@ -0,0 +1,36 @@
> +/* SPDX-License-Identifier: GPL-2.0 */
> +/* Copyright (c) 2018, The Linux Foundation. All rights reserved. */
> +
> +#ifndef __QCOM_RPMH_REGULATOR_H
> +#define __QCOM_RPMH_REGULATOR_H
> +
> +/*
> + * These mode constants may be used for regulator-initial-mode and
> + * qcom,allowed-drms-modes properties of an RPMh regulator device tree node.
> + * Each type of regulator supports a subset of the possible modes.
> + *
> + * %RPMH_REGULATOR_MODE_RET:	Retention mode in which only an extremely small
> + *				load current is allowed.  This mode is supported
> + *				by LDO and SMPS type regulators.
> + * %RPMH_REGULATOR_MODE_LPM:	Low power mode in which a small load current is
> + *				allowed.  This mode corresponds to PFM for SMPS
> + *				and BOB type regulators.  This mode is supported
> + *				by LDO, HFSMPS, BOB, and PMIC4 FTSMPS type
> + *				regulators.
> + * %RPMH_REGULATOR_MODE_AUTO:	Auto mode in which the regulator hardware
> + *				automatically switches between LPM and HPM based
> + *				upon the real-time load current.  This mode is
> + *				supported by HFSMPS, BOB, and PMIC4 FTSMPS type
> + *				regulators.
> + * %RPMH_REGULATOR_MODE_HPM:	High power mode in which the full rated current
> + *				of the regulator is allowed.  This mode
> + *				corresponds to PWM for SMPS and BOB type
> + *				regulators.  This mode is supported by all types
> + *				of regulators.
> + */
> +#define RPMH_REGULATOR_MODE_RET		0
> +#define RPMH_REGULATOR_MODE_LPM		1
> +#define RPMH_REGULATOR_MODE_AUTO	2
> +#define RPMH_REGULATOR_MODE_HPM		3
> +
> +#endif
> -- 
> The Qualcomm Innovation Center, Inc. is a member of the Code Aurora Forum,
> a Linux Foundation Collaborative Project
> 
--
To unsubscribe from this list: send the line "unsubscribe devicetree" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html



[Index of Archives]     [Device Tree Compilter]     [Device Tree Spec]     [Linux Driver Backports]     [Video for Linux]     [Linux USB Devel]     [Linux PCI Devel]     [Linux Audio Users]     [Linux Kernel]     [Linux SCSI]     [XFree86]     [Yosemite Backpacking]


  Powered by Linux