[PATCHv4,1/3] dt-bindings: input: add pwm-vibrator
diff mbox

Message ID 20170714100151.31234-2-sebastian.reichel@collabora.co.uk
State Under Review
Headers show

Commit Message

Sebastian Reichel July 14, 2017, 10:01 a.m. UTC
Add DT binding document for PWM controlled vibrator devices.

Signed-off-by: Sebastian Reichel <sebastian.reichel@collabora.co.uk>
---
 .../devicetree/bindings/input/pwm-vibrator.txt     | 66 ++++++++++++++++++++++
 1 file changed, 66 insertions(+)
 create mode 100644 Documentation/devicetree/bindings/input/pwm-vibrator.txt

Comments

Rob Herring July 17, 2017, 6:54 p.m. UTC | #1
On Fri, Jul 14, 2017 at 12:01:49PM +0200, Sebastian Reichel wrote:
> Add DT binding document for PWM controlled vibrator devices.
> 
> Signed-off-by: Sebastian Reichel <sebastian.reichel@collabora.co.uk>
> ---
>  .../devicetree/bindings/input/pwm-vibrator.txt     | 66 ++++++++++++++++++++++
>  1 file changed, 66 insertions(+)
>  create mode 100644 Documentation/devicetree/bindings/input/pwm-vibrator.txt

Acked-by: Rob Herring <robh@kernel.org>
--
To unsubscribe from this list: send the line "unsubscribe linux-input" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Pavel Machek July 24, 2017, 7:20 p.m. UTC | #2
On Fri 2017-07-14 12:01:49, Sebastian Reichel wrote:
> Add DT binding document for PWM controlled vibrator devices.
> 
> Signed-off-by: Sebastian Reichel <sebastian.reichel@collabora.co.uk>

Acked-by: Pavel Machek <pavel@ucw.cz>

> index 000000000000..09145d18491d
> --- /dev/null
> +++ b/Documentation/devicetree/bindings/input/pwm-vibrator.txt
> @@ -0,0 +1,66 @@
> +* PWM vibrator device tree bindings
> +
> +Registers a PWM device as vibrator. It is expected, that the vibrator's
> +strength increases based on the duty cycle of the enable PWM channel
> +(100% duty cycle meaning strongest vibration, 0% meaning no vibration).
> +
> +The binding supports an optional direction PWM channel, that can be
> +driven at fixed duty cycle. If available this is can be used to increase
> +the vibration effect of some devices.

Actually what "direction" does would be nice to explain, because I
don't know. Does it make the motor turn the other way around?

> +Required properties:
> +- compatible: should contain "pwm-vibrator"

should->Should.

> +- pwm-names: Should contain "enable" and optionally "direction"
> +- pwms: Should contain a PWM handle for each entry in pwm-names
> +
> +Optional properties:
> +- vcc-supply: Phandle for the regulator supplying power
> +- direction-duty-cycle-ns: Duty cycle of the direction PWM channel in
> +                           nanoseconds, defaults to 50% of the channel's
> +			   period.

Is nanoseconds right unit here? It drives a motor...

Thanks,
									Pavel
Sebastian Reichel July 25, 2017, 8:59 a.m. UTC | #3
Hi,

On Mon, Jul 24, 2017 at 09:20:17PM +0200, Pavel Machek wrote:
> On Fri 2017-07-14 12:01:49, Sebastian Reichel wrote:
> > Add DT binding document for PWM controlled vibrator devices.
> > 
> > Signed-off-by: Sebastian Reichel <sebastian.reichel@collabora.co.uk>
> 
> Acked-by: Pavel Machek <pavel@ucw.cz>
> 
> > index 000000000000..09145d18491d
> > --- /dev/null
> > +++ b/Documentation/devicetree/bindings/input/pwm-vibrator.txt
> > @@ -0,0 +1,66 @@
> > +* PWM vibrator device tree bindings
> > +
> > +Registers a PWM device as vibrator. It is expected, that the vibrator's
> > +strength increases based on the duty cycle of the enable PWM channel
> > +(100% duty cycle meaning strongest vibration, 0% meaning no vibration).
> > +
> > +The binding supports an optional direction PWM channel, that can be
> > +driven at fixed duty cycle. If available this is can be used to increase
> > +the vibration effect of some devices.
> 
> Actually what "direction" does would be nice to explain, because I
> don't know. Does it make the motor turn the other way around?

