diff options
author | Linus Torvalds <torvalds@linux-foundation.org> | 2012-10-02 20:16:10 -0400 |
---|---|---|
committer | Linus Torvalds <torvalds@linux-foundation.org> | 2012-10-02 20:16:10 -0400 |
commit | fc47912d9cda50ae6bd9ca30e97e8c03de5b7b60 (patch) | |
tree | d7da6ce3b23c1524e681ee33aa6e21d3c0586108 /drivers/input/mouse | |
parent | 06fe918e9f177dc2a0592b0ad40a6ce4920b2033 (diff) | |
parent | dde3ada3d0069855eeb353707b2b0f946191cfd6 (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
...
Diffstat (limited to 'drivers/input/mouse')
-rw-r--r-- | drivers/input/mouse/hgpk.c | 9 | ||||
-rw-r--r-- | drivers/input/mouse/synaptics.c | 31 |
2 files changed, 26 insertions, 14 deletions
diff --git a/drivers/input/mouse/hgpk.c b/drivers/input/mouse/hgpk.c index 575f880727fe..62be888e83d0 100644 --- a/drivers/input/mouse/hgpk.c +++ b/drivers/input/mouse/hgpk.c | |||
@@ -334,11 +334,8 @@ static bool hgpk_is_byte_valid(struct psmouse *psmouse, unsigned char *packet) | |||
334 | 334 | ||
335 | if (!valid) | 335 | if (!valid) |
336 | psmouse_dbg(psmouse, | 336 | psmouse_dbg(psmouse, |
337 | "bad data, mode %d (%d) %02x %02x %02x %02x %02x %02x\n", | 337 | "bad data, mode %d (%d) %*ph\n", |
338 | priv->mode, pktcnt, | 338 | priv->mode, pktcnt, 6, psmouse->packet); |
339 | psmouse->packet[0], psmouse->packet[1], | ||
340 | psmouse->packet[2], psmouse->packet[3], | ||
341 | psmouse->packet[4], psmouse->packet[5]); | ||
342 | 339 | ||
343 | return valid; | 340 | return valid; |
344 | } | 341 | } |
@@ -1030,7 +1027,7 @@ static enum hgpk_model_t hgpk_get_model(struct psmouse *psmouse) | |||
1030 | return -EIO; | 1027 | return -EIO; |
1031 | } | 1028 | } |
1032 | 1029 | ||
1033 | psmouse_dbg(psmouse, "ID: %02x %02x %02x\n", param[0], param[1], param[2]); | 1030 | psmouse_dbg(psmouse, "ID: %*ph\n", 3, param); |
1034 | 1031 | ||
1035 | /* HGPK signature: 0x67, 0x00, 0x<model> */ | 1032 | /* HGPK signature: 0x67, 0x00, 0x<model> */ |
1036 | if (param[0] != 0x67 || param[1] != 0x00) | 1033 | if (param[0] != 0x67 || param[1] != 0x00) |
diff --git a/drivers/input/mouse/synaptics.c b/drivers/input/mouse/synaptics.c index 37033ade79d3..12d12ca3fee0 100644 --- a/drivers/input/mouse/synaptics.c +++ b/drivers/input/mouse/synaptics.c | |||
@@ -53,14 +53,19 @@ | |||
53 | #define ABS_POS_BITS 13 | 53 | #define ABS_POS_BITS 13 |
54 | 54 | ||
55 | /* | 55 | /* |
56 | * Any position values from the hardware above the following limits are | 56 | * These values should represent the absolute maximum value that will |
57 | * treated as "wrapped around negative" values that have been truncated to | 57 | * be reported for a positive position value. Some Synaptics firmware |
58 | * the 13-bit reporting range of the hardware. These are just reasonable | 58 | * uses this value to indicate a finger near the edge of the touchpad |
59 | * guesses and can be adjusted if hardware is found that operates outside | 59 | * whose precise position cannot be determined. |
60 | * of these parameters. | 60 | * |
61 | * At least one touchpad is known to report positions in excess of this | ||
62 | * value which are actually negative values truncated to the 13-bit | ||
63 | * reporting range. These values have never been observed to be lower | ||
64 | * than 8184 (i.e. -8), so we treat all values greater than 8176 as | ||
65 | * negative and any other value as positive. | ||
61 | */ | 66 | */ |
62 | #define X_MAX_POSITIVE (((1 << ABS_POS_BITS) + XMAX) / 2) | 67 | #define X_MAX_POSITIVE 8176 |
63 | #define Y_MAX_POSITIVE (((1 << ABS_POS_BITS) + YMAX) / 2) | 68 | #define Y_MAX_POSITIVE 8176 |
64 | 69 | ||
65 | /***************************************************************************** | 70 | /***************************************************************************** |
66 | * Stuff we need even when we do not want native Synaptics support | 71 | * Stuff we need even when we do not want native Synaptics support |
@@ -604,11 +609,21 @@ static int synaptics_parse_hw_state(const unsigned char buf[], | |||
604 | hw->right = (buf[0] & 0x02) ? 1 : 0; | 609 | hw->right = (buf[0] & 0x02) ? 1 : 0; |
605 | } | 610 | } |
606 | 611 | ||
607 | /* Convert wrap-around values to negative */ | 612 | /* |
613 | * Convert wrap-around values to negative. (X|Y)_MAX_POSITIVE | ||
614 | * is used by some firmware to indicate a finger at the edge of | ||
615 | * the touchpad whose precise position cannot be determined, so | ||
616 | * convert these values to the maximum axis value. | ||
617 | */ | ||
608 | if (hw->x > X_MAX_POSITIVE) | 618 | if (hw->x > X_MAX_POSITIVE) |
609 | hw->x -= 1 << ABS_POS_BITS; | 619 | hw->x -= 1 << ABS_POS_BITS; |
620 | else if (hw->x == X_MAX_POSITIVE) | ||
621 | hw->x = XMAX; | ||
622 | |||
610 | if (hw->y > Y_MAX_POSITIVE) | 623 | if (hw->y > Y_MAX_POSITIVE) |
611 | hw->y -= 1 << ABS_POS_BITS; | 624 | hw->y -= 1 << ABS_POS_BITS; |
625 | else if (hw->y == Y_MAX_POSITIVE) | ||
626 | hw->y = YMAX; | ||
612 | 627 | ||
613 | return 0; | 628 | return 0; |
614 | } | 629 | } |