123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223 |
- Qualcomm RPM Regulators
- rpm-regulator-smd is a regulator driver which supports regulators inside of
- PMICs which are controlled by the RPM processor. Communication with the RPM
- processor takes place over SMD.
- Required structure:
- - RPM regulators must be described in two levels of devices nodes. The first
- level describes the interface with the RPM. The second level describes
- properties of one regulator framework interface (of potentially many) to
- the regulator.
- [First Level Nodes]
- Required properties:
- - compatible: Must be "qcom,rpm-regulator-smd-resource"
- - qcom,resource-name: Resource name string for this regulator to be used in RPM
- transactions. Length is 4 characters max.
- - qcom,resource-id: Resource instance ID for this regulator to be used in RPM
- transactions.
- - qcom,regulator-type: Type of this regulator. Supported values are:
- 0 = LDO
- 1 = SMPS
- 2 = VS
- 3 = NCP
- Optional properties:
- - qcom,allow-atomic: Flag specifying if atomic access is allowed for this
- regulator. Supported values are:
- 0 or not present = mutex locks used
- 1 = spinlocks used
- - qcom,enable-time: Time in us to delay after enabling the regulator
- - qcom,hpm-min-load: Load current in uA which corresponds to the minimum load
- which requires the regulator to be in high power mode.
- - qcom,apps-only: Flag which indicates that the regulator only has
- consumers on the application processor. If this flag
- is specified, then voltage and current updates are
- only sent to the RPM if the regulator is enabled.
- [Second Level Nodes]
- Required properties:
- - compatible: Must be "qcom,rpm-regulator-smd"
- - regulator-name: A string used as a descriptive name for regulator outputs
- - qcom,set: 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 RPM assisted power collapse.
- Supported values are:
- 1 = Active set only
- 2 = Sleep set only
- 3 = Both active and sleep sets
- Optional properties:
- - parent-supply: phandle to the parent supply/regulator node
- - qcom,system-load: Load in uA present on regulator that is not
- captured by any consumer request
- - qcom,use-voltage-corner: Flag that signifies if regulator_set_voltage
- calls should modify the corner parameter instead
- of the voltage parameter. When used, voltages
- specified inside of the regulator framework
- represent corners that have been incremented by
- 1. This value shift is necessary to work around
- limitations in the regulator framework which
- treat 0 uV as an error.
- - qcom,use-voltage-floor-corner: Flag that signifies if regulator_set_voltage
- calls should modify the floor corner parameter
- instead of the voltage parameter. When used,
- voltages specified inside of the regulator
- framework represent corners that have been
- incremented by 1. The properties
- qcom,use-voltage-corner and
- qcom,use-voltage-floor-corner are mutually
- exclusive. Only one may be specified for a
- given regulator.
- - qcom,always-send-voltage: Flag which indicates that updates to the voltage
- or voltage corner set point should always be
- sent immediately to the RPM. If this flag is
- not specified, then voltage set point updates
- are only sent if the given regulator has also
- been enabled by a Linux consumer.
- - qcom,always-send-current: Flag which indicates that updates to the load
- current should always be sent immediately to the
- RPM. If this flag is not specified, then load
- current updates are only sent if the given
- regulator has also been enabled by a Linux
- consumer.
- The following properties specify initial values for parameters to be sent to the
- RPM in regulator requests.
- - qcom,init-enable: 0 = regulator disabled
- 1 = regulator enabled
- - qcom,init-voltage: Voltage in uV
- - qcom,init-current: Current in mA
- - qcom,init-ldo-mode: Operating mode to be used with LDO regulators
- Supported values are:
- 0 = mode determined by current requests
- 1 = force HPM (NPM)
- - qcom,init-smps-mode: Operating mode to be used with SMPS regulators
- Supported values are:
- 0 = auto; hardware determines mode
- 1 = mode determined by current requests
- 2 = force HPM (PWM)
- - qcom,init-pin-ctrl-enable: Bit mask specifying which hardware pins should be
- used to enable the regulator, if any; supported
- bits are:
- 0 = ignore all hardware enable signals
- BIT(0) = follow HW0_EN signal
- BIT(1) = follow HW1_EN signal
- BIT(2) = follow HW2_EN signal
- BIT(3) = follow HW3_EN signal
- - qcom,init-pin-ctrl-mode: Bit mask specifying which hardware pins should be
- used to force the regulator into high power
- mode, if any. Supported bits are:
- 0 = ignore all hardware enable signals
- BIT(0) = follow HW0_EN signal
- BIT(1) = follow HW1_EN signal
- BIT(2) = follow HW2_EN signal
- BIT(3) = follow HW3_EN signal
- BIT(4) = follow PMIC awake state
- - qcom,init-frequency: Switching frequency divisor for SMPS regulators.
- Supported values are n = 0 to 31 where
- freq = 19.2 MHz / (n + 1).
- - qcom,init-head-room: Voltage head room in mV required for the
- regulator. This head room value should be used
- in situations where the device connected to the
- output of the regulator has low noise tolerance.
- Note that the RPM independently enforces a
- safety head room value for subregulated LDOs
- which is sufficient to account for LDO drop-out
- voltage.
- - qcom,init-quiet-mode: Specify that quiet mode is needed for an SMPS
- regulator in order to have lower output noise.
- Supported values are:
- 0 = No quiet mode
- 1 = Quiet mode
- 2 = Super quiet mode
- - qcom,init-freq-reason: Consumer requiring specified frequency for an
- SMPS regulator. Supported values are:
- 0 = None
- 1 = Bluetooth
- 2 = GPS
- 4 = WLAN
- 8 = WAN
- - qcom,init-voltage-corner: Performance corner to use in order to determine
- voltage set point. This value corresponds to
- the actual value that will be sent and is not
- incremented by 1 like the values used inside of
- the regulator framework. The meaning of corner
- values is set by the RPM. It is possible that
- different regulators on a given platform or
- similar regulators on different platforms will
- utilize different corner values. These are
- corner values supported on MSM8974 for PMIC
- PM8841 SMPS 2 (VDD_Dig); nominal voltages for
- these corners are also shown:
- 0 = None (don't care)
- 1 = Retention (0.5000 V)
- 2 = SVS Krait (0.7250 V)
- 3 = SVS SOC (0.8125 V)
- 4 = Normal (0.9000 V)
- 5 = Turbo (0.9875 V)
- 6 = Super Turbo (1.0500 V)
- - qcom,init-disallow-bypass: Specify that bypass mode should not be used for a
- given LDO regulator. When in bypass mode, an
- LDO performs no regulation and acts as a simple
- switch. The RPM can utilize this mode for an
- LDO that is subregulated from an SMPS when it is
- possible to reduce the SMPS voltage to the
- desired LDO output level. Bypass mode may be
- disallowed if lower LDO output noise is
- required. Supported values are:
- 0 = Allow RPM to utilize LDO bypass mode
- if possible
- 1 = Disallow LDO bypass mode
- - qcom,init-voltage-floor-corner: Minimum performance corner to use if any
- processor in the system is awake. This property
- supports the same values as
- qcom,init-voltage-corner.
- All properties specified within the core regulator framework can also be used in
- second level nodes. These bindings can be found in:
- Documentation/devicetree/bindings/regulator/regulator.txt.
- Example:
- rpm-regulator-smpb1 {
- qcom,resource-name = "smpb";
- qcom,resource-id = <1>;
- qcom,regulator-type = <1>;
- qcom,hpm-min-load = <100000>;
- compatible = "qcom,rpm-regulator-smd-resource";
- status = "disabled";
- pm8841_s1: regulator-s1 {
- regulator-name = "8841_s1";
- qcom,set = <3>;
- regulator-min-microvolt = <900000>;
- regulator-max-microvolt = <1150000>;
- qcom,init-voltage = <1150000>;
- compatible = "qcom,rpm-regulator-smd";
- };
- pm8841_s1_ao: regulator-s1-ao {
- regulator-name = "8841_s1_ao";
- qcom,set = <1>;
- regulator-min-microvolt = <900000>;
- regulator-max-microvolt = <1150000>;
- compatible = "qcom,rpm-regulator-smd";
- };
- pm8841_s1_corner: regulator-s1-corner {
- regulator-name = "8841_s1_corner";
- qcom,set = <3>;
- regulator-min-microvolt = <1>;
- regulator-max-microvolt = <6>;
- qcom,init-voltage-corner = <3>;
- qcom,use-voltage-corner;
- compatible = "qcom,rpm-regulator-smd";
- };
- };
|