diff options
| author | Olof Johansson <olof@lixom.net> | 2015-04-03 16:22:39 -0400 |
|---|---|---|
| committer | Olof Johansson <olof@lixom.net> | 2015-04-03 16:22:39 -0400 |
| commit | ee327179b9f5f9c0259f43493a5a7e96854094de (patch) | |
| tree | bb45459f621a67218cd5fd580cc19b724b5bf777 /drivers/input/mouse/focaltech.c | |
| parent | 6054ef25e20219a604429c1437bc601f8ead87a4 (diff) | |
| parent | 83c3a7d4ac7fdc29a64bf9a5467a36b4c72a1eed (diff) | |
Merge tag 'omap-for-v4.1/wl12xx-dt' of git://git.kernel.org/pub/scm/linux/kernel/git/tmlind/linux-omap into next/dt
Merge "wireless wl12xx and omap device tree changes for v4.1" from Tony
Lindgren:
Wireless and omap changes to make wl12xx driver to use device tree
data instead of platform data from Eliad Peller <eliad@wizery.com>:
- Add device-tree support to the wlcore (wl12xx/wl18xx) driver.
- Update the current users to use the bindings instead of pdata-quirks.
- Finally, remove the deprecated wl12xx_platform_data struct
Note that da850 board file code that still uses the platform data,
but we have da850.dtsi that can be used instead. So it was decided
that we should try to remove the wl12xx support from the da850
board file as suggested by Sekhar Nori <nsekhar@ti.com>. As it's
the last patch in the series, the last patch can be simply reverted
if needed.
As this series touches quite a bit of arch code, it was suggested
by Kalle Valo <kvalo@codeaurora.org> that the whole series should
be merged via the arm-soc tree.
* tag 'omap-for-v4.1/wl12xx-dt' of git://git.kernel.org/pub/scm/linux/kernel/git/tmlind/linux-omap:
wlcore: remove wl12xx_platform_data
ARM: dts: add wl12xx/wl18xx bindings
wlcore: add device-tree support
dt: bindings: add TI's wilink wireless device
wl12xx: use frequency instead of enumerations for pdata clocks
wlcore: set irq_trigger in board files instead of hiding behind a quirk
+ Linux 4.0-rc4
Signed-off-by: Olof Johansson <olof@lixom.net>
Diffstat (limited to 'drivers/input/mouse/focaltech.c')
| -rw-r--r-- | drivers/input/mouse/focaltech.c | 50 |
1 files changed, 35 insertions, 15 deletions
diff --git a/drivers/input/mouse/focaltech.c b/drivers/input/mouse/focaltech.c index 757f78a94aec..23d259416f2f 100644 --- a/drivers/input/mouse/focaltech.c +++ b/drivers/input/mouse/focaltech.c | |||
| @@ -67,9 +67,6 @@ static void focaltech_reset(struct psmouse *psmouse) | |||
| 67 | 67 | ||
| 68 | #define FOC_MAX_FINGERS 5 | 68 | #define FOC_MAX_FINGERS 5 |
| 69 | 69 | ||
| 70 | #define FOC_MAX_X 2431 | ||
| 71 | #define FOC_MAX_Y 1663 | ||
| 72 | |||
| 73 | /* | 70 | /* |
| 74 | * Current state of a single finger on the touchpad. | 71 | * Current state of a single finger on the touchpad. |
| 75 | */ | 72 | */ |
| @@ -129,9 +126,17 @@ static void focaltech_report_state(struct psmouse *psmouse) | |||
| 129 | input_mt_slot(dev, i); | 126 | input_mt_slot(dev, i); |
| 130 | input_mt_report_slot_state(dev, MT_TOOL_FINGER, active); | 127 | input_mt_report_slot_state(dev, MT_TOOL_FINGER, active); |
| 131 | if (active) { | 128 | if (active) { |
| 132 | input_report_abs(dev, ABS_MT_POSITION_X, finger->x); | 129 | unsigned int clamped_x, clamped_y; |
| 130 | /* | ||
| 131 | * The touchpad might report invalid data, so we clamp | ||
| 132 | * the resulting values so that we do not confuse | ||
| 133 | * userspace. | ||
| 134 | */ | ||
| 135 | clamped_x = clamp(finger->x, 0U, priv->x_max); | ||
| 136 | clamped_y = clamp(finger->y, 0U, priv->y_max); | ||
| 137 | input_report_abs(dev, ABS_MT_POSITION_X, clamped_x); | ||
| 133 | input_report_abs(dev, ABS_MT_POSITION_Y, | 138 | input_report_abs(dev, ABS_MT_POSITION_Y, |
| 134 | FOC_MAX_Y - finger->y); | 139 | priv->y_max - clamped_y); |
| 135 | } | 140 | } |
| 136 | } | 141 | } |
| 137 | input_mt_report_pointer_emulation(dev, true); | 142 | input_mt_report_pointer_emulation(dev, true); |
| @@ -180,16 +185,6 @@ static void focaltech_process_abs_packet(struct psmouse *psmouse, | |||
| 180 | 185 | ||
| 181 | state->pressed = (packet[0] >> 4) & 1; | 186 | state->pressed = (packet[0] >> 4) & 1; |
| 182 | 187 | ||
| 183 | /* | ||
| 184 | * packet[5] contains some kind of tool size in the most | ||
| 185 | * significant nibble. 0xff is a special value (latching) that | ||
| 186 | * signals a large contact area. | ||
| 187 | */ | ||
| 188 | if (packet[5] == 0xff) { | ||
| 189 | state->fingers[finger].valid = false; | ||
| 190 | return; | ||
| 191 | } | ||
| 192 | |||
| 193 | state->fingers[finger].x = ((packet[1] & 0xf) << 8) | packet[2]; | 188 | state->fingers[finger].x = ((packet[1] & 0xf) << 8) | packet[2]; |
| 194 | state->fingers[finger].y = (packet[3] << 8) | packet[4]; | 189 | state->fingers[finger].y = (packet[3] << 8) | packet[4]; |
| 195 | state->fingers[finger].valid = true; | 190 | state->fingers[finger].valid = true; |
| @@ -381,6 +376,23 @@ static int focaltech_read_size(struct psmouse *psmouse) | |||
| 381 | 376 | ||
| 382 | return 0; | 377 | return 0; |
| 383 | } | 378 | } |
| 379 | |||
| 380 | void focaltech_set_resolution(struct psmouse *psmouse, unsigned int resolution) | ||
| 381 | { | ||
| 382 | /* not supported yet */ | ||
| 383 | } | ||
| 384 | |||
| 385 | static void focaltech_set_rate(struct psmouse *psmouse, unsigned int rate) | ||
| 386 | { | ||
| 387 | /* not supported yet */ | ||
| 388 | } | ||
| 389 | |||
| 390 | static void focaltech_set_scale(struct psmouse *psmouse, | ||
| 391 | enum psmouse_scale scale) | ||
| 392 | { | ||
| 393 | /* not supported yet */ | ||
| 394 | } | ||
| 395 | |||
| 384 | int focaltech_init(struct psmouse *psmouse) | 396 | int focaltech_init(struct psmouse *psmouse) |
| 385 | { | 397 | { |
| 386 | struct focaltech_data *priv; | 398 | struct focaltech_data *priv; |
| @@ -415,6 +427,14 @@ int focaltech_init(struct psmouse *psmouse) | |||
| 415 | psmouse->cleanup = focaltech_reset; | 427 | psmouse->cleanup = focaltech_reset; |
| 416 | /* resync is not supported yet */ | 428 | /* resync is not supported yet */ |
| 417 | psmouse->resync_time = 0; | 429 | psmouse->resync_time = 0; |
| 430 | /* | ||
| 431 | * rate/resolution/scale changes are not supported yet, and | ||
| 432 | * the generic implementations of these functions seem to | ||
| 433 | * confuse some touchpads | ||
| 434 | */ | ||
| 435 | psmouse->set_resolution = focaltech_set_resolution; | ||
| 436 | psmouse->set_rate = focaltech_set_rate; | ||
| 437 | psmouse->set_scale = focaltech_set_scale; | ||
| 418 | 438 | ||
| 419 | return 0; | 439 | return 0; |
| 420 | 440 | ||
