summaryrefslogtreecommitdiffstats
path: root/meta-moblin/packages/linux/linux-moblin-2.6.31.5/linux-2.6.29-touchkit.patch
diff options
context:
space:
mode:
Diffstat (limited to 'meta-moblin/packages/linux/linux-moblin-2.6.31.5/linux-2.6.29-touchkit.patch')
-rw-r--r--meta-moblin/packages/linux/linux-moblin-2.6.31.5/linux-2.6.29-touchkit.patch146
1 files changed, 146 insertions, 0 deletions
diff --git a/meta-moblin/packages/linux/linux-moblin-2.6.31.5/linux-2.6.29-touchkit.patch b/meta-moblin/packages/linux/linux-moblin-2.6.31.5/linux-2.6.29-touchkit.patch
new file mode 100644
index 0000000000..5253404c29
--- /dev/null
+++ b/meta-moblin/packages/linux/linux-moblin-2.6.31.5/linux-2.6.29-touchkit.patch
@@ -0,0 +1,146 @@
1From 3281da09528ca94f1b1fd39cae388f5b5423aa46 Mon Sep 17 00:00:00 2001
2From: Alan Olsen <alanx.r.olsen@intel.com>
3Date: Tue, 21 Jul 2009 13:26:58 -0700
4Subject: [PATCH] linux-2.6.29-touchkit.patch
5
6Signed-off-by: Alan Olsen <alanx.r.olsen@intel.com>
7---
8 drivers/input/mouse/psmouse-base.c | 9 +++++++
9 drivers/input/mouse/psmouse.h | 1 +
10 drivers/input/mouse/touchkit_ps2.c | 45 ++++++++++++++++++++++++++++++++++-
11 drivers/input/mouse/touchkit_ps2.h | 6 ++++
12 4 files changed, 59 insertions(+), 2 deletions(-)
13
14diff --git a/drivers/input/mouse/psmouse-base.c b/drivers/input/mouse/psmouse-base.c
15index b407b35..4c6b184 100644
16--- a/drivers/input/mouse/psmouse-base.c
17+++ b/drivers/input/mouse/psmouse-base.c
18@@ -678,6 +678,9 @@ static int psmouse_extensions(struct psmouse *psmouse,
19
20 if (touchkit_ps2_detect(psmouse, set_properties) == 0)
21 return PSMOUSE_TOUCHKIT_PS2;
22+
23+ if (elftouch_ps2_detect(psmouse, set_properties) == 0)
24+ return PSMOUSE_ELFTOUCH_PS2;
25 }
26
27 /*
28@@ -788,6 +791,12 @@ static const struct psmouse_protocol psmouse_protocols[] = {
29 .alias = "trackpoint",
30 .detect = trackpoint_detect,
31 },
32+ {
33+ .type = PSMOUSE_ELFTOUCH_PS2,
34+ .name = "elftouchPS2",
35+ .alias = "elftouch",
36+ .detect = elftouch_ps2_detect,
37+ },
38 #endif
39 #ifdef CONFIG_MOUSE_PS2_TOUCHKIT
40 {
41diff --git a/drivers/input/mouse/psmouse.h b/drivers/input/mouse/psmouse.h
42index 54ed267..8d1ba79 100644
43--- a/drivers/input/mouse/psmouse.h
44+++ b/drivers/input/mouse/psmouse.h
45@@ -89,6 +89,7 @@ enum psmouse_type {
46 PSMOUSE_TRACKPOINT,
47 PSMOUSE_TOUCHKIT_PS2,
48 PSMOUSE_CORTRON,
49+ PSMOUSE_ELFTOUCH_PS2,
50 PSMOUSE_HGPK,
51 PSMOUSE_ELANTECH,
52 PSMOUSE_AUTO /* This one should always be last */
53diff --git a/drivers/input/mouse/touchkit_ps2.c b/drivers/input/mouse/touchkit_ps2.c
54index 3fadb2a..e9c27f1 100644
55--- a/drivers/input/mouse/touchkit_ps2.c
56+++ b/drivers/input/mouse/touchkit_ps2.c
57@@ -51,6 +51,11 @@
58 #define TOUCHKIT_GET_X(packet) (((packet)[1] << 7) | (packet)[2])
59 #define TOUCHKIT_GET_Y(packet) (((packet)[3] << 7) | (packet)[4])
60
61+#define ELFTOUCH_MAX_XC 0x0fff
62+#define ELFTOUCH_MAX_YC 0x0fff
63+#define ELFTOUCH_GET_X(packet) (((packet)[3] << 7) | (packet)[4])
64+#define ELFTOUCH_GET_Y(packet) (((packet)[1] << 7) | (packet)[2])
65+
66 static psmouse_ret_t touchkit_ps2_process_byte(struct psmouse *psmouse)
67 {
68 unsigned char *packet = psmouse->packet;
69@@ -59,9 +64,15 @@ static psmouse_ret_t touchkit_ps2_process_byte(struct psmouse *psmouse)
70 if (psmouse->pktcnt != 5)
71 return PSMOUSE_GOOD_DATA;
72
73- input_report_abs(dev, ABS_X, TOUCHKIT_GET_X(packet));
74- input_report_abs(dev, ABS_Y, TOUCHKIT_GET_Y(packet));
75+ if(psmouse->type==PSMOUSE_ELFTOUCH_PS2) {
76+ input_report_abs(dev, ABS_X, ELFTOUCH_GET_X(packet));
77+ input_report_abs(dev, ABS_Y, ELFTOUCH_GET_Y(packet));
78+ } else {
79+ input_report_abs(dev, ABS_X, TOUCHKIT_GET_X(packet));
80+ input_report_abs(dev, ABS_Y, TOUCHKIT_GET_Y(packet));
81+ }
82 input_report_key(dev, BTN_TOUCH, TOUCHKIT_GET_TOUCHED(packet));
83+
84 input_sync(dev);
85
86 return PSMOUSE_FULL_PACKET;
87@@ -98,3 +109,33 @@ int touchkit_ps2_detect(struct psmouse *psmouse, int set_properties)
88
89 return 0;
90 }
91+
92+int elftouch_ps2_detect(struct psmouse *psmouse, int set_properties)
93+{
94+ struct input_dev *dev = psmouse->dev;
95+ unsigned char param[16];
96+ int command, res;
97+
98+ param[0]=0x0f4;
99+ command = TOUCHKIT_SEND_PARMS(1, 0, TOUCHKIT_CMD);
100+ res=ps2_command(&psmouse->ps2dev, param, command);
101+ if(res) { return -ENODEV; }
102+
103+ param[0]=0x0b0;
104+ command = TOUCHKIT_SEND_PARMS(1, 1, TOUCHKIT_CMD);
105+ res=ps2_command(&psmouse->ps2dev, param, command);
106+ if(res) { return -ENODEV; }
107+
108+ if (set_properties) {
109+ dev->evbit[0] = BIT_MASK(EV_KEY) | BIT_MASK(EV_ABS);
110+ set_bit(BTN_TOUCH, dev->keybit);
111+ input_set_abs_params(dev, ABS_X, 0, ELFTOUCH_MAX_XC, 0, 0);
112+ input_set_abs_params(dev, ABS_Y, 0, ELFTOUCH_MAX_YC, 0, 0);
113+
114+ psmouse->vendor = "ElfTouch";
115+ psmouse->name = "Touchscreen";
116+ psmouse->protocol_handler = touchkit_ps2_process_byte;
117+ psmouse->pktsize = 5;
118+ }
119+ return 0;
120+}
121diff --git a/drivers/input/mouse/touchkit_ps2.h b/drivers/input/mouse/touchkit_ps2.h
122index 8a0dd35..f32ef4c 100644
123--- a/drivers/input/mouse/touchkit_ps2.h
124+++ b/drivers/input/mouse/touchkit_ps2.h
125@@ -14,12 +14,18 @@
126
127 #ifdef CONFIG_MOUSE_PS2_TOUCHKIT
128 int touchkit_ps2_detect(struct psmouse *psmouse, int set_properties);
129+int elftouch_ps2_detect(struct psmouse *psmouse, int set_properties);
130 #else
131 static inline int touchkit_ps2_detect(struct psmouse *psmouse,
132 int set_properties)
133 {
134 return -ENOSYS;
135 }
136+static inline int elftouch_ps2_detect(struct psmouse *psmouse,
137+ int set_properties)
138+{
139+ return -ENOSYS;
140+}
141 #endif /* CONFIG_MOUSE_PS2_TOUCHKIT */
142
143 #endif
144--
1451.6.0.6
146