13 Jul, 2013
1 commit
-
Bring in second round of updates for 3.11.
07 Jul, 2013
1 commit
-
* Fix version recognition in elantech_set_properties
The new hardware reports itself as v7 but the packets'
structure is unaltered.* Fix packet type recognition in elantech_packet_check_v4
The bitmask used for v6 is too wide, only the last three bits of
the third byte in a packet (packet[3] & 0x03) are actually used to
distinguish between packet types.
Starting from v7, additional information (to be interpreted) is
stored in the remaining bits (packets[3] & 0x1c).
In addition, the value stored in (packet[0] & 0x0c) is no longer
a constant but contains additional information yet to be deciphered.
This change should be backwards compatible with v6 hardware.Additional-author: Giovanni Frigione
Signed-off-by: Matteo Delfino
Signed-off-by: Dmitry Torokhov
03 Jul, 2013
1 commit
-
The June 2013 Macbook Air (13'') has a new trackpad protocol; four new
values are inserted in the header, and the mode switch is no longer
needed. This patch adds support for the new devices.Cc: stable@vger.kernel.org
Reported-and-tested-by: Brad Ford
Signed-off-by: Henrik Rydberg
Signed-off-by: Dmitry Torokhov
28 Jun, 2013
1 commit
-
Pull in changes from Henrik: "a trivial MT documentation fix".
05 Jun, 2013
2 commits
-
Pull input fixes from Dmitry Torokhov:
"Just a 2 small driver fixups here"* 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/dtor/input:
Input: wacom - fix a typo for Cintiq 22HDT
Input: synaptics - fix sync lost after resume on some laptops -
In summary, the symptom is intermittent key events lost after resume
on some machines with synaptics touchpad (seems this is synaptics _only_),
and key events loss is due to serio port reconnect after psmouse sync lost.
Removing psmouse and inserting it back during the suspend/resume process
is able to work around the issue, so the difference between psmouse_connect()
and psmouse_reconnect() is the key to the root cause of this problem.After comparing the two different paths, synaptics driver has its own
implementation of synaptics_reconnect(), and the missing psmouse_probe()
seems significant, the patch below added psmouse_probe() to the reconnect
process, and has been verified many times that the issue could not be reliably
reproduced.There are two PS/2 commands in psmouse_probe():
1. PSMOUSE_CMD_GETID
2. PSMOUSE_CMD_RESET_DISOnly the PSMOUSE_CMD_GETID seems to be significant. The
PSMOUSE_CMD_RESET_DIS is irrelevant to this issue after trying
several times. So we have only implemented this patch to issue
the PSMOUSE_CMD_GETID so far.Tested-by: Daniel Manrique
Signed-off-by: James M Leddy
Signed-off-by: Dmitry Torokhov
24 May, 2013
1 commit
-
free_irq() expects the same pointer that was passed to request_irq(),
otherwise the IRQ is not freed.The issue was found using the following coccinelle script:
@r1@
type T;
T devid;
@@
request_irq(..., devid)@r2@
type r1.T;
T devid;
position p;
@@
free_irq@p(..., devid)@@
position p != r2.p;
@@
*free_irq@p(...)Signed-off-by: Lars-Peter Clausen
Signed-off-by: Dmitry Torokhov
10 May, 2013
1 commit
-
Pull removal of GENERIC_GPIO from Grant Likely:
"GENERIC_GPIO now synonymous with GPIOLIB. There are no longer any
valid cases for enableing GENERIC_GPIO without GPIOLIB, even though it
is possible to do so which has been causing confusion and breakage.
This branch does the work to completely eliminate GENERIC_GPIO."* tag 'gpio-for-linus' of git://git.secretlab.ca/git/linux:
gpio: update gpio Chinese documentation
Remove GENERIC_GPIO config option
Convert selectors of GENERIC_GPIO to GPIOLIB
blackfin: force use of gpiolib
m68k: coldfire: use gpiolib
mips: pnx833x: remove requirement for GENERIC_GPIO
openrisc: default GENERIC_GPIO to false
avr32: default GENERIC_GPIO to false
xtensa: remove explicit selection of GENERIC_GPIO
sh: replace CONFIG_GENERIC_GPIO by CONFIG_GPIOLIB
powerpc: remove redundant GENERIC_GPIO selection
unicore32: default GENERIC_GPIO to false
unicore32: remove unneeded select GENERIC_GPIO
arm: plat-orion: use GPIO driver on CONFIG_GPIOLIB
arm: remove redundant GENERIC_GPIO selection
mips: alchemy: require gpiolib
mips: txx9: change GENERIC_GPIO to GPIOLIB
mips: loongson: use GPIO driver on CONFIG_GPIOLIB
mips: remove redundant GENERIC_GPIO select
06 May, 2013
2 commits
-
Commit 0998d06310 (device-core: Ensure drvdata = NULL when no
driver is bound) removes the need to set driver data field to
NULL.Signed-off-by: Sachin Kamat
Acked-by: Hans-Christian Egtvedt
Signed-off-by: Dmitry Torokhov -
Commit 0998d06310 (device-core: Ensure drvdata = NULL when no
driver is bound) removes the need to set driver data field to
NULL.Signed-off-by: Sachin Kamat
Signed-off-by: Dmitry Torokhov
20 Apr, 2013
1 commit
-
The trackpoint driver sets various parameter default values, all of
which happen to be power-on defaults (Source: IBM TrackPoint Engineering
Specification, Version 4.0. Also confirmed by empirical data).By sending the power-on reset command to reset all parameters to
power-on state, we can skip the lengthy process of programming all
parameters. In testing, ~2.5 secs of time writing parameters was reduced
to .35 seconds waiting for power-on reset to complete.Signed-off-by: Shawn Nematbakhsh
Signed-off-by: Dmitry Torokhov
16 Apr, 2013
2 commits
-
GENERIC_GPIO is now equivalent to GPIOLIB and features that depended on
GENERIC_GPIO can now depend on GPIOLIB to allow removal of this option.Signed-off-by: Alexandre Courbot
Acked-by: Linus Walleij
Acked-by: Grant Likely -
This form is more concise.
Signed-off-by: Dmitry Torokhov
18 Mar, 2013
1 commit
-
module_platform_driver_probe() eliminates the boilerplate and simplifies
the code.Signed-off-by: Sachin Kamat
Signed-off-by: Dmitry Torokhov
22 Feb, 2013
3 commits
-
These touchpads use a different protocol; they have been seen on Dell
N5110, Dell 17R SE, and others.The official ALPS driver identifies them by looking for an exact match
on the E7 report: 73 03 50. Dolphin V1 returns an EC report of
73 01 xx (02 and 0d have been seen); Dolphin V2 returns an EC report of
73 02 xx (02 has been seen).Dolphin V2 probably needs a different initialization sequence and/or
report parser, so it is left for a future commit.Signed-off-by: Dave Turvene
Signed-off-by: Kevin Cernekee
Signed-off-by: Dmitry Torokhov -
Now that alps_identify() explicitly issues an EC report using
alps_rpt_cmd(), we no longer need to look at the magic numbers returned
by alps_enter_command_mode().Signed-off-by: Kevin Cernekee
Signed-off-by: Dmitry Torokhov -
Avoid firmware glitch in Cypress PS/2 Trackpad firmware version 11
(as observed in Dell XPS12) which prevents driver from recognizing
the trackpad.BugLink: http://launchpad.net/bugs/1103594
Signed-off-by: Kamal Mostafa
Cc: Dudley Du
Signed-off-by: Dmitry Torokhov
20 Feb, 2013
1 commit
-
Prepare first set of updates for 3.9 merge window.
16 Feb, 2013
1 commit
-
To properly setup event parameters for emulated events, pass
the appropriate flag to the slot initialization function. Also,
all MT-related events should be setup before initialization.Incidentally, this solves the issue of doubly filtered pointer
events.Reported-by: Daniel Kurtz
Signed-off-by: Henrik Rydberg
Signed-off-by: Dmitry Torokhov
15 Feb, 2013
13 commits
-
Separate out the common trackstick probe/setup sequences, then call them
from each of the v3 init functions.Credits: Emmanual Thome furnished the information on the trackstick init
and how it affected the report format.Signed-off-by: Kevin Cernekee
Tested-by: Dave Turvene
Signed-off-by: Dmitry Torokhov -
Rushmore touchpads are found on Dell E6230/E6430/E6530. They use the V3
protocol with slightly tweaked init sequences and report formats.The E7 report is 73 03 0a, and the EC report is 88 08 1d
Credits: Emmanuel Thome reported the MT bitmap changes.
Signed-off-by: Kevin Cernekee
Tested-by: Dave Turvene
Signed-off-by: Dmitry Torokhov -
A number of different ALPS touchpad protocols can reuse
alps_process_touchpad_packet_v3() with small tweaks to the bitfield
decoding. Create a new priv->decode_fields() callback that handles the
per-model differences.Signed-off-by: Kevin Cernekee
Tested-by: Dave Turvene
Signed-off-by: Dmitry Torokhov -
Newer touchpads use different constants, so make them runtime-
configurable.Signed-off-by: Kevin Cernekee
Tested-by: Dave Turvene
Signed-off-by: Dmitry Torokhov -
Pinnacle class devices should return "88 07 xx" or "88 08 xx" when
entering command mode. If either the first byte or the second byte is
invalid, return an error.Signed-off-by: Kevin Cernekee
Tested-by: Dave Turvene
Signed-off-by: Dmitry Torokhov -
The official ALPS driver uses the EC report, not the E7 report, to detect
these devices. Also, they check for a range of values; the original
table-based code only checked for two specific ones.Signed-off-by: Kevin Cernekee
Tested-by: Dave Turvene
Signed-off-by: Dmitry Torokhov -
This allows alps_identify() to override these settings based on the
device characteristics, if it is ever necessary.Signed-off-by: Kevin Cernekee
Tested-by: Dave Turvene
Signed-off-by: Dmitry Torokhov -
In anticipation of adding more ALPS protocols and more per-device quirks,
use function pointers instead of switch statements to call functions that
differ from one device to the next.Signed-off-by: Kevin Cernekee
Tested-by: Dave Turvene
Signed-off-by: Dmitry Torokhov -
If the E6 report test passes, get the E7 and EC reports right away and
then try to match an entry in the table.Pass in the alps_data struct, so that the detection code will be able to
set operating parameters based on information found during detection.Change the version (psmouse->model) to report the protocol version only,
in preparation for supporting models that do not show up in the ID table.Signed-off-by: Kevin Cernekee
Tested-by: Dave Turvene
Signed-off-by: Dmitry Torokhov -
Several ALPS driver init sequences repeat a command three times, then
issue PSMOUSE_CMD_GETINFO to read the result. Move this into a helper
function to simplify the code.Signed-off-by: Kevin Cernekee
Tested-by: Dave Turvene
Signed-off-by: Dmitry Torokhov -
This will minimize the number of forward declarations needed when
alps_get_model() starts assigning function pointers.Signed-off-by: Kevin Cernekee
Tested-by: Dave Turvene
Signed-off-by: Dmitry Torokhov -
Not every type of ALPS touchpad is well-suited to table-based detection.
Start moving the various alps_model_data attributes into the alps_data
struct so that we don't need a unique table entry for every possible
permutation of protocol version, flags, byte0/mask0, etc.Signed-off-by: Kevin Cernekee
Tested-by: Dave Turvene
Signed-off-by: Dmitry Torokhov -
Add kernel-doc markup.
Signed-off-by: Kevin Cernekee
Tested-by: Dave Turvene
Signed-off-by: Dmitry Torokhov
14 Feb, 2013
2 commits
-
This patch adds support for the Cypress APA Smbus Trackpad type,
which uses a modified register map that fits within the
limitations of the smbus protocol.Devices that use this protocol include:
CYTRA-116001-00 - Samsung Series 5 550 Chromebook trackpad
CYTRA-103002-00 - Acer C7 Chromebook trackpad
CYTRA-101003-00 - HP Pavilion 14 Chromebook trackpadSigned-off-by: Dudley Du
Signed-off-by: Benson Leung
Reviewed-by: Daniel Kurtz
Reviewed-by: Henrik Rydberg
Signed-off-by: Dmitry Torokhov -
Investigating the following gesture highlighted two slight implementation
errors with choosing which slots to report in which slot when multiple
contacts are present:Action SGM AGM (MTB slot:Contact)
1. Touch contact 0 (0:0)
2. Touch contact 1 (0:0, 1:1)
3. Lift contact 0 (1:1)
4. Touch contacts 2,3 (0:2, 1:3)In step 4, slot 1 was not being cleared first, which means the same
tracking ID was being used for reporting both the old contact 1 and the
new contact 3. This could result in "drumroll", where the old contact 1
would appear to suddenly jump to new finger 3 position.Similarly, if contacts 2 & 3 are not detected at the same sample, step 4
is split into two:Action SGM AGM (MTB slot:contact)
1. Touch contact 0 (0:0)
2. Touch contact 1 (0:0, 1:1)
3. Lift contact 0 (1:1)
4. Touch contact 2 (0:2, 1:1)
5. Touch contact 3 (0:2, 1:3)In this case, there was also a bug. In step 4, when contact 1 moves from
SGM to AGM and contact 2 is first reported in SGM, slot 0 was actually
empty. So slot 0 can be used to report the new SGM (contact 0),
immediately. Since it was empty, contact 2 in slot 0 will get a new
tracking ID.Signed-off-by: Daniel Kurtz
Signed-off-by: Dmitry Torokhov
17 Jan, 2013
2 commits
-
This patch introduces a driver for Cypress All Points Addressable
I2C Trackpad, including the ones in 2012 Samsung Chromebooks.This device is compatible with MT protocol type B, providing identifiable
contacts.Signed-off-by: Dudley Du
Signed-off-by: Daniel Kurtz
Signed-off-by: Benson Leung
Reviewed-by: Henrik Rydberg
Signed-off-by: Dmitry Torokhov -
This driver, submitted on behalf of Cypress Semiconductor Corporation and
additional contributors, provides support for the Cypress PS/2 Trackpad.Original code contributed by Dudley Du (Cypress Semiconductor Corporation),
modified by Kamal Mostafa and Kyle Fazzari.BugLink: http://launchpad.net/bugs/978807
Signed-off-by: Dudley Du
Signed-off-by: Kamal Mostafa
Signed-off-by: Kyle Fazzari
Signed-off-by: Mario Limonciello
Signed-off-by: Tim Gardner
Acked-by: Herton Krzesinski
Reviewed-by: Henrik Rydberg
Reviewed-by: Dudley Du
Signed-off-by: Dmitry Torokhov
25 Dec, 2012
1 commit
-
Report only the position of the first finger as absolute non-MT coordinates,
instead of reporting both fingers alternatively. Actual MT events are
unaffected.This fixes horizontal and improves vertical scrolling with the touchpad.
Cc: stable@vger.kernel.org
Signed-off-by: Christophe TORDEUX
Signed-off-by: Dmitry Torokhov
24 Nov, 2012
3 commits
-
CONFIG_HOTPLUG is going away as an option so __devexit is no
longer needed.Signed-off-by: Bill Pemberton
Acked-by: Mark Brown
Signed-off-by: Dmitry Torokhov -
CONFIG_HOTPLUG is going away as an option so __devinit is no longer
needed.Signed-off-by: Bill Pemberton
Acked-by: Mark Brown
Acked-by: Javier Martinez Canillas
Signed-off-by: Dmitry Torokhov -
CONFIG_HOTPLUG is going away as an option so __devexit_p is no longer
needed.Signed-off-by: Bill Pemberton
Acked-by: Russell King
Signed-off-by: Dmitry Torokhov