path: root/Documentation/input
diff options
authorJohan Hovold <jhovold@gmail.com>2011-05-11 16:35:30 -0700
committerDmitry Torokhov <dmitry.torokhov@gmail.com>2011-05-12 08:28:47 -0700
commite70bdd41bd0ead91b4a43e9d656ac1569d7c8779 (patch)
tree9518f22417dde4f2b2d2ed3a25af8bc8f4e3814c /Documentation/input
parent521a8f5cb79d1017d00d26143227159674e3b79d (diff)
Input: rotary-encoder - add support for half-period encoders
Add support for encoders that have two detents per input signal period. Signed-off-by: Johan Hovold <jhovold@gmail.com> Acked-by: Daniel Mack <zonque@gmail.com> Signed-off-by: Dmitry Torokhov <dtor@mail.ru>
Diffstat (limited to 'Documentation/input')
1 files changed, 13 insertions, 0 deletions
diff --git a/Documentation/input/rotary-encoder.txt b/Documentation/input/rotary-encoder.txt
index 943e8f6f2b15..92e68bce13a4 100644
--- a/Documentation/input/rotary-encoder.txt
+++ b/Documentation/input/rotary-encoder.txt
@@ -9,6 +9,9 @@ peripherals with two wires. The outputs are phase-shifted by 90 degrees
and by triggering on falling and rising edges, the turn direction can
be determined.
+Some encoders have both outputs low in stable states, whereas others also have
+a stable state with both outputs high (half-period mode).
The phase diagram of these two outputs look like this:
_____ _____ _____
@@ -26,6 +29,8 @@ The phase diagram of these two outputs look like this:
one step
+ |<-->|
+ one step (half-period mode)
For more information, please see
@@ -34,6 +39,13 @@ For more information, please see
1. Events / state machine
+In half-period mode, state a) and c) above are used to determine the
+rotational direction based on the last stable state. Events are reported in
+states b) and d) given that the new stable state is different from the last
+(i.e. the rotation was not reversed half-way).
+Otherwise, the following apply:
a) Rising edge on channel A, channel B in low state
This state is used to recognize a clockwise turn
@@ -96,6 +108,7 @@ static struct rotary_encoder_platform_data my_rotary_encoder_info = {
.gpio_b = GPIO_ROTARY_B,
.inverted_a = 0,
.inverted_b = 0,
+ .half_period = false,
static struct platform_device rotary_encoder_device = {