Linux-ARM-Kernel Archive on lore.kernel.org
 help / color / mirror / Atom feed
From: robh@kernel.org (Rob Herring)
To: linux-arm-kernel@lists.infradead.org
Subject: [PATCH v2 1/2] regulator: dt-bindings: add QCOM RPMh regulator bindings
Date: Mon, 16 Apr 2018 15:57:49 -0500	[thread overview]
Message-ID: <20180416205749.556rbkzaja33oref@rob-hp-laptop> (raw)
In-Reply-To: <39b676d2ba7dac2436196cc5a090c6f151498dc8.1523673467.git.collinsd@codeaurora.org>

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@codeaurora.org>
> ---
>  .../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
> 

  reply	other threads:[~2018-04-16 20:57 UTC|newest]

Thread overview: 25+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2018-04-14  2:50 [PATCH v2 0/2] regulator: add QCOM RPMh regulator driver David Collins
2018-04-14  2:50 ` [PATCH v2 1/2] regulator: dt-bindings: add QCOM RPMh regulator bindings David Collins
2018-04-16 20:57   ` Rob Herring [this message]
2018-04-16 22:06     ` David Collins
2018-04-17 20:06   ` Doug Anderson
2018-04-18 21:44     ` David Collins
2018-05-02 16:37   ` Doug Anderson
2018-05-03  0:13     ` David Collins
2018-05-03 15:01       ` Doug Anderson
2018-04-14  2:50 ` [PATCH v2 2/2] regulator: add QCOM RPMh regulator driver David Collins
2018-04-17 18:23   ` [v2,2/2] " Matthias Kaehlcke
2018-04-17 19:15     ` David Collins
2018-04-17 19:47       ` Matthias Kaehlcke
2018-04-18 21:34         ` David Collins
2018-04-18 17:02     ` Mark Brown
2018-04-17 20:02   ` [PATCH v2 2/2] " Doug Anderson
2018-04-18 23:30     ` David Collins
2018-04-19  6:04       ` Stephen Boyd
2018-04-19 16:16       ` Doug Anderson
2018-04-20 22:08         ` David Collins
2018-04-24 17:45           ` Mark Brown
2018-04-24 21:09             ` David Collins
2018-04-25 10:31               ` Mark Brown
2018-04-25 21:04                 ` David Collins
2018-05-01 21:02                   ` Mark Brown

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20180416205749.556rbkzaja33oref@rob-hp-laptop \
    --to=robh@kernel.org \
    --cc=linux-arm-kernel@lists.infradead.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox