aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorLinus Torvalds <torvalds@linux-foundation.org>2012-10-02 20:16:10 -0400
committerLinus Torvalds <torvalds@linux-foundation.org>2012-10-02 20:16:10 -0400
commitfc47912d9cda50ae6bd9ca30e97e8c03de5b7b60 (patch)
treed7da6ce3b23c1524e681ee33aa6e21d3c0586108
parent06fe918e9f177dc2a0592b0ad40a6ce4920b2033 (diff)
parentdde3ada3d0069855eeb353707b2b0f946191cfd6 (diff)
Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/dtor/input
Pull input updates from Dmitry Torokhov: "A few drivers were updated with device tree bindings and others got a few small cleanups and fixes." Fix trivial conflict in drivers/input/keyboard/omap-keypad.c due to changes clashing with a whitespace cleanup. * 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/dtor/input: (28 commits) Input: wacom - mark Intuos5 pad as in-prox when touching buttons Input: synaptics - adjust threshold for treating position values as negative Input: hgpk - use %*ph to dump small buffer Input: gpio_keys_polled - fix dt pdata->nbuttons Input: Add KD[GS]KBDIACRUC ioctls to the compatible list Input: omap-keypad - fixed formatting Input: tegra - move platform data header Input: wacom - add support for EMR on Cintiq 24HD touch Input: s3c2410_ts - make s3c_ts_pmops const Input: samsung-keypad - use of_get_child_count() helper Input: samsung-keypad - use of_match_ptr() Input: uinput - fix formatting Input: uinput - specify exact bit sizes on userspace APIs Input: uinput - mark failed submission requests as free Input: uinput - fix race that can block nonblocking read Input: uinput - return -EINVAL when read buffer size is too small Input: uinput - take event lock when fetching events from buffer Input: get rid of MATCH_BIT() macro Input: rotary-encoder - add DT bindings Input: rotary-encoder - constify platform data pointers ...
-rw-r--r--Documentation/devicetree/bindings/input/gpio-keys-polled.txt38
-rw-r--r--Documentation/devicetree/bindings/input/rotary-encoder.txt36
-rw-r--r--drivers/input/apm-power.c2
-rw-r--r--drivers/input/ff-core.c4
-rw-r--r--drivers/input/ff-memless.c14
-rw-r--r--drivers/input/input.c43
-rw-r--r--drivers/input/joydev.c2
-rw-r--r--drivers/input/keyboard/gpio_keys.c169
-rw-r--r--drivers/input/keyboard/gpio_keys_polled.c147
-rw-r--r--drivers/input/keyboard/omap-keypad.c6
-rw-r--r--drivers/input/keyboard/samsung-keypad.c10
-rw-r--r--drivers/input/keyboard/tegra-kbc.c2
-rw-r--r--drivers/input/misc/rotary_encoder.c140
-rw-r--r--drivers/input/misc/twl4030-pwrbutton.c1
-rw-r--r--drivers/input/misc/uinput.c197
-rw-r--r--drivers/input/mouse/hgpk.c9
-rw-r--r--drivers/input/mouse/synaptics.c31
-rw-r--r--drivers/input/mousedev.c9
-rw-r--r--drivers/input/sparse-keymap.c4
-rw-r--r--drivers/input/tablet/wacom_wac.c2
-rw-r--r--drivers/input/touchscreen/s3c2410_ts.c2
-rw-r--r--fs/compat_ioctl.c2
-rw-r--r--include/linux/input/tegra_kbc.h (renamed from arch/arm/mach-tegra/include/mach/kbc.h)0
-rw-r--r--include/linux/uinput.h27
24 files changed, 610 insertions, 287 deletions
diff --git a/Documentation/devicetree/bindings/input/gpio-keys-polled.txt b/Documentation/devicetree/bindings/input/gpio-keys-polled.txt
new file mode 100644
index 000000000000..313abefa37cc
--- /dev/null
+++ b/Documentation/devicetree/bindings/input/gpio-keys-polled.txt
@@ -0,0 +1,38 @@
1Device-Tree bindings for input/gpio_keys_polled.c keyboard driver
2
3Required properties:
4 - compatible = "gpio-keys-polled";
5 - poll-interval: Poll interval time in milliseconds
6
7Optional properties:
8 - autorepeat: Boolean, Enable auto repeat feature of Linux input
9 subsystem.
10
11Each button (key) is represented as a sub-node of "gpio-keys-polled":
12Subnode properties:
13
14 - gpios: OF device-tree gpio specification.
15 - label: Descriptive name of the key.
16 - linux,code: Keycode to emit.
17
18Optional subnode-properties:
19 - linux,input-type: Specify event type this button/key generates.
20 If not specified defaults to <1> == EV_KEY.
21 - debounce-interval: Debouncing interval time in milliseconds.
22 If not specified defaults to 5.
23 - gpio-key,wakeup: Boolean, button can wake-up the system.
24
25Example nodes:
26
27 gpio_keys_polled {
28 compatible = "gpio-keys-polled";
29 #address-cells = <1>;
30 #size-cells = <0>;
31 poll-interval = <100>;
32 autorepeat;
33 button@21 {
34 label = "GPIO Key UP";
35 linux,code = <103>;
36 gpios = <&gpio1 0 1>;
37 };
38 ...
diff --git a/Documentation/devicetree/bindings/input/rotary-encoder.txt b/Documentation/devicetree/bindings/input/rotary-encoder.txt
new file mode 100644
index 000000000000..331549593ed5
--- /dev/null
+++ b/Documentation/devicetree/bindings/input/rotary-encoder.txt
@@ -0,0 +1,36 @@
1Rotary encoder DT bindings
2
3Required properties:
4- gpios: a spec for two GPIOs to be used
5
6Optional properties:
7- linux,axis: the input subsystem axis to map to this rotary encoder.
8 Defaults to 0 (ABS_X / REL_X)
9- rotary-encoder,steps: Number of steps in a full turnaround of the
10 encoder. Only relevant for absolute axis. Defaults to 24 which is a
11 typical value for such devices.
12- rotary-encoder,relative-axis: register a relative axis rather than an
13 absolute one. Relative axis will only generate +1/-1 events on the input
14 device, hence no steps need to be passed.
15- rotary-encoder,rollover: Automatic rollove when the rotary value becomes
16 greater than the specified steps or smaller than 0. For absolute axis only.
17- rotary-encoder,half-period: Makes the driver work on half-period mode.
18
19See Documentation/input/rotary-encoder.txt for more information.
20
21Example:
22
23 rotary@0 {
24 compatible = "rotary-encoder";
25 gpios = <&gpio 19 1>, <&gpio 20 0>; /* GPIO19 is inverted */
26 linux,axis = <0>; /* REL_X */
27 rotary-encoder,relative-axis;
28 };
29
30 rotary@1 {
31 compatible = "rotary-encoder";
32 gpios = <&gpio 21 0>, <&gpio 22 0>;
33 linux,axis = <1>; /* ABS_Y */
34 rotary-encoder,steps = <24>;
35 rotary-encoder,rollover;
36 };
diff --git a/drivers/input/apm-power.c b/drivers/input/apm-power.c
index e90ee3d30613..650177a3c858 100644
--- a/drivers/input/apm-power.c
+++ b/drivers/input/apm-power.c
@@ -33,7 +33,7 @@ static void system_power_event(unsigned int keycode)
33} 33}
34 34
35static void apmpower_event(struct input_handle *handle, unsigned int type, 35static void apmpower_event(struct input_handle *handle, unsigned int type,
36 unsigned int code, int value) 36 unsigned int code, int value)
37{ 37{
38 /* only react on key down events */ 38 /* only react on key down events */
39 if (value != 1) 39 if (value != 1)
diff --git a/drivers/input/ff-core.c b/drivers/input/ff-core.c
index 480eb9d9876a..f50f6dd92274 100644
--- a/drivers/input/ff-core.c
+++ b/drivers/input/ff-core.c
@@ -138,8 +138,8 @@ int input_ff_upload(struct input_dev *dev, struct ff_effect *effect,
138 138
139 if (effect->id == -1) { 139 if (effect->id == -1) {
140 for (id = 0; id < ff->max_effects; id++) 140 for (id = 0; id < ff->max_effects; id++)
141 if (!ff->effect_owners[id]) 141 if (!ff->effect_owners[id])
142 break; 142 break;
143 143
144 if (id >= ff->max_effects) { 144 if (id >= ff->max_effects) {
145 ret = -ENOSPC; 145 ret = -ENOSPC;
diff --git a/drivers/input/ff-memless.c b/drivers/input/ff-memless.c
index b107922514fb..74c0d8c6002a 100644
--- a/drivers/input/ff-memless.c
+++ b/drivers/input/ff-memless.c
@@ -72,12 +72,14 @@ static const struct ff_envelope *get_envelope(const struct ff_effect *effect)
72 static const struct ff_envelope empty_envelope; 72 static const struct ff_envelope empty_envelope;
73 73
74 switch (effect->type) { 74 switch (effect->type) {
75 case FF_PERIODIC: 75 case FF_PERIODIC:
76 return &effect->u.periodic.envelope; 76 return &effect->u.periodic.envelope;
77 case FF_CONSTANT: 77
78 return &effect->u.constant.envelope; 78 case FF_CONSTANT:
79 default: 79 return &effect->u.constant.envelope;
80 return &empty_envelope; 80
81 default:
82 return &empty_envelope;
81 } 83 }
82} 84}
83 85
diff --git a/drivers/input/input.c b/drivers/input/input.c
index 5244f3d05b12..ace3f7c4226d 100644
--- a/drivers/input/input.c
+++ b/drivers/input/input.c
@@ -918,18 +918,10 @@ int input_set_keycode(struct input_dev *dev,
918} 918}
919EXPORT_SYMBOL(input_set_keycode); 919EXPORT_SYMBOL(input_set_keycode);
920 920
921#define MATCH_BIT(bit, max) \
922 for (i = 0; i < BITS_TO_LONGS(max); i++) \
923 if ((id->bit[i] & dev->bit[i]) != id->bit[i]) \
924 break; \
925 if (i != BITS_TO_LONGS(max)) \
926 continue;
927