xref: /OK3568_Linux_fs/kernel/Documentation/devicetree/bindings/input/pwm-vibrator.txt (revision 4882a59341e53eb6f0b4789bf948001014eff981)
1*4882a593Smuzhiyun* PWM vibrator device tree bindings
2*4882a593Smuzhiyun
3*4882a593SmuzhiyunRegisters a PWM device as vibrator. It is expected, that the vibrator's
4*4882a593Smuzhiyunstrength increases based on the duty cycle of the enable PWM channel
5*4882a593Smuzhiyun(100% duty cycle meaning strongest vibration, 0% meaning no vibration).
6*4882a593Smuzhiyun
7*4882a593SmuzhiyunThe binding supports an optional direction PWM channel, that can be
8*4882a593Smuzhiyundriven at fixed duty cycle. If available this is can be used to increase
9*4882a593Smuzhiyunthe vibration effect of some devices.
10*4882a593Smuzhiyun
11*4882a593SmuzhiyunRequired properties:
12*4882a593Smuzhiyun- compatible: should contain "pwm-vibrator"
13*4882a593Smuzhiyun- pwm-names: Should contain "enable" and optionally "direction"
14*4882a593Smuzhiyun- pwms: Should contain a PWM handle for each entry in pwm-names
15*4882a593Smuzhiyun
16*4882a593SmuzhiyunOptional properties:
17*4882a593Smuzhiyun- vcc-supply: Phandle for the regulator supplying power
18*4882a593Smuzhiyun- direction-duty-cycle-ns: Duty cycle of the direction PWM channel in
19*4882a593Smuzhiyun                           nanoseconds, defaults to 50% of the channel's
20*4882a593Smuzhiyun			   period.
21*4882a593Smuzhiyun
22*4882a593SmuzhiyunExample from Motorola Droid 4:
23*4882a593Smuzhiyun
24*4882a593Smuzhiyun&omap4_pmx_core {
25*4882a593Smuzhiyun	vibrator_direction_pin: pinmux_vibrator_direction_pin {
26*4882a593Smuzhiyun		pinctrl-single,pins = <
27*4882a593Smuzhiyun		OMAP4_IOPAD(0x1ce, PIN_OUTPUT | MUX_MODE1) /* dmtimer8_pwm_evt (gpio_27) */
28*4882a593Smuzhiyun		>;
29*4882a593Smuzhiyun	};
30*4882a593Smuzhiyun
31*4882a593Smuzhiyun	vibrator_enable_pin: pinmux_vibrator_enable_pin {
32*4882a593Smuzhiyun		pinctrl-single,pins = <
33*4882a593Smuzhiyun		OMAP4_IOPAD(0X1d0, PIN_OUTPUT | MUX_MODE1) /* dmtimer9_pwm_evt (gpio_28) */
34*4882a593Smuzhiyun		>;
35*4882a593Smuzhiyun	};
36*4882a593Smuzhiyun};
37*4882a593Smuzhiyun
38*4882a593Smuzhiyun/ {
39*4882a593Smuzhiyun	pwm8: dmtimer-pwm {
40*4882a593Smuzhiyun		pinctrl-names = "default";
41*4882a593Smuzhiyun		pinctrl-0 = <&vibrator_direction_pin>;
42*4882a593Smuzhiyun
43*4882a593Smuzhiyun		compatible = "ti,omap-dmtimer-pwm";
44*4882a593Smuzhiyun		#pwm-cells = <3>;
45*4882a593Smuzhiyun		ti,timers = <&timer8>;
46*4882a593Smuzhiyun		ti,clock-source = <0x01>;
47*4882a593Smuzhiyun	};
48*4882a593Smuzhiyun
49*4882a593Smuzhiyun	pwm9: dmtimer-pwm {
50*4882a593Smuzhiyun		pinctrl-names = "default";
51*4882a593Smuzhiyun		pinctrl-0 = <&vibrator_enable_pin>;
52*4882a593Smuzhiyun
53*4882a593Smuzhiyun		compatible = "ti,omap-dmtimer-pwm";
54*4882a593Smuzhiyun		#pwm-cells = <3>;
55*4882a593Smuzhiyun		ti,timers = <&timer9>;
56*4882a593Smuzhiyun		ti,clock-source = <0x01>;
57*4882a593Smuzhiyun	};
58*4882a593Smuzhiyun
59*4882a593Smuzhiyun	vibrator {
60*4882a593Smuzhiyun		compatible = "pwm-vibrator";
61*4882a593Smuzhiyun		pwms = <&pwm9 0 1000000000 0>,
62*4882a593Smuzhiyun                       <&pwm8 0 1000000000 0>;
63*4882a593Smuzhiyun		pwm-names = "enable", "direction";
64*4882a593Smuzhiyun		direction-duty-cycle-ns = <1000000000>;
65*4882a593Smuzhiyun	};
66*4882a593Smuzhiyun};
67