Yes, at least that's how I understand it. IIUIC this will increase
the imbalance effect and thus the vibration.

> > +Required properties:
> > +- compatible: should contain "pwm-vibrator"
> 
> should->Should.
>
> > +- pwm-names: Should contain "enable" and optionally "direction"
> > +- pwms: Should contain a PWM handle for each entry in pwm-names
> > +
> > +Optional properties:
> > +- vcc-supply: Phandle for the regulator supplying power
> > +- direction-duty-cycle-ns: Duty cycle of the direction PWM channel in
> > +                           nanoseconds, defaults to 50% of the channel's
> > +			   period.
> 
> Is nanoseconds right unit here? It drives a motor...

Yes, for the driving the motor the values will be very big
and we could use milliseconds. But the PWM specifier [0] uses
nanoseconds for the period and I think period and duty cycle
should be described in the same scale.

[0] Documentation/devicetree/bindings/pwm/pwm.txt

-- Sebastian

Patch
diff mbox

diff --git a/Documentation/devicetree/bindings/input/pwm-vibrator.txt b/Documentation/devicetree/bindings/input/pwm-vibrator.txt
new file mode 100644
index 000000000000..09145d18491d
--- /dev/null
+++ b/Documentation/devicetree/bindings/input/pwm-vibrator.txt
@@ -0,0 +1,66 @@ 
+* PWM vibrator device tree bindings
+
+Registers a PWM device as vibrator. It is expected, that the vibrator's
+strength increases based on the duty cycle of the enable PWM channel
+(100% duty cycle meaning strongest vibration, 0% meaning no vibration).
+
+The binding supports an optional direction PWM channel, that can be
+driven at fixed duty cycle. If available this is can be used to increase
+the vibration effect of some devices.
+
+Required properties:
+- compatible: should contain "pwm-vibrator"
+- pwm-names: Should contain "enable" and optionally "direction"
+- pwms: Should contain a PWM handle for each entry in pwm-names
+
+Optional properties:
+- vcc-supply: Phandle for the regulator supplying power
+- direction-duty-cycle-ns: Duty cycle of the direction PWM channel in
+                           nanoseconds, defaults to 50% of the channel's
+			   period.
+
+Example from Motorola Droid 4:
+
+&omap4_pmx_core {
+	vibrator_direction_pin: pinmux_vibrator_direction_pin {
+		pinctrl-single,pins = <
+		OMAP4_IOPAD(0x1ce, PIN_OUTPUT | MUX_MODE1) /* dmtimer8_pwm_evt (gpio_27) */
+		>;
+	};
+
+	vibrator_enable_pin: pinmux_vibrator_enable_pin {
+		pinctrl-single,pins = <
+		OMAP4_IOPAD(0X1d0, PIN_OUTPUT | MUX_MODE1) /* dmtimer9_pwm_evt (gpio_28) */
+		>;
+	};
+};
+
+/ {
+	pwm8: dmtimer-pwm {
+		pinctrl-names = "default";
+		pinctrl-0 = <&vibrator_direction_pin>;
+
+		compatible = "ti,omap-dmtimer-pwm";
+		#pwm-cells = <3>;
+		ti,timers = <&timer8>;
+		ti,clock-source = <0x01>;
+	};
+
+	pwm9: dmtimer-pwm {
+		pinctrl-names = "default";
+		pinctrl-0 = <&vibrator_enable_pin>;
+
+		compatible = "ti,omap-dmtimer-pwm";
+		#pwm-cells = <3>;
+		ti,timers = <&timer9>;
+		ti,clock-source = <0x01>;
+	};
+
+	vibrator {
+		compatible = "pwm-vibrator";
+		pwms = <&pwm8 0 1000000000 0>,
+		       <&pwm9 0 1000000000 0>;
+		pwm-names = "enable", "direction";
+		direction-duty-cycle-ns = <1000000000>;
+	};
+};