blob: 004c4df0bbc0bbcfaed56eaf44769b7dcc32c4e4 [file] [log] [blame]
Krait Voltage regulators
The cpus are powered using a single supply powered by PMIC ganged regulators operating in
different phases. Individual kraits further can draw power from the single supply via
a LDO or a head switch (BHS). The first level node represents the PMIC ganged regulator
and its properties and encompasses second level nodes that represent the individual
krait LDO/BHS control regulator.
[First Level Nodes]
Required properties:
- compatible: Must be "qcom,krait-pdn"
- reg: This property contains a list of physical
addresses for Krait PDN features. The list
should contain the address of the APCS GCC
register base and the address of the phase
scaling factor eFuse.
- reg-names: This property contains a list of strings naming
the registers listed in the reg property.
"apcs_gcc" is a string to identify the area
where the APCS GCC registers reside.
"phase-scaling-efuse" should be used to identify
the phase scaling factor eFuse address.
- qcom,pfm-threshold The power coeff threshold in abstract power units below which
pmic will be made to operate in PFM mode.
- qcom,phase-scaling-factor-bits-pos indicates bit position of scaling factor data within the efuse
register.
- qcom,valid-scaling-factor-versions This is an array holding four boolean values and indicates whether
the version read from efuses is valid.
The version is a two bit field and the value read from hardware is
used as an index in this array to check for validity.
Optional properties:
- qcom,use-phase-switching indicates whether the driver should add/shed phases on the PMIC
ganged regulator as cpus are hotplugged.
- qcom,use-phase-scaling-factor Boolean which indicates if the value stored in
the phase scaling eFuse should be used or not.
If this property is not specified, then worst
case scaling will be assumed.
[Second Level Nodes]
Required properties:
- compatible: Must be "qcom,krait-regulator"
- reg: Specifies the address and size for this regulator device,
also specifies the address and the size for the MDD area
to be used along with the regulator
- reg-names: "acs" -string to identify the area where main power control
registers reside.
"mdd" - string to identify the area where mdd registers reside.
- qcom,headroom-voltage: The minimum required voltage drop between the input
voltage and the output voltage for the LDO to be
operational, in microvolts. Acceptable values are from
50000uV to 250000uV
- qcom,retention-voltage: The value for retention voltage in microvolts. Acceptable
values are from 465000uV to 750000uV
- qcom,ldo-default-voltage: The default value for LDO voltage in microvolts. Acceptable
values are from 465000uV to 750000uV
- qcom,ldo-threshold-voltage: The voltage value above which LDO is nonfunctional.
Acceptable values are from 600000uV to 900000uV
- qcom,ldo-delta-voltage: The delta used to reduce the requested voltage in order
to derive the LDO output voltage while switching
to LDO mode. Acceptable values are from 1000uV to 100000uV
- qcom,cpu-num: Indicates what cpu this regulator controls
Optional properties:
- qcom,ldo-disable: Indicates whether to disable using LDO mode
Any property defined as part of the core regulator
binding, defined in regulator.txt, can also be used.
Example:
krait_pdn: krait-pdn@f9011000 {
reg = <0xf9011000 0x1000>,
<0xfc4b80b0 8>;
reg-names = "apcs_gcc", "phase-scaling-efuse";
compatible = "qcom,krait-pdn";
qcom,use-phase-switching;
qcom,use-phase-scaling-factor;
qcom,pfm-threshold = <376975>;
qcom,phase-scaling-factor-bits-pos = <18>;
qcom,valid-scaling-factor-versions = <0 1 1 0>;
#address-cells = <1>;
#size-cells = <1>;
ranges;
krait0_vreg: regulator@f9088000 {
compatible = "qcom,krait-regulator";
regulator-name = "krait0";
reg = <0xf9088000 0x1000>, /* APCS_ALIAS0_KPSS_ACS */
<0xf908a800 0x1000>; /* APCS_ALIAS0_KPSS_MDD */
reg-names = "acs", "mdd";
regulator-min-microvolt = <500000>;
regulator-max-microvolt = <1100000>;
qcom,headroom-voltage = <150000>;
qcom,retention-voltage = <675000>;
qcom,ldo-default-voltage = <750000>;
qcom,ldo-threshold-voltage = <850000>;
qcom,ldo-delta-voltage = <50000>;
qcom,cpu-num = <0>;
};
};