You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
253 lines
8.0 KiB
253 lines
8.0 KiB
Qualcomm Technologies, Inc. LPG driver specific bindings
|
|
|
|
This binding document describes the properties of LPG (Light Pulse Generator)
|
|
device module in Qualcomm Technologies, Inc. PMIC chips.
|
|
|
|
- compatible:
|
|
Usage: required
|
|
Value type: <string>
|
|
Definition: Must be "qcom,pwm-lpg".
|
|
|
|
- reg:
|
|
Usage: required
|
|
Value type: <prop-encoded-array>
|
|
Definition: Register base for LPG and LUT modules.
|
|
|
|
- reg-names:
|
|
Usage: required
|
|
Value type: <string>
|
|
Definition: The name of the register defined in the reg property.
|
|
It must have "lpg-base", "lut-base" is optional but
|
|
it's required if any LPG channels support LUT mode
|
|
with a LUT module.
|
|
|
|
- #pwm-cells:
|
|
Usage: required
|
|
Value type: <u32>
|
|
Definition: The number of cells in "pwms" property specified in
|
|
PWM user nodes. It should be 2. The first cell is
|
|
the PWM channel ID indexed from 0, and the second
|
|
cell is the PWM default period in nanoseconds.
|
|
|
|
- qcom,num-lpg-channels:
|
|
Usage: required
|
|
Value type: <u32>
|
|
Definition: The number of the consecutive LPG/PWM channels in the chip.
|
|
|
|
- nvmem-names:
|
|
Usage: optional
|
|
Value type: <string>
|
|
Definition: The nvmem device name for the SDAM module where the LUT
|
|
pattern is stored. It must be "ppg_sdam". This property
|
|
is required only when LUT mode is supported with a SDAM
|
|
module instead of a LUT module.
|
|
|
|
- nvmem:
|
|
Usage: optional
|
|
Value type: <phandle>
|
|
Definition: Phandle of the nvmem device to access the LUT stored
|
|
in the SDAM module. This property is required only when
|
|
LUT mode is supported and the LUT pattern is stored in a
|
|
SDAM module instead of a LUT module.
|
|
|
|
- qcom,pbs-client
|
|
Usage: optional
|
|
Value type: <phandle>
|
|
Definition: Phandle of the PBS client used for sending the PBS
|
|
trigger. This property is required when LUT mode is
|
|
supported and the LUT pattern is stored in a SDAM
|
|
module instead of a LUT module.
|
|
|
|
- qcom,lut-sdam-base:
|
|
Usage: optional
|
|
Value type: <u32>
|
|
Definition: The register base of the LUT entries stored in SDAM. This
|
|
property is required only when LUT mode is supported and
|
|
the LUT pattern is stored in a SDAM module instead of a
|
|
LUT module.
|
|
|
|
- qcom,lut-patterns:
|
|
Usage: optional
|
|
Value type: <prop-encoded-array>
|
|
Definition: Duty ratios in percentages for LPG working at LUT mode.
|
|
These duty ratios will be translated into PWM values
|
|
and stored in LUT or SDAM module shared for all LPG
|
|
channels. The LUT module has resource to store 47 PWM
|
|
values at max while SDAM module can store upto 64 PWM
|
|
values. This property is required if any LPG channels
|
|
support LUT mode.
|
|
|
|
- qcom,sync-channel-ids:
|
|
Usage: optional
|
|
Value type: <prop-encoded-array>
|
|
Definition: The hardware IDs of the LPG channel that required be
|
|
grouped together. These channels will share the same LUT
|
|
ramping configuration so that they will be enabled with a
|
|
synchronized pattern. If the LUT ramping configuration
|
|
differs for the channels grouped for synchronization,
|
|
configuration of the first channel will be applied for
|
|
all others.
|
|
|
|
Subnode is optional if LUT mode is not required, it's required if any LPG
|
|
channels expected to be supported in LUT mode.
|
|
|
|
Subnode properties:
|
|
Subnodes for each LPG channel (lpg@X) can be defined if any of the following
|
|
parameters needs to be configured for that channel.
|
|
|
|
- qcom,lpg-chan-id:
|
|
Usage: required
|
|
Value type: <u32>
|
|
Definition: The LPG channel's hardware ID indexed from 1. Allowed
|
|
range is 1 - 8. Maximum value depends on the number of
|
|
channels supported on PMIC.
|
|
|
|
- qcom,lpg-sdam-base:
|
|
Usage: optional
|
|
Value type: <u32>
|
|
Definition: Register base address for LPG configuration in SDAM for
|
|
the LPG channel specified under "qcom,lpg-chan-id".
|
|
This property is required if LUT mode is supported with
|
|
a SDAM module.
|
|
|
|
- qcom,ramp-step-ms:
|
|
Usage: required
|
|
Value type: <u32>
|
|
Definition: The step duration in milliseconds for LPG staying at each
|
|
duty specified in the LUT pattern. Allowed range:
|
|
1 - 511 when LUT module is used, and 8 - 2000 when SDAM
|
|
is used.
|
|
|
|
- qcom,ramp-high-index:
|
|
Usage: required
|
|
Value type: <u32>
|
|
Definition: The high index of the LUT pattern where LPG ends up
|
|
ramping to. Allowed range: 1 - 47 when LUT module
|
|
is used, and 1 - 64 when SDAM module is used.
|
|
|
|
- qcom,ramp-low-index:
|
|
Usage: required
|
|
Value type: <u32>
|
|
Definition: The low index of the LUT pattern from where LPG begins
|
|
ramping from. The ramp-low-index should be always less
|
|
than ramp-high-index when SDAM module is used. Allowed
|
|
range: 0 - 46 when LUT module is used, and 0 - 63 when
|
|
SDAM module is used.
|
|
|
|
- qcom,ramp-pattern-repeat:
|
|
Usage: optional
|
|
Value type: <empty>
|
|
Definition: The flag to specify if LPG would be ramping with the LUT
|
|
pattern repeatedly.
|
|
|
|
- qcom,ramp-from-low-to-high:
|
|
Usage: optional
|
|
Value type: <empty>
|
|
Definition: The flag to specify the LPG ramping direction. The ramping
|
|
direction is from low index to high index of the LUT
|
|
pattern if it's specified. This property is not required
|
|
when SDAM module is used.
|
|
|
|
- qcom,ramp-toggle:
|
|
Usage: optional
|
|
Value type: <empty>
|
|
Definition: The flag to specify if LPG would toggle the LUT pattern
|
|
in ramping. If toggling enabled, LPG would return to the
|
|
low index when high index is reached, or return to the high
|
|
index when low index is reached. This property is not
|
|
required when SDAM module is used.
|
|
|
|
- qcom,ramp-pause-hi-count:
|
|
Usage: optional
|
|
Value type: <u32>
|
|
Definition: The step count that LPG stop the output when it ramped up
|
|
to the high index of the LUT. This property is not
|
|
required when SDAM module is used.
|
|
|
|
- qcom,ramp-pause-lo-count:
|
|
Usage: optional
|
|
Value type: <u32>
|
|
Definition: The step count that LPG stop the output when it ramped up
|
|
to the low index of the LUT. This property is not
|
|
required when SDAM module is used.
|
|
|
|
Example when LUT pattern is stored in a LUT module:
|
|
|
|
pm8150l_lpg: lpg@b100 {
|
|
compatible = "qcom,pwm-lpg";
|
|
reg = <0xb100 0x600>, <0xb000 0x100>;
|
|
reg-names = "lpg-base", "lut-base";
|
|
qcom,num-lpg-channels = <6>;
|
|
#pwm-cells = <2>;
|
|
qcom,lut-patterns = <0 14 28 42 56 70 84 100
|
|
100 84 70 56 42 28 14 0>;
|
|
lpg@1 {
|
|
qcom,lpg-chan-id = <1>;
|
|
qcom,ramp-step-ms = <200>;
|
|
qcom,ramp-pause-hi-count = <10>;
|
|
qcom,ramp-pause-lo-count = <10>;
|
|
qcom,ramp-low-index = <0>;
|
|
qcom,ramp-high-index = <15>;
|
|
qcom,ramp-from-low-to-high;
|
|
qcom,ramp-pattern-repeat;
|
|
};
|
|
lpg@2 {
|
|
qcom,lpg-chan-id = <2>;
|
|
qcom,ramp-step-ms = <200>;
|
|
qcom,ramp-pause-hi-count = <10>;
|
|
qcom,ramp-pause-lo-count = <10>;
|
|
qcom,ramp-low-index = <0>;
|
|
qcom,ramp-high-index = <15>;
|
|
qcom,ramp-from-low-to-high;
|
|
qcom,ramp-pattern-repeat;
|
|
};
|
|
lpg@3 {
|
|
qcom,lpg-chan-id = <3>;
|
|
qcom,ramp-step-ms = <200>;
|
|
qcom,ramp-pause-hi-count = <10>;
|
|
qcom,ramp-pause-lo-count = <10>;
|
|
qcom,ramp-low-index = <0>;
|
|
qcom,ramp-high-index = <15>;
|
|
qcom,ramp-from-low-to-high;
|
|
qcom,ramp-pattern-repeat;
|
|
};
|
|
};
|
|
|
|
Example when LUT pattern is stored in a SDAM module:
|
|
|
|
pmi632_lpg: lpg@b100 {
|
|
compatible = "qcom,pwm-lpg";
|
|
reg = <0xb100 0x600>;
|
|
reg-names = "lpg-base";
|
|
#pwm-cells = <2>;
|
|
nvmem-names = "ppg_sdam";
|
|
nvmem = <&sdam7>;
|
|
qcom,pbs-client = <&pbs_client_3>;
|
|
qcom,lut-sdam-base = <0x80>;
|
|
qcom,lut-patterns = <0 14 28 42 56 70 84 100
|
|
100 84 70 56 42 28 14 0>;
|
|
lpg@1 {
|
|
qcom,lpg-chan-id = <1>;
|
|
qcom,ramp-step-ms = <200>;
|
|
qcom,ramp-low-index = <0>;
|
|
qcom,ramp-high-index = <15>;
|
|
qcom,ramp-pattern-repeat;
|
|
qcom,lpg-sdam-base = <0x48>:
|
|
};
|
|
lpg@2 {
|
|
qcom,lpg-chan-id = <2>;
|
|
qcom,ramp-step-ms = <200>;
|
|
qcom,ramp-low-index = <0>;
|
|
qcom,ramp-high-index = <15>;
|
|
qcom,ramp-pattern-repeat;
|
|
qcom,lpg-sdam-base = <0x56>;
|
|
};
|
|
lpg@3 {
|
|
qcom,lpg-chan-id = <3>;
|
|
qcom,ramp-step-ms = <200>;
|
|
qcom,ramp-low-index = <0>;
|
|
qcom,ramp-high-index = <15>;
|
|
qcom,ramp-pattern-repeat;
|
|
qcom,lpg-sdam-base = <0x64>;
|
|
};
|
|
};
|
|
|