blob: 10608e635d7b3994698fd989709afa85ad99d7da [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,cores-per-phase Value that indicates the number of cores running at max frequency
a phase can support.
- qcom,valid-phases An array containing the phase count the platform supports. The phase count
entries must be in increasing order.
- qcom,phase-coeff-threshold An array representing the coeff values supported by the phase counts
mentioned in qcom,valid-phases array. The location of 0-based index
of an element in the list corresponds to the max coefficient supported
by the phase count mentioned in qcom,valid-phases array at that index. The
coefficient entries must be in increasing order.
- 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.
- qcom,force-auto-mode indicates whether auto mode should be used i.e. disable pfm/pwm
mode switching for the pmic ganged regulator. If this is not specified
qcom,pfm-threshold must be specified.
- qcom,pfm-threshold The power coeff threshold in abstract power units below which
pmic will be made to operate in PFM mode.
[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.
[Third Level Nodes]
This Third level node represents a regulator which when enabled reduces
coeff1 component of the load by a defined percentage amount. This Third Level
Node is optional.
Required properties:
- regulator-name: A string used as a descriptive name for the regulator
Optional properties:
- qcom,coeff1-reduction: percentage to reduce the coeff1 component
of the load by. If this is not specified
a default of 75 percent is assumed.
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,valid-phases = <1 2 4>;
qcom,phase-coeff-threshold = <1000000 2000000 4000000>;
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>;
krait0_adj_reg: regulator@0 {
regulator-name = "krait-adjustment0";
qcom,coeff1-reduction = <75>;
};
};
};