[kernel] r18569 - in dists/trunk/linux-2.6/debian/patches: features/all series

Ben Hutchings benh at alioth.debian.org
Wed Jan 18 16:14:05 UTC 2012


Author: benh
Date: Wed Jan 18 16:14:04 2012
New Revision: 18569

Log:
Add missing pieces of the ALPS v3/v4 patches

Added:
   dists/trunk/linux-2.6/debian/patches/features/all/Input-ALPS-add-semi-MT-support-for-v3-protocol.patch
Modified:
   dists/trunk/linux-2.6/debian/patches/features/all/Input-ALPS-add-protocol-version-field-in-alps_model_.patch
   dists/trunk/linux-2.6/debian/patches/features/all/Input-ALPS-add-support-for-protocol-versions-3-and-4.patch
   dists/trunk/linux-2.6/debian/patches/features/all/Input-ALPS-move-protocol-information-to-Documentatio.patch
   dists/trunk/linux-2.6/debian/patches/features/all/Input-ALPS-remove-assumptions-about-packet-size.patch
   dists/trunk/linux-2.6/debian/patches/series/base

Modified: dists/trunk/linux-2.6/debian/patches/features/all/Input-ALPS-add-protocol-version-field-in-alps_model_.patch
==============================================================================
--- dists/trunk/linux-2.6/debian/patches/features/all/Input-ALPS-add-protocol-version-field-in-alps_model_.patch	Wed Jan 18 15:48:04 2012	(r18568)
+++ dists/trunk/linux-2.6/debian/patches/features/all/Input-ALPS-add-protocol-version-field-in-alps_model_.patch	Wed Jan 18 16:14:04 2012	(r18569)
@@ -1,6 +1,6 @@
 From: Seth Forshee <seth.forshee at canonical.com>
 Date: Mon, 7 Nov 2011 19:53:24 -0800
-Subject: [PATCH 2/4] Input: ALPS - add protocol version field in
+Subject: [PATCH 2/5] Input: ALPS - add protocol version field in
  alps_model_info
 
 commit fa629ef5222193214da9a2b3c94369f79353bec9 upstream.
@@ -13,9 +13,6 @@
 Signed-off-by: Seth Forshee <seth.forshee at canonical.com>
 Acked-by: Chase Douglas <chase.douglas at canonical.com>
 Signed-off-by: Dmitry Torokhov <dtor at mail.ru>
----
- drivers/input/mouse/alps.c |   47 +++++++++++++++++++++----------------------
- 1 files changed, 23 insertions(+), 24 deletions(-)
 
 diff --git a/drivers/input/mouse/alps.c b/drivers/input/mouse/alps.c
 index 19d0943..77b776d 100644
@@ -91,6 +88,23 @@
  		left = packet[2] & 0x10;
  		right = packet[2] & 0x08;
  		middle = 0;
+diff --git a/drivers/input/mouse/alps.h b/drivers/input/mouse/alps.h
+index 904ed8b..4ce9bba 100644
+--- a/drivers/input/mouse/alps.h
++++ b/drivers/input/mouse/alps.h
+@@ -12,8 +12,12 @@
+ #ifndef _ALPS_H
+ #define _ALPS_H
+ 
++#define ALPS_PROTO_V1	0
++#define ALPS_PROTO_V2	1
++
+ struct alps_model_info {
+         unsigned char signature[3];
++	unsigned char proto_version;
+         unsigned char byte0, mask0;
+         unsigned char flags;
+ };
 -- 
 1.7.8.2
 

Added: dists/trunk/linux-2.6/debian/patches/features/all/Input-ALPS-add-semi-MT-support-for-v3-protocol.patch
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ dists/trunk/linux-2.6/debian/patches/features/all/Input-ALPS-add-semi-MT-support-for-v3-protocol.patch	Wed Jan 18 16:14:04 2012	(r18569)
@@ -0,0 +1,333 @@
+From: Seth Forshee <seth.forshee at canonical.com>
+Date: Mon, 7 Nov 2011 19:54:13 -0800
+Subject: [PATCH 5/5] Input: ALPS - add semi-MT support for v3 protocol
+
+commit 01ce661fc83005947dc958a5739c153843af8a73 upstream.
+
+Signed-off-by: Seth Forshee <seth.forshee at canonical.com>
+Acked-by: Chase Douglas <chase.douglas at canonical.com>
+Signed-off-by: Dmitry Torokhov <dtor at mail.ru>
+
+diff --git a/drivers/input/mouse/alps.c b/drivers/input/mouse/alps.c
+index a0248fd..bd87380 100644
+--- a/drivers/input/mouse/alps.c
++++ b/drivers/input/mouse/alps.c
+@@ -17,6 +17,7 @@
+ 
+ #include <linux/slab.h>
+ #include <linux/input.h>
++#include <linux/input/mt.h>
+ #include <linux/serio.h>
+ #include <linux/libps2.h>
+ 
+@@ -26,6 +27,12 @@
+ /*
+  * Definitions for ALPS version 3 and 4 command mode protocol
+  */
++#define ALPS_V3_X_MAX	2000
++#define ALPS_V3_Y_MAX	1400
++
++#define ALPS_BITMAP_X_BITS	15
++#define ALPS_BITMAP_Y_BITS	11
++
+ #define ALPS_CMD_NIBBLE_10	0x01f2
+ 
+ static const struct alps_nibble_commands alps_v3_nibble_commands[] = {
+@@ -250,6 +257,137 @@ static void alps_process_packet_v1_v2(struct psmouse *psmouse)
+ 	input_sync(dev);
+ }
+ 
++/*
++ * Process bitmap data from v3 and v4 protocols. Returns the number of
++ * fingers detected. A return value of 0 means at least one of the
++ * bitmaps was empty.
++ *
++ * The bitmaps don't have enough data to track fingers, so this function
++ * only generates points representing a bounding box of all contacts.
++ * These points are returned in x1, y1, x2, and y2 when the return value
++ * is greater than 0.
++ */
++static int alps_process_bitmap(unsigned int x_map, unsigned int y_map,
++			       int *x1, int *y1, int *x2, int *y2)
++{
++	struct alps_bitmap_point {
++		int start_bit;
++		int num_bits;
++	};
++
++	int fingers_x = 0, fingers_y = 0, fingers;
++	int i, bit, prev_bit;
++	struct alps_bitmap_point x_low = {0,}, x_high = {0,};
++	struct alps_bitmap_point y_low = {0,}, y_high = {0,};
++	struct alps_bitmap_point *point;
++
++	if (!x_map || !y_map)
++		return 0;
++
++	*x1 = *y1 = *x2 = *y2 = 0;
++
++	prev_bit = 0;
++	point = &x_low;
++	for (i = 0; x_map != 0; i++, x_map >>= 1) {
++		bit = x_map & 1;
++		if (bit) {
++			if (!prev_bit) {
++				point->start_bit = i;
++				fingers_x++;
++			}
++			point->num_bits++;
++		} else {
++			if (prev_bit)
++				point = &x_high;
++			else
++				point->num_bits = 0;
++		}
++		prev_bit = bit;
++	}
++
++	/*
++	 * y bitmap is reversed for what we need (lower positions are in
++	 * higher bits), so we process from the top end.
++	 */
++	y_map = y_map << (sizeof(y_map) * BITS_PER_BYTE - ALPS_BITMAP_Y_BITS);
++	prev_bit = 0;
++	point = &y_low;
++	for (i = 0; y_map != 0; i++, y_map <<= 1) {
++		bit = y_map & (1 << (sizeof(y_map) * BITS_PER_BYTE - 1));
++		if (bit) {
++			if (!prev_bit) {
++				point->start_bit = i;
++				fingers_y++;
++			}
++			point->num_bits++;
++		} else {
++			if (prev_bit)
++				point = &y_high;
++			else
++				point->num_bits = 0;
++		}
++		prev_bit = bit;
++	}
++
++	/*
++	 * Fingers can overlap, so we use the maximum count of fingers
++	 * on either axis as the finger count.
++	 */
++	fingers = max(fingers_x, fingers_y);
++
++	/*
++	 * If total fingers is > 1 but either axis reports only a single
++	 * contact, we have overlapping or adjacent fingers. For the
++	 * purposes of creating a bounding box, divide the single contact
++	 * (roughly) equally between the two points.
++	 */
++	if (fingers > 1) {
++		if (fingers_x == 1) {
++			i = x_low.num_bits / 2;
++			x_low.num_bits = x_low.num_bits - i;
++			x_high.start_bit = x_low.start_bit + i;
++			x_high.num_bits = max(i, 1);
++		} else if (fingers_y == 1) {
++			i = y_low.num_bits / 2;
++			y_low.num_bits = y_low.num_bits - i;
++			y_high.start_bit = y_low.start_bit + i;
++			y_high.num_bits = max(i, 1);
++		}
++	}
++
++	*x1 = (ALPS_V3_X_MAX * (2 * x_low.start_bit + x_low.num_bits - 1)) /
++	      (2 * (ALPS_BITMAP_X_BITS - 1));
++	*y1 = (ALPS_V3_Y_MAX * (2 * y_low.start_bit + y_low.num_bits - 1)) /
++	      (2 * (ALPS_BITMAP_Y_BITS - 1));
++
++	if (fingers > 1) {
++		*x2 = (ALPS_V3_X_MAX * (2 * x_high.start_bit + x_high.num_bits - 1)) /
++		      (2 * (ALPS_BITMAP_X_BITS - 1));
++		*y2 = (ALPS_V3_Y_MAX * (2 * y_high.start_bit + y_high.num_bits - 1)) /
++		      (2 * (ALPS_BITMAP_Y_BITS - 1));
++	}
++
++	return fingers;
++}
++
++static void alps_set_slot(struct input_dev *dev, int slot, bool active,
++			  int x, int y)
++{
++	input_mt_slot(dev, slot);
++	input_mt_report_slot_state(dev, MT_TOOL_FINGER, active);
++	if (active) {
++		input_report_abs(dev, ABS_MT_POSITION_X, x);
++		input_report_abs(dev, ABS_MT_POSITION_Y, y);
++	}
++}
++
++static void alps_report_semi_mt_data(struct input_dev *dev, int num_fingers,
++				     int x1, int y1, int x2, int y2)
++{
++	alps_set_slot(dev, 0, num_fingers != 0, x1, y1);
++	alps_set_slot(dev, 1, num_fingers == 2, x2, y2);
++}
++
+ static void alps_process_trackstick_packet_v3(struct psmouse *psmouse)
+ {
+ 	struct alps_data *priv = psmouse->private;
+@@ -318,16 +456,17 @@ static void alps_process_touchpad_packet_v3(struct psmouse *psmouse)
+ 	struct input_dev *dev2 = priv->dev2;
+ 	int x, y, z;
+ 	int left, right, middle;
++	int x1 = 0, y1 = 0, x2 = 0, y2 = 0;
++	int fingers = 0, bmap_fingers;
++	unsigned int x_bitmap, y_bitmap;
+ 
+ 	/*
+-	 * There's no single feature of touchpad position and bitmap
+-	 * packets that can be used to distinguish between them. We
+-	 * rely on the fact that a bitmap packet should always follow
+-	 * a position packet with bit 6 of packet[4] set.
++	 * There's no single feature of touchpad position and bitmap packets
++	 * that can be used to distinguish between them. We rely on the fact
++	 * that a bitmap packet should always follow a position packet with
++	 * bit 6 of packet[4] set.
+ 	 */
+ 	if (priv->multi_packet) {
+-		priv->multi_packet = 0;
+-
+ 		/*
+ 		 * Sometimes a position packet will indicate a multi-packet
+ 		 * sequence, but then what follows is another position
+@@ -335,18 +474,49 @@ static void alps_process_touchpad_packet_v3(struct psmouse *psmouse)
+ 		 * position packet as usual.
+ 		 */
+ 		if (packet[0] & 0x40) {
++			fingers = (packet[5] & 0x3) + 1;
++			x_bitmap = ((packet[4] & 0x7e) << 8) |
++				   ((packet[1] & 0x7f) << 2) |
++				   ((packet[0] & 0x30) >> 4);
++			y_bitmap = ((packet[3] & 0x70) << 4) |
++				   ((packet[2] & 0x7f) << 1) |
++				   (packet[4] & 0x01);
++
++			bmap_fingers = alps_process_bitmap(x_bitmap, y_bitmap,
++							   &x1, &y1, &x2, &y2);
++
+ 			/*
+-			 * Bitmap packets are not yet supported, so for now
+-			 * just ignore them.
++			 * We shouldn't report more than one finger if
++			 * we don't have two coordinates.
+ 			 */
+-			return;
++			if (fingers > 1 && bmap_fingers < 2)
++				fingers = bmap_fingers;
++
++			/* Now process position packet */
++			packet = priv->multi_data;
++		} else {
++			priv->multi_packet = 0;
+ 		}
+ 	}
+ 
+-	if (!priv->multi_packet && (packet[4] & 0x40))
++	/*
++	 * Bit 6 of byte 0 is not usually set in position packets. The only
++	 * times it seems to be set is in situations where the data is
++	 * suspect anyway, e.g. a palm resting flat on the touchpad. Given
++	 * this combined with the fact that this bit is useful for filtering
++	 * out misidentified bitmap packets, we reject anything with this
++	 * bit set.
++	 */
++	if (packet[0] & 0x40)
++		return;
++
++	if (!priv->multi_packet && (packet[4] & 0x40)) {
+ 		priv->multi_packet = 1;
+-	else
+-		priv->multi_packet = 0;
++		memcpy(priv->multi_data, packet, sizeof(priv->multi_data));
++		return;
++	}
++
++	priv->multi_packet = 0;
+ 
+ 	left = packet[3] & 0x01;
+ 	right = packet[3] & 0x02;
+@@ -366,22 +536,38 @@ static void alps_process_touchpad_packet_v3(struct psmouse *psmouse)
+ 	if (x && y && !z)
+ 		return;
+ 
++	/*
++	 * If we don't have MT data or the bitmaps were empty, we have
++	 * to rely on ST data.
++	 */
++	if (!fingers) {
++		x1 = x;
++		y1 = y;
++		fingers = z > 0 ? 1 : 0;
++	}
++
+ 	if (z >= 64)
+ 		input_report_key(dev, BTN_TOUCH, 1);
+ 	else
+ 		input_report_key(dev, BTN_TOUCH, 0);
+ 
++	alps_report_semi_mt_data(dev, fingers, x1, y1, x2, y2);
++
++	input_report_key(dev, BTN_TOOL_FINGER, fingers == 1);
++	input_report_key(dev, BTN_TOOL_DOUBLETAP, fingers == 2);
++	input_report_key(dev, BTN_TOOL_TRIPLETAP, fingers == 3);
++	input_report_key(dev, BTN_TOOL_QUADTAP, fingers == 4);
++
++	input_report_key(dev, BTN_LEFT, left);
++	input_report_key(dev, BTN_RIGHT, right);
++	input_report_key(dev, BTN_MIDDLE, middle);
++
+ 	if (z > 0) {
+ 		input_report_abs(dev, ABS_X, x);
+ 		input_report_abs(dev, ABS_Y, y);
+ 	}
+ 	input_report_abs(dev, ABS_PRESSURE, z);
+ 
+-	input_report_key(dev, BTN_TOOL_FINGER, z > 0);
+-	input_report_key(dev, BTN_LEFT, left);
+-	input_report_key(dev, BTN_RIGHT, right);
+-	input_report_key(dev, BTN_MIDDLE, middle);
+-
+ 	input_sync(dev);
+ 
+ 	if (!(priv->quirks & ALPS_QUIRK_TRACKSTICK_BUTTONS)) {
+@@ -1368,9 +1554,18 @@ int alps_init(struct psmouse *psmouse)
+ 		input_set_abs_params(dev1, ABS_Y, 0, 767, 0, 0);
+ 		break;
+ 	case ALPS_PROTO_V3:
++		set_bit(INPUT_PROP_SEMI_MT, dev1->propbit);
++		input_mt_init_slots(dev1, 2);
++		input_set_abs_params(dev1, ABS_MT_POSITION_X, 0, ALPS_V3_X_MAX, 0, 0);
++		input_set_abs_params(dev1, ABS_MT_POSITION_Y, 0, ALPS_V3_Y_MAX, 0, 0);
++
++		set_bit(BTN_TOOL_DOUBLETAP, dev1->keybit);
++		set_bit(BTN_TOOL_TRIPLETAP, dev1->keybit);
++		set_bit(BTN_TOOL_QUADTAP, dev1->keybit);
++		/* fall through */
+ 	case ALPS_PROTO_V4:
+-		input_set_abs_params(dev1, ABS_X, 0, 2000, 0, 0);
+-		input_set_abs_params(dev1, ABS_Y, 0, 1400, 0, 0);
++		input_set_abs_params(dev1, ABS_X, 0, ALPS_V3_X_MAX, 0, 0);
++		input_set_abs_params(dev1, ABS_Y, 0, ALPS_V3_Y_MAX, 0, 0);
+ 		break;
+ 	}
+ 
+diff --git a/drivers/input/mouse/alps.h b/drivers/input/mouse/alps.h
+index 62db7f4..a00a4ab 100644
+--- a/drivers/input/mouse/alps.h
++++ b/drivers/input/mouse/alps.h
+@@ -38,6 +38,7 @@ struct alps_data {
+ 	int addr_command;		/* Command to set register address */
+ 	int prev_fin;			/* Finger bit from previous packet */
+ 	int multi_packet;		/* Multi-packet data in progress */
++	unsigned char multi_data[6];	/* Saved multi-packet data */
+ 	u8 quirks;
+ 	struct timer_list timer;
+ };
+-- 
+1.7.8.2
+

Modified: dists/trunk/linux-2.6/debian/patches/features/all/Input-ALPS-add-support-for-protocol-versions-3-and-4.patch
==============================================================================
--- dists/trunk/linux-2.6/debian/patches/features/all/Input-ALPS-add-support-for-protocol-versions-3-and-4.patch	Wed Jan 18 15:48:04 2012	(r18568)
+++ dists/trunk/linux-2.6/debian/patches/features/all/Input-ALPS-add-support-for-protocol-versions-3-and-4.patch	Wed Jan 18 16:14:04 2012	(r18569)
@@ -1,6 +1,6 @@
 From: Seth Forshee <seth.forshee at canonical.com>
 Date: Mon, 7 Nov 2011 19:53:36 -0800
-Subject: [PATCH 4/4] Input: ALPS - add support for protocol versions 3 and 4
+Subject: [PATCH 4/5] Input: ALPS - add support for protocol versions 3 and 4
 
 commit 25bded7cd60fa460e520e9f819bd06f4c5cb53f0 upstream.
 
@@ -15,9 +15,6 @@
 Signed-off-by: Seth Forshee <seth.forshee at canonical.com>
 Acked-by: Chase Douglas <chase.douglas at canonical.com>
 Signed-off-by: Dmitry Torokhov <dtor at mail.ru>
----
- drivers/input/mouse/alps.c |  791 +++++++++++++++++++++++++++++++++++++++++---
- 1 files changed, 753 insertions(+), 38 deletions(-)
 
 diff --git a/drivers/input/mouse/alps.c b/drivers/input/mouse/alps.c
 index 44a0a71..a0248fd 100644
@@ -943,6 +940,59 @@
  
  	/* We are having trouble resyncing ALPS touchpads so disable it for now */
  	psmouse->resync_time = 0;
+diff --git a/drivers/input/mouse/alps.h b/drivers/input/mouse/alps.h
+index 4ce9bba..62db7f4 100644
+--- a/drivers/input/mouse/alps.h
++++ b/drivers/input/mouse/alps.h
+@@ -14,22 +14,36 @@
+ 
+ #define ALPS_PROTO_V1	0
+ #define ALPS_PROTO_V2	1
++#define ALPS_PROTO_V3	2
++#define ALPS_PROTO_V4	3
+ 
+ struct alps_model_info {
+         unsigned char signature[3];
++	unsigned char command_mode_resp; /* v3/v4 only */
+ 	unsigned char proto_version;
+         unsigned char byte0, mask0;
+         unsigned char flags;
+ };
+ 
++struct alps_nibble_commands {
++	int command;
++	unsigned char data;
++};
++
+ struct alps_data {
+ 	struct input_dev *dev2;		/* Relative device */
+ 	char phys[32];			/* Phys */
+ 	const struct alps_model_info *i;/* Info */
++	const struct alps_nibble_commands *nibble_commands;
++	int addr_command;		/* Command to set register address */
+ 	int prev_fin;			/* Finger bit from previous packet */
++	int multi_packet;		/* Multi-packet data in progress */
++	u8 quirks;
+ 	struct timer_list timer;
+ };
+ 
++#define ALPS_QUIRK_TRACKSTICK_BUTTONS	1 /* trakcstick buttons in trackstick packet */
++
+ #ifdef CONFIG_MOUSE_PS2_ALPS
+ int alps_detect(struct psmouse *psmouse, bool set_properties);
+ int alps_init(struct psmouse *psmouse);
+diff --git a/drivers/input/mouse/psmouse.h b/drivers/input/mouse/psmouse.h
+index 9b84b0c..11a9c6c 100644
+--- a/drivers/input/mouse/psmouse.h
++++ b/drivers/input/mouse/psmouse.h
+@@ -8,6 +8,7 @@
+ #define PSMOUSE_CMD_SETSTREAM	0x00ea
+ #define PSMOUSE_CMD_SETPOLL	0x00f0
+ #define PSMOUSE_CMD_POLL	0x00eb	/* caller sets number of bytes to receive */
++#define PSMOUSE_CMD_RESET_WRAP	0x00ec
+ #define PSMOUSE_CMD_GETID	0x02f2
+ #define PSMOUSE_CMD_SETRATE	0x10f3
+ #define PSMOUSE_CMD_ENABLE	0x00f4
 -- 
 1.7.8.2
 

Modified: dists/trunk/linux-2.6/debian/patches/features/all/Input-ALPS-move-protocol-information-to-Documentatio.patch
==============================================================================
--- dists/trunk/linux-2.6/debian/patches/features/all/Input-ALPS-move-protocol-information-to-Documentatio.patch	Wed Jan 18 15:48:04 2012	(r18568)
+++ dists/trunk/linux-2.6/debian/patches/features/all/Input-ALPS-move-protocol-information-to-Documentatio.patch	Wed Jan 18 16:14:04 2012	(r18569)
@@ -1,6 +1,6 @@
 From: Seth Forshee <seth.forshee at canonical.com>
 Date: Mon, 7 Nov 2011 19:53:15 -0800
-Subject: [PATCH 1/4] Input: ALPS - move protocol information to Documentation
+Subject: [PATCH 1/5] Input: ALPS - move protocol information to Documentation
 
 commit d4b347b29b4d14647c7394f7167bf6785dc98e50 upstream.
 
@@ -12,10 +12,88 @@
 Signed-off-by: Seth Forshee <seth.forshee at canonical.com>
 Acked-by: Chase Douglas <chase.douglas at canonical.com>
 Signed-off-by: Dmitry Torokhov <dtor at mail.ru>
----
- drivers/input/mouse/alps.c |   37 +------------------------------------
- 1 files changed, 1 insertions(+), 36 deletions(-)
 
+diff --git a/Documentation/input/alps.txt b/Documentation/input/alps.txt
+new file mode 100644
+index 0000000..ab5478f
+--- /dev/null
++++ b/Documentation/input/alps.txt
+@@ -0,0 +1,75 @@
++ALPS Touchpad Protocol
++----------------------
++
++Introduction
++------------
++
++Currently the ALPS touchpad driver supports two protocol versions in use by
++ALPS touchpads, the "old" and "new" protocol versions. Fundamentally these
++differ only in the format of their event packets (in reality many features may
++be found on new protocol devices that aren't found on the old protocol
++devices, but these are handled transparently as feature differences rather
++than protocol differences).
++
++Detection
++---------
++
++All ALPS touchpads should respond to the "E6 report" command sequence:
++E8-E6-E6-E6-E9. An ALPS touchpad should respond with either 00-00-0A or
++00-00-64.
++
++If the E6 report is successful, the touchpad model is identified using the "E7
++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.
++
++Packet Format
++-------------
++
++In the following tables, the following notation us used.
++
++ CAPITALS = stick, miniscules = touchpad
++
++?'s can have different meanings on different models, such as wheel rotation,
++extra buttons, stick buttons on a dualpoint, etc.
++
++PS/2 packet format
++------------------
++
++ byte 0:  0    0 YSGN XSGN    1    M    R    L
++ byte 1: X7   X6   X5   X4   X3   X2   X1   X0
++ byte 2: Y7   Y6   Y5   Y4   Y3   Y2   Y1   Y0
++
++Note that the device never signals overflow condition.
++
++ALPS Absolute Mode - Old Format
++-------------------------------
++
++ byte 0:  1    0    0    0    1   x9   x8   x7
++ byte 1:  0   x6   x5   x4   x3   x2   x1   x0
++ byte 2:  0    ?    ?    l    r    ?  fin  ges
++ byte 3:  0    ?    ?    ?    ?   y9   y8   y7
++ byte 4:  0   y6   y5   y4   y3   y2   y1   y0
++ byte 5:  0   z6   z5   z4   z3   z2   z1   z0
++
++ALPS Absolute Mode - New Format
++-------------------------------
++
++ byte 0:  1    ?    ?    ?    1    ?    ?    ?
++ byte 1:  0   x6   x5   x4   x3   x2   x1   x0
++ byte 2:  0  x10   x9   x8   x7    ?  fin  ges
++ byte 3:  0   y9   y8   y7    1    M    R    L
++ byte 4:  0   y6   y5   y4   y3   y2   y1   y0
++ byte 5:  0   z6   z5   z4   z3   z2   z1   z0
++
++Dualpoint device -- interleaved packet format
++---------------------------------------------
++
++ byte 0:    1    1    0    0    1    1    1    1
++ byte 1:    0   x6   x5   x4   x3   x2   x1   x0
++ byte 2:    0  x10   x9   x8   x7    0  fin  ges
++ byte 3:    0    0 YSGN XSGN    1    1    1    1
++ byte 4:   X7   X6   X5   X4   X3   X2   X1   X0
++ byte 5:   Y7   Y6   Y5   Y4   Y3   Y2   Y1   Y0
++ byte 6:    0   y9   y8   y7    1    m    r    l
++ byte 7:    0   y6   y5   y4   y3   y2   y1   y0
++ byte 8:    0   z6   z5   z4   z3   z2   z1   z0
 diff --git a/drivers/input/mouse/alps.c b/drivers/input/mouse/alps.c
 index 003587c..19d0943 100644
 --- a/drivers/input/mouse/alps.c

Modified: dists/trunk/linux-2.6/debian/patches/features/all/Input-ALPS-remove-assumptions-about-packet-size.patch
==============================================================================
--- dists/trunk/linux-2.6/debian/patches/features/all/Input-ALPS-remove-assumptions-about-packet-size.patch	Wed Jan 18 15:48:04 2012	(r18568)
+++ dists/trunk/linux-2.6/debian/patches/features/all/Input-ALPS-remove-assumptions-about-packet-size.patch	Wed Jan 18 16:14:04 2012	(r18569)
@@ -1,6 +1,6 @@
 From: Seth Forshee <seth.forshee at canonical.com>
 Date: Mon, 7 Nov 2011 19:53:30 -0800
-Subject: [PATCH 3/4] Input: ALPS - remove assumptions about packet size
+Subject: [PATCH 3/5] Input: ALPS - remove assumptions about packet size
 
 commit b46615fe9215214ac00e26d35fc54dbe1c510803 upstream.
 
@@ -11,9 +11,6 @@
 Signed-off-by: Seth Forshee <seth.forshee at canonical.com>
 Acked-by: Chase Douglas <chase.douglas at canonical.com>
 Signed-off-by: Dmitry Torokhov <dtor at mail.ru>
----
- drivers/input/mouse/alps.c |   10 +++++-----
- 1 files changed, 5 insertions(+), 5 deletions(-)
 
 diff --git a/drivers/input/mouse/alps.c b/drivers/input/mouse/alps.c
 index 77b776d..44a0a71 100644

Modified: dists/trunk/linux-2.6/debian/patches/series/base
==============================================================================
--- dists/trunk/linux-2.6/debian/patches/series/base	Wed Jan 18 15:48:04 2012	(r18568)
+++ dists/trunk/linux-2.6/debian/patches/series/base	Wed Jan 18 16:14:04 2012	(r18569)
@@ -74,3 +74,4 @@
 + features/all/Input-ALPS-add-protocol-version-field-in-alps_model_.patch
 + features/all/Input-ALPS-remove-assumptions-about-packet-size.patch
 + features/all/Input-ALPS-add-support-for-protocol-versions-3-and-4.patch
++ features/all/Input-ALPS-add-semi-MT-support-for-v3-protocol.patch



More information about the Kernel-svn-changes mailing list