Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/dtor/input
authorLinus Torvalds <torvalds@linux-foundation.org>
Mon, 11 Mar 2013 14:49:37 +0000 (07:49 -0700)
committerLinus Torvalds <torvalds@linux-foundation.org>
Mon, 11 Mar 2013 14:49:37 +0000 (07:49 -0700)
Pull input updates from Dmitry Torokhov:
 "Except for the largish change to the ALPS driver adding "Dolphin V1"
  support and Wacom getting a new signature of yet another device, the
  rest are straightforward driver fixes."

* 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/dtor/input:
  Input: mms114 - Fix regulator enable and disable paths
  Input: ads7864 - check return value of regulator enable
  Input: tc3589x-keypad - fix keymap size
  Input: wacom - add support for 0x10d
  Input: ALPS - update documentation for recent touchpad driver mods
  Input: ALPS - add "Dolphin V1" touchpad support
  Input: ALPS - remove unused argument to alps_enter_command_mode()
  Input: cypress_ps2 - fix trackpadi found in Dell XPS12

1  2 
Documentation/input/alps.txt

@@@ -3,10 -3,26 +3,26 @@@ ALPS Touchpad Protoco
  
  Introduction
  ------------
- Currently the ALPS touchpad driver supports four protocol versions in use by
- ALPS touchpads, called versions 1, 2, 3, and 4. Information about the various
- protocol versions is contained in the following sections.
+ Currently the ALPS touchpad driver supports five protocol versions in use by
+ ALPS touchpads, called versions 1, 2, 3, 4 and 5.
+ Since roughly mid-2010 several new ALPS touchpads have been released and
+ integrated into a variety of laptops and netbooks.  These new touchpads
+ have enough behavior differences that the alps_model_data definition
+ table, describing the properties of the different versions, is no longer
+ adequate.  The design choices were to re-define the alps_model_data
+ table, with the risk of regression testing existing devices, or isolate
+ the new devices outside of the alps_model_data table.  The latter design
+ choice was made.  The new touchpad signatures are named: "Rushmore",
+ "Pinnacle", and "Dolphin", which you will see in the alps.c code.
+ For the purposes of this document, this group of ALPS touchpads will
+ generically be called "new ALPS touchpads".
+ We experimented with probing the ACPI interface _HID (Hardware ID)/_CID
+ (Compatibility ID) definition as a way to uniquely identify the
+ different ALPS variants but there did not appear to be a 1:1 mapping.
+ In fact, it appeared to be an m:n mapping between the _HID and actual
+ hardware type.
  
  Detection
  ---------
@@@ -20,9 -36,13 +36,13 @@@ If the E6 report is successful, the tou
  report" sequence: E8-E7-E7-E7-E9. The response is the model signature and is
  matched against known models in the alps_model_data_array.
  
- With protocol versions 3 and 4, the E7 report model signature is always
- 73-02-64. To differentiate between these versions, the response from the
- "Enter Command Mode" sequence must be inspected as described below.
+ For older touchpads supporting protocol versions 3 and 4, the E7 report
+ model signature is always 73-02-64. To differentiate between these
+ versions, the response from the "Enter Command Mode" sequence must be
+ inspected as described below.
+ The new ALPS touchpads have an E7 signature of 73-03-50 or 73-03-0A but
+ seem to be better differentiated by the EC Command Mode response.
  
  Command Mode
  ------------
@@@ -47,6 -67,14 +67,14 @@@ address of the register being read, an
  register. Registers are written by writing the value one nibble at a time
  using the same encoding used for addresses.
  
+ For the new ALPS touchpads, the EC command is used to enter command
+ mode. The response in the new ALPS touchpads is significantly different,
+ and more important in determining the behavior.  This code has been
+ separated from the original alps_model_data table and put in the
+ alps_identify function.  For example, there seem to be two hardware init
+ sequences for the "Dolphin" touchpads as determined by the second byte
+ of the EC response.
  Packet Format
  -------------
  
@@@ -133,7 -161,7 +161,7 @@@ number of contacts (f1 and f0 in the ta
  
  This packet only appears after a position packet with the mt bit set, and
  usually only appears when there are two or more contacts (although
 -occassionally it's seen with only a single contact).
 +occasionally it's seen with only a single contact).
  
  The final v3 packet type is the trackstick packet.
  
@@@ -187,3 -215,28 +215,28 @@@ There are several things worth noting h
      well.
  
  So far no v4 devices with tracksticks have been encountered.
+ ALPS Absolute Mode - Protocol Version 5
+ ---------------------------------------
+ This is basically Protocol Version 3 but with different logic for packet
+ decode.  It uses the same alps_process_touchpad_packet_v3 call with a
+ specialized decode_fields function pointer to correctly interpret the
+ packets.  This appears to only be used by the Dolphin devices.
+ For single-touch, the 6-byte packet format is:
+  byte 0:    1    1    0    0    1    0    0    0
+  byte 1:    0   x6   x5   x4   x3   x2   x1   x0
+  byte 2:    0   y6   y5   y4   y3   y2   y1   y0
+  byte 3:    0    M    R    L    1    m    r    l
+  byte 4:   y10  y9   y8   y7  x10   x9   x8   x7
+  byte 5:    0   z6   z5   z4   z3   z2   z1   z0
+ For mt, the format is:
+  byte 0:    1    1    1    n3   1   n2   n1   x24
+  byte 1:    1   y7   y6    y5  y4   y3   y2    y1
+  byte 2:    ?   x2   x1   y12 y11  y10   y9    y8
+  byte 3:    0  x23  x22   x21 x20  x19  x18   x17
+  byte 4:    0   x9   x8    x7  x6   x5   x4    x3
+  byte 5:    0  x16  x15   x14 x13  x12  x11   x10