# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause) %YAML 1.2 --- $id: http://devicetree.org/schemas/regulator/rpmh-regulator.yaml# $schema: http://devicetree.org/meta-schemas/core.yaml# title: Qualcomm Technologies, Inc. RPMh Regulators maintainers: - David Collins description: | rpmh-regulator devices support PMIC regulator management via the Voltage Regulator Manager (VRM), Aggregated Resource Controller (ARC), Oscillator Buffer (XOB) and Programmable Boot Sequencer (PBS) 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 ARC allows changing only a single parameter for a given regulator: its operating level. This operating level is fed into CPR which then decides upon a final explicit voltage for the regulator. The XOB and PBS allow 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 interface with RPMh (resource) and must reside within an RPMh device node. The second level describes properties of one regulator framework interface (of potentially many) for the regulator resource. properties: compatible: enum: - qcom,rpmh-vrm-regulator - qcom,rpmh-arc-regulator - qcom,rpmh-xob-regulator - qcom,rpmh-pbs-regulator qcom,resource-name: description: | RPMh resource name which encodes the specific instance of a given type of regulator (LDO, SMPS, VS, etc) within a particular PMIC found in the system. This name must match to one that is defined by the bootloader. $ref: /schemas/types.yaml#/definitions/string qcom,regulator-type: description: | The physical type of the regulator including the PMIC family. This is used for mode control. enum: - pmic4-ldo - pmic4-hfsmps - pmic4-ftsmps - pmic4-bob - pmic5-ldo - pmic5-hfsmps - pmic5-ftsmps - pmic5-bob 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 qcom,supported-modes: description: | A list of integers specifying the PMIC regulator modes supported by this regulator. Supported values are RPMH_REGULATOR_MODE_* (i.e. 0 to 4). Elements must be specified in order from lowest to highest. $ref: /schemas/types.yaml#/definitions/uint32-array minItems: 1 maxItems: 5 items: minimum: 0 maximum: 4 qcom,mode-threshold-currents: description: | A list of integers specifying minimum allowed current in microamps for each of the modes listed in qcom,supported-modes. The first element should always be 0. Elements must be specified in order from lowest to highest. $ref: /schemas/types.yaml#/definitions/uint32-array minItems: 1 maxItems: 5 qcom,send-defaults: description: | Boolean flag which indicates that the initial parameter values should be sent to RPMh before consumers make their own requests. If this flag is not specified, then initial parameters values will only be sent after some consumer makes a request. $ref: /schemas/types.yaml#/definitions/flag qcom,disable-mode: description: | Specifies the mode to set for a VRM regulator when it gets disabled. The actual previously voted mode will be restored when the regulator is enabled. Supported values are RPMH_REGULATOR_MODE_* (i.e. 0 to 4). $ref: /schemas/types.yaml#/definitions/uint32 minimum: 0 maximum: 4 additionalProperties: false required: - compatible - qcom,resource-name patternProperties: "^regulator.*$": type: object $ref: "regulator.yaml#" description: regulator client voting interface node(s). properties: regulator-name: description: Specifies the name for this RPMh regulator. regulator-min-microvolt: description: | For VRM resources, this is the minimum supported voltage in microvolts. For ARC resources, this is the minimum supported voltage level from RPMH_REGULATOR_LEVEL_*. regulator-max-microvolt: description: | For VRM resources, this is the maximum supported voltage in microvolts. For ARC resources, this is the maximum supported voltage level from RPMH_REGULATOR_LEVEL_*. regulator-enable-ramp-delay: description: | For VRM, XOB and PBS resources, the time in microseconds to delay after enabling a regulator. qcom,set: description: | Specifies which sets that requests made with this regulator interface should be sent to. Regulator requests sent in the active set take effect immediately. Requests sent in the sleep set take effect when the Apps processor transitions into RPMh assisted power collapse. $ref: /schemas/types.yaml#/definitions/uint32 minimum: 1 maximum: 3 qcom,init-enable: description: | Specifies the initial enable state to request for a VRM regulator: 0 = disabled and 1 = enabled. $ref: /schemas/types.yaml#/definitions/uint32 minimum: 0 maximum: 1 qcom,init-voltage: description: | Specifies the initial voltage in microvolts to request for a VRM regulator. $ref: /schemas/types.yaml#/definitions/uint32 minimum: 0 maximum: 8191000 qcom,init-mode: description: | Specifies the initial mode to request for a VRM regulator. $ref: /schemas/types.yaml#/definitions/uint32 minimum: 0 maximum: 4 qcom,init-headroom-voltage: description: | Specifies the initial headroom voltage in microvolts to request for a VRM regulator. RPMh ensures that the parent of this regulator outputs a voltage high enough to satisfy the requested headroom. $ref: /schemas/types.yaml#/definitions/uint32 minimum: 0 maximum: 511000 qcom,init-voltage-level: description: | Specifies the initial voltage level to request for an ARC regulator. $ref: /schemas/types.yaml#/definitions/uint32 minimum: 0 maximum: 65535 qcom,min-dropout-voltage: description: | Specifies the minimum voltage in microvolts that the parent supply regulator must output above the output of this regulator. It is only meaningful if the property -parent-supply has been specified in the first level node. $ref: /schemas/types.yaml#/definitions/uint32 qcom,min-dropout-voltage-level: description: | Specifies the minimum voltage level difference that the parent supply regulator must output above the output of this regulator. It is only meaningful if the property -parent-supply has been specified in the first level node. $ref: /schemas/types.yaml#/definitions/uint32 patternProperties: "^.*-parent-supply$": description: | phandle of the parent supply regulator of one of the regulators for this RPMh resource. The property name is defined by the value specified for the regulator-name property. additionalProperties: false required: - regulator-name - qcom,set examples: - | #include rpmh-regulator-cxlvl { compatible = "qcom,rpmh-arc-regulator"; qcom,resource-name = "cx.lvl"; qcom,send-defaults; pm8998_s9_level: regulator-s9-level { regulator-name = "pm8998_s9_level"; qcom,set = ; regulator-min-microvolt = ; regulator-max-microvolt = ; qcom,init-voltage-level = ; }; pm8998_s9_level_ao: regulator-s9-level-ao { regulator-name = "pm8998_s9_level_ao"; qcom,set = ; regulator-min-microvolt = ; regulator-max-microvolt = ; }; }; rpmh-regulator-smpa2 { compatible = "qcom,rpmh-vrm-regulator"; qcom,resource-name = "smpa2"; qcom,regulator-type = "pmic4-hfsmps"; qcom,supported-modes = ; qcom,mode-threshold-currents = <0 2000000>; pm8998_s2: regulator-s2 { regulator-name = "pm8998_s2"; qcom,set = ; regulator-min-microvolt = <1100000>; regulator-max-microvolt = <1200000>; regulator-enable-ramp-delay = <200>; qcom,init-mode = ; qcom,init-voltage = <1150000>; }; }; rpmh-regulator-ldoa4 { compatible = "qcom,rpmh-vrm-regulator"; qcom,resource-name = "ldoa4"; qcom,regulator-type = "pmic4-ldo"; pm8998_l4: regulator-l4 { regulator-name = "pm8998_l4"; qcom,set = ; regulator-min-microvolt = <1000000>; regulator-max-microvolt = <1000000>; qcom,init-voltage = <1000000>; }; }; rpmh-regulator-ldoc1 { compatible = "qcom,rpmh-xob-regulator"; qcom,resource-name = "ldoc1"; pm8150l_l1: regulator-pm8150l-l1 { regulator-name = "pm8150l_l1"; qcom,set = ; regulator-min-microvolt = <1800000>; regulator-max-microvolt = <1800000>; }; }; rpmh-regulator-vrmsd { compatible = "qcom,rpmh-pbs-regulator"; qcom,resource-name = "vrm.sd"; L24B_PBS: pm6450_l24_pbs: regulator-pm6450-l24-pbs { regulator-name = "pm6450_l24_pbs"; qcom,set = ; }; }; - | #include rpmh-regulator-ldoa3-disp { compatible = "qcom,rpmh-vrm-regulator"; qcom,resource-name = "ldoa3"; qcom,regulator-type = "pmic4-ldo"; qcom,supported-modes = ; qcom,mode-threshold-currents = <0 10000>; qcom,always-wait-for-ack; pm8998_l3_disp_ao: regulator-l3-ao { regulator-name = "pm8998_l3_disp_ao"; qcom,set = ; regulator-min-microvolt = <1000000>; regulator-max-microvolt = <1200000>; qcom,init-voltage = <1000000>; qcom,init-headroom-voltage = <60000>; }; pm8998_l3_disp_so: regulator-l3-so { regulator-name = "pm8998_l3_disp_so"; qcom,set = ; regulator-min-microvolt = <1000000>; regulator-max-microvolt = <1200000>; qcom,init-mode = ; qcom,init-voltage = <1000000>; qcom,init-enable = <0>; }; };