blob: 0f6cb209515882dd44df7bbc6593d65b125de277 [file] [log] [blame]
Qualcomm Technologies, Inc. Haptics driver
Haptics peripheral in QTI PMICs can support different type of actuators or
vibrators:
1) Eccentric Rotation Mass (ERM);
2) Linear Resonant Actuator (LRA).
This binding document describes the properties for this module.
Properties:
- compatible
Usage: required
Value type: <string>
Definition: It can be one of the following:
"qcom,haptics",
"qcom,pm660-haptics",
"qcom,pm8150b-haptics".
- reg
Usage: required
Value type: <u32>
Definition: Base address of haptics peripheral.
- interrupts
Usage: required
Value type: <prop-encoded-array>
Definition: Peripheral interrupt specifier.
- interrupt-names
Usage: required
Value type: <stringlist>
Definition: Interrupt names. This list must match up 1-to-1 with the
interrupts specified in the 'interrupts' property. Following
interrupts are required: "hap_play_irq", "hap_sc_irq".
- qcom,actuator-type
Usage: optional
Value type: <string>
Definition: Specifies the type of the actuator connected on the output of
haptics module. Allowed values: "erm", "lra". If this is
not specified, then LRA type will be used by default.
- qcom,vmax-mv
Usage: optional
Value type: <u32>
Definition: Specifies the maximum allowed output voltage in millivolts
for the actuator. Value specified here will be rounded
off to the closest multiple of 116 mV. Allowed values:
0 to 3596. If this is not specified, then 1800 mV will be
used by default.
- qcom,ilim-ma
Usage: optional
Value type: <u32>
Definition: Specifies the maximum allowed output current in mA for the
actuator. Allowed values: 400 or 800. If this is not
specified, 400 mA will be used by default.
- qcom,play-rate-us
Usage: optional
Value type: <u32>
Definition: Specifies the period at which each sample of the 8-byte waveform
registers is played. For ERM, this period is flexible and it
can be chosen based on the desired shape of the pattern.
For LRA, it should be set equal to the resonance period
specified in the LRA actuator datasheet. Allowed values are:
0 to 20475. If this is not specified, 5715us play rate is used.
- qcom,external-waveform-source
Usage: optional
Value type: <string>
Definition: The haptics module supports to play with internal constant
Vmax strength or play with patterns specified in its internal
8-bytes waveform buffer. It can also play with the audio
LINE-IN signal or PWM waveform coming from LINE-IN/PWM pin.
This property specify the kind of the waveform resources
on the LINE-IN/PWM pins. Allowed values are: "audio", "pwm".
If this is not specified, internal signals (Vmax or buffer)
will be selected according to the requriement of the playing
waveforms.
- vdd-supply
Usage: optional
Value type: <phandle>
Definition: Specifies the phandle of the regulator device which supplies
haptics module through VDD_HAP pin. This is only needed if VDD_HAP
is supplied from an external boost regulator instead of VPH_PWR.
- qcom,haptics-ext-pin-twm
Usage: optional
Value type: <empty>
Definition: A boolean property which configures haptics into external-pin
control during TWM entry.
Following properties are specific only when LRA actuator is used:
- qcom,lra-resonance-sig-shape
Usage: optional
Value type: <string>
Definition: Specifies the shape of the LRA resonance drive signal. Allowed
values: "sine", "square". If this is not specified, sinusoid
resonance driver signal is used.
- qcom,lra-allow-variable-play-rate
Usage: optional
Value type: <empty>
Definition: If specified, "qcom,wf-play-rate-us" for LRA defined in each
effect could be different with the resonance period of the
LRA actuator.
- qcom,lra-auto-resonance-mode
Usage: optional
Value type: <string>
Definition: Specifies the auto resonance technique for LRA. Allowed values are:
"zxd": zero crossing based discontinuous method;
"qwd": quarter wave drive method;
Following properties could be specified in child nodes for defining vibrating
waveforms/effects:
- qcom,effect-id
Usage: required
Value type: <u32>
Definition: Specifies the effect ID that the client can request to play the
corresponding waveform defined in this child node. The ID is
normaly defined and sent from userspace for certain user
notification event.
- qcom,wf-pattern
Usage: required
Value type: <prop-encoded-array>
Definition: Specifies the waveform pattern in a byte array that will be
played for the effect-id. The bit fields of each byte are:
[7]: drive direction, 0 - forward; 1 - reverse
[6]: overdrive, 0 -- 1x drive; 1 -- 2x drive
[5:1]: waveform amplitude
[0]: reserved.
- qcom,wf-vmax-mv
Usage: optional
Value type: <u32>
Definition: Specifies the maximum allowed output voltage in millivolts
for this effect. Value specified here will be rounded
off to the closest multiple of 116 mV. Allowed values:
0 to 3596. If this is not specified, the value defined in
"qcom,vmax-mv" will be applied.
- qcom,wf-play-rate-us
Usage: optional
Value type: <u32>
Definition: Specifies the play period in microseconds for each byte pattern.
Allowed values are: 0 to 20475. For LRA actuator, if
"qcom,lra-allow-variable-play-rate" is defined, it could be
set to other values not equal to the resonance period of the
LRA actuator.
- qcom,wf-repeat-count
Usage: optional
Value type: <u32>
Definition: Specifies the repeat times for the waveform pattern. Allowed
values are: 1, 2, 4, 8, 16, 32, 64, 128.
- qcom,wf-s-repeat-count
Usage: optional
Value type: <u32>
Definition: Specifies the repeat times for each sample defined in
qcom,wf-pattern. Allowed values are: 1, 2, 4, 8.
- qcom,wf-brake-pattern
Usage: optional
Value type: <prop-encoded-array>
Definition: Specifies the brake pattern with 4 elements used to enable the
internal reverse braking. Allowed values for each element are:
0: no brake
1: brake with (Vmax / 2) strength
2: brake with Vmax strength
3: brake with (2 * Vmax) strength
If this property is specified with an array of non-zero values,
then the brake pattern is applied at the end of the playing
waveform.
- qcom,lra-auto-resonance-disable
Usage: optional
Value type: <empty>
Definition: If specified, the hardware feature of LRA auto resonance detection
is disabled.
Example:
qcom,haptics@c000 {
compatible = "qcom,haptics";
reg = <0xc000 0x100>;
interrupts = <0x3 0xc0 0x0 IRQ_TYPE_EDGE_BOTH>,
<0x3 0xc0 0x1 IRQ_TYPE_EDGE_BOTH>;
interrupt-names = "hap-sc-irq", "hap-play-irq";
qcom,actuator-type = "lra";
qcom,vmax-mv = <1800>;
qcom,ilim-ma = <400>;
qcom,play-rate-us = <8000>;
qcom,lra-resonance-sig-shape = "sine";
qcom,lra-auto-resonance-mode = "qwd";
qcom,lra-allow-variable-play-rate;
wf_0 {
/* CLICK effect */
qcom,effect-id = <0>;
qcom,wf-play-rate-us = <6250>;
qcom,wf-pattern = [3e 3e 3e];
qcom,lra-auto-resonance-disable;
};
wf_5 {
/* HEAVY_CLICK effect */
qcom,effect-id = <5>;
qcom,wf-play-rate-us = <6250>;
qcom,wf-pattern = [7e 7e 7e];
};
};