summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--meta-oe/recipes-graphics/tslib/tslib/0001-Fix-build-on-32bit-arches-with-64bit-time_t.patch389
-rw-r--r--meta-oe/recipes-graphics/tslib/tslib_1.21.bb1
2 files changed, 390 insertions, 0 deletions
diff --git a/meta-oe/recipes-graphics/tslib/tslib/0001-Fix-build-on-32bit-arches-with-64bit-time_t.patch b/meta-oe/recipes-graphics/tslib/tslib/0001-Fix-build-on-32bit-arches-with-64bit-time_t.patch
new file mode 100644
index 0000000000..59bd97a0f2
--- /dev/null
+++ b/meta-oe/recipes-graphics/tslib/tslib/0001-Fix-build-on-32bit-arches-with-64bit-time_t.patch
@@ -0,0 +1,389 @@
1From 5455055660700be18eb8800e56e2423031ed4c76 Mon Sep 17 00:00:00 2001
2From: Khem Raj <raj.khem@gmail.com>
3Date: Sat, 30 Nov 2019 19:59:29 -0800
4Subject: [PATCH] Fix build on 32bit arches with 64bit time_t
5
6time element is deprecated on new input_event structure in kernel's
7input.h [1]
8
9[1] https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit?id=152194fe9c3f
10
11Upstream-Status: Submitted [https://github.com/libts/tslib/pull/162]
12
13Signed-off-by: Khem Raj <raj.khem@gmail.com>
14---
15 plugins/input-raw.c | 59 +++++++++++++++++++++++++++-------------
16 tools/ts_uinput.c | 66 ++++++++++++++++++++++++++++++---------------
17 2 files changed, 85 insertions(+), 40 deletions(-)
18
19diff --git a/plugins/input-raw.c b/plugins/input-raw.c
20index 64f0156..f030836 100644
21--- a/plugins/input-raw.c
22+++ b/plugins/input-raw.c
23@@ -40,6 +40,11 @@
24 # include <linux/input.h>
25 #endif
26
27+#ifndef input_event_sec
28+#define input_event_sec time.tv_sec
29+#define input_event_usec time.tv_usec
30+#endif
31+
32 #ifndef EV_SYN /* 2.4 kernel headers */
33 # define EV_SYN 0x00
34 #endif
35@@ -384,7 +389,8 @@ static int ts_input_read(struct tslib_module_info *inf,
36 samp->y = i->current_y;
37 samp->pressure = i->current_p;
38 }
39- samp->tv = ev.time;
40+ samp->tv.tv_sec = ev.input_event_sec;
41+ samp->tv.tv_usec = ev.input_event_usec;
42 #ifdef DEBUG
43 fprintf(stderr,
44 "RAW---------------------> %d %d %d %ld.%ld\n",
45@@ -519,7 +525,8 @@ static int ts_input_read(struct tslib_module_info *inf,
46 samp->pressure = i->current_p = ev.value;
47 break;
48 }
49- samp->tv = ev.time;
50+ samp->tv.tv_sec = ev.input_event_sec;
51+ samp->tv.tv_usec = ev.input_event_usec;
52 #ifdef DEBUG
53 fprintf(stderr,
54 "RAW---------------------------> %d %d %d\n",
55@@ -536,7 +543,8 @@ static int ts_input_read(struct tslib_module_info *inf,
56 samp->x = 0;
57 samp->y = 0;
58 samp->pressure = 0;
59- samp->tv = ev.time;
60+ samp->tv.tv_sec = ev.input_event_sec;
61+ samp->tv.tv_usec = ev.input_event_usec;
62 samp++;
63 total++;
64 }
65@@ -651,7 +659,8 @@ static int ts_input_read_mt(struct tslib_module_info *inf,
66 switch (i->ev[it].code) {
67 case BTN_TOUCH:
68 i->buf[total][i->slot].pen_down = i->ev[it].value;
69- i->buf[total][i->slot].tv = i->ev[it].time;
70+ i->buf[total][i->slot].tv.tv_sec = i->ev[it].input_event_sec;
71+ i->buf[total][i->slot].tv.tv_usec = i->ev[it].input_event_usec;
72 i->buf[total][i->slot].valid |= TSLIB_MT_VALID;
73 if (i->ev[it].value == 0)
74 pen_up = 1;
75@@ -751,7 +760,8 @@ static int ts_input_read_mt(struct tslib_module_info *inf,
76 // fall through
77 case ABS_MT_POSITION_X:
78 i->buf[total][i->slot].x = i->ev[it].value;
79- i->buf[total][i->slot].tv = i->ev[it].time;
80+ i->buf[total][i->slot].tv.tv_sec = i->ev[it].input_event_sec;
81+ i->buf[total][i->slot].tv.tv_usec = i->ev[it].input_event_usec;
82 i->buf[total][i->slot].valid |= TSLIB_MT_VALID;
83 break;
84 case ABS_Y:
85@@ -760,7 +770,8 @@ static int ts_input_read_mt(struct tslib_module_info *inf,
86 // fall through
87 case ABS_MT_POSITION_Y:
88 i->buf[total][i->slot].y = i->ev[it].value;
89- i->buf[total][i->slot].tv = i->ev[it].time;
90+ i->buf[total][i->slot].tv.tv_sec = i->ev[it].input_event_sec;
91+ i->buf[total][i->slot].tv.tv_usec = i->ev[it].input_event_usec;
92 i->buf[total][i->slot].valid |= TSLIB_MT_VALID;
93 break;
94 case ABS_PRESSURE:
95@@ -769,12 +780,14 @@ static int ts_input_read_mt(struct tslib_module_info *inf,
96 // fall through
97 case ABS_MT_PRESSURE:
98 i->buf[total][i->slot].pressure = i->ev[it].value;
99- i->buf[total][i->slot].tv = i->ev[it].time;
100+ i->buf[total][i->slot].tv.tv_sec = i->ev[it].input_event_sec;
101+ i->buf[total][i->slot].tv.tv_usec = i->ev[it].input_event_usec;
102 i->buf[total][i->slot].valid |= TSLIB_MT_VALID;
103 break;
104 case ABS_MT_TOOL_X:
105 i->buf[total][i->slot].tool_x = i->ev[it].value;
106- i->buf[total][i->slot].tv = i->ev[it].time;
107+ i->buf[total][i->slot].tv.tv_sec = i->ev[it].input_event_sec;
108+ i->buf[total][i->slot].tv.tv_usec = i->ev[it].input_event_usec;
109 i->buf[total][i->slot].valid |= TSLIB_MT_VALID;
110 /* for future use
111 * i->buf[total][i->slot].valid |= TSLIB_MT_VALID_TOOL;
112@@ -782,7 +795,8 @@ static int ts_input_read_mt(struct tslib_module_info *inf,
113 break;
114 case ABS_MT_TOOL_Y:
115 i->buf[total][i->slot].tool_y = i->ev[it].value;
116- i->buf[total][i->slot].tv = i->ev[it].time;
117+ i->buf[total][i->slot].tv.tv_sec = i->ev[it].input_event_sec;
118+ i->buf[total][i->slot].tv.tv_usec = i->ev[it].input_event_usec;
119 i->buf[total][i->slot].valid |= TSLIB_MT_VALID;
120 /* for future use
121 * i->buf[total][i->slot].valid |= TSLIB_MT_VALID_TOOL;
122@@ -790,7 +804,8 @@ static int ts_input_read_mt(struct tslib_module_info *inf,
123 break;
124 case ABS_MT_TOOL_TYPE:
125 i->buf[total][i->slot].tool_type = i->ev[it].value;
126- i->buf[total][i->slot].tv = i->ev[it].time;
127+ i->buf[total][i->slot].tv.tv_sec = i->ev[it].input_event_sec;
128+ i->buf[total][i->slot].tv.tv_usec = i->ev[it].input_event_usec;
129 i->buf[total][i->slot].valid |= TSLIB_MT_VALID;
130 /* for future use
131 * i->buf[total][i->slot].valid |= TSLIB_MT_VALID_TOOL;
132@@ -798,12 +813,14 @@ static int ts_input_read_mt(struct tslib_module_info *inf,
133 break;
134 case ABS_MT_ORIENTATION:
135 i->buf[total][i->slot].orientation = i->ev[it].value;
136- i->buf[total][i->slot].tv = i->ev[it].time;
137+ i->buf[total][i->slot].tv.tv_sec = i->ev[it].input_event_sec;
138+ i->buf[total][i->slot].tv.tv_usec = i->ev[it].input_event_usec;
139 i->buf[total][i->slot].valid |= TSLIB_MT_VALID;
140 break;
141 case ABS_MT_DISTANCE:
142 i->buf[total][i->slot].distance = i->ev[it].value;
143- i->buf[total][i->slot].tv = i->ev[it].time;
144+ i->buf[total][i->slot].tv.tv_sec = i->ev[it].input_event_sec;
145+ i->buf[total][i->slot].tv.tv_usec = i->ev[it].input_event_usec;
146 i->buf[total][i->slot].valid |= TSLIB_MT_VALID;
147
148 if (i->special_device == EGALAX_VERSION_210) {
149@@ -816,34 +833,40 @@ static int ts_input_read_mt(struct tslib_module_info *inf,
150 break;
151 case ABS_MT_BLOB_ID:
152 i->buf[total][i->slot].blob_id = i->ev[it].value;
153- i->buf[total][i->slot].tv = i->ev[it].time;
154+ i->buf[total][i->slot].tv.tv_sec = i->ev[it].input_event_sec;
155+ i->buf[total][i->slot].tv.tv_usec = i->ev[it].input_event_usec;
156 i->buf[total][i->slot].valid |= TSLIB_MT_VALID;
157 break;
158 case ABS_MT_TOUCH_MAJOR:
159 i->buf[total][i->slot].touch_major = i->ev[it].value;
160- i->buf[total][i->slot].tv = i->ev[it].time;
161+ i->buf[total][i->slot].tv.tv_sec = i->ev[it].input_event_sec;
162+ i->buf[total][i->slot].tv.tv_usec = i->ev[it].input_event_usec;
163 i->buf[total][i->slot].valid |= TSLIB_MT_VALID;
164 if (i->ev[it].value == 0)
165 i->buf[total][i->slot].pressure = 0;
166 break;
167 case ABS_MT_WIDTH_MAJOR:
168 i->buf[total][i->slot].width_major = i->ev[it].value;
169- i->buf[total][i->slot].tv = i->ev[it].time;
170+ i->buf[total][i->slot].tv.tv_sec = i->ev[it].input_event_sec;
171+ i->buf[total][i->slot].tv.tv_usec = i->ev[it].input_event_usec;
172 i->buf[total][i->slot].valid |= TSLIB_MT_VALID;
173 break;
174 case ABS_MT_TOUCH_MINOR:
175 i->buf[total][i->slot].touch_minor = i->ev[it].value;
176- i->buf[total][i->slot].tv = i->ev[it].time;
177+ i->buf[total][i->slot].tv.tv_sec = i->ev[it].input_event_sec;
178+ i->buf[total][i->slot].tv.tv_usec = i->ev[it].input_event_usec;
179 i->buf[total][i->slot].valid |= TSLIB_MT_VALID;
180 break;
181 case ABS_MT_WIDTH_MINOR:
182 i->buf[total][i->slot].width_minor = i->ev[it].value;
183- i->buf[total][i->slot].tv = i->ev[it].time;
184+ i->buf[total][i->slot].tv.tv_sec = i->ev[it].input_event_sec;
185+ i->buf[total][i->slot].tv.tv_usec = i->ev[it].input_event_usec;
186 i->buf[total][i->slot].valid |= TSLIB_MT_VALID;
187 break;
188 case ABS_MT_TRACKING_ID:
189 i->buf[total][i->slot].tracking_id = i->ev[it].value;
190- i->buf[total][i->slot].tv = i->ev[it].time;
191+ i->buf[total][i->slot].tv.tv_sec = i->ev[it].input_event_sec;
192+ i->buf[total][i->slot].tv.tv_usec = i->ev[it].input_event_usec;
193 i->buf[total][i->slot].valid |= TSLIB_MT_VALID;
194 if (i->ev[it].value == -1)
195 i->buf[total][i->slot].pressure = 0;
196diff --git a/tools/ts_uinput.c b/tools/ts_uinput.c
197index 6ca4c3d..1832a07 100644
198--- a/tools/ts_uinput.c
199+++ b/tools/ts_uinput.c
200@@ -170,14 +170,16 @@ static int send_touch_events(struct data_t *data, struct ts_sample_mt **s,
201 continue;
202
203 if (s[j][i].pen_down == 1) {
204- data->ev[c].time = s[j][i].tv;
205+ data->ev[c].input_event_sec = s[j][i].tv.tv_sec;
206+ data->ev[c].input_event_usec = s[j][i].tv.tv_usec;
207 data->ev[c].type = EV_KEY;
208 data->ev[c].code = BTN_TOUCH;
209 data->ev[c].value = s[j][i].pen_down;
210 c++;
211 }
212
213- data->ev[c].time = s[j][i].tv;
214+ data->ev[c].input_event_sec = s[j][i].tv.tv_sec;
215+ data->ev[c].input_event_usec = s[j][i].tv.tv_usec;
216 data->ev[c].type = EV_ABS;
217 data->ev[c].code = ABS_MT_SLOT;
218 data->ev[c].value = s[j][i].slot;
219@@ -190,111 +192,129 @@ static int send_touch_events(struct data_t *data, struct ts_sample_mt **s,
220 * we should use slot 1 and so on.
221 */
222 if (i == 0) {
223- data->ev[c].time = s[j][i].tv;
224+ data->ev[c].input_event_sec = s[j][i].tv.tv_sec;
225+ data->ev[c].input_event_usec = s[j][i].tv.tv_usec;
226 data->ev[c].type = EV_ABS;
227 data->ev[c].code = ABS_X;
228 data->ev[c].value = s[j][i].x;
229 c++;
230
231- data->ev[c].time = s[j][i].tv;
232+ data->ev[c].input_event_sec = s[j][i].tv.tv_sec;
233+ data->ev[c].input_event_usec = s[j][i].tv.tv_usec;
234 data->ev[c].type = EV_ABS;
235 data->ev[c].code = ABS_Y;
236 data->ev[c].value = s[j][i].y;
237 c++;
238
239- data->ev[c].time = s[j][i].tv;
240+ data->ev[c].input_event_sec = s[j][i].tv.tv_sec;
241+ data->ev[c].input_event_usec = s[j][i].tv.tv_usec;
242 data->ev[c].type = EV_ABS;
243 data->ev[c].code = ABS_PRESSURE;
244 data->ev[c].value = s[j][i].pressure;
245 c++;
246 }
247
248- data->ev[c].time = s[j][i].tv;
249+ data->ev[c].input_event_sec = s[j][i].tv.tv_sec;
250+ data->ev[c].input_event_usec = s[j][i].tv.tv_usec;
251 data->ev[c].type = EV_ABS;
252 data->ev[c].code = ABS_MT_POSITION_X;
253 data->ev[c].value = s[j][i].x;
254 c++;
255
256- data->ev[c].time = s[j][i].tv;
257+ data->ev[c].input_event_sec = s[j][i].tv.tv_sec;
258+ data->ev[c].input_event_usec = s[j][i].tv.tv_usec;
259 data->ev[c].type = EV_ABS;
260 data->ev[c].code = ABS_MT_POSITION_Y;
261 data->ev[c].value = s[j][i].y;
262 c++;
263
264- data->ev[c].time = s[j][i].tv;
265+ data->ev[c].input_event_sec = s[j][i].tv.tv_sec;
266+ data->ev[c].input_event_usec = s[j][i].tv.tv_usec;
267 data->ev[c].type = EV_ABS;
268 data->ev[c].code = ABS_MT_PRESSURE;
269 data->ev[c].value = s[j][i].pressure;
270 c++;
271
272- data->ev[c].time = s[j][i].tv;
273+ data->ev[c].input_event_sec = s[j][i].tv.tv_sec;
274+ data->ev[c].input_event_usec = s[j][i].tv.tv_usec;
275 data->ev[c].type = EV_ABS;
276 data->ev[c].code = ABS_MT_TOUCH_MAJOR;
277 data->ev[c].value = s[j][i].touch_major;
278 c++;
279
280- data->ev[c].time = s[j][i].tv;
281+ data->ev[c].input_event_sec = s[j][i].tv.tv_sec;
282+ data->ev[c].input_event_usec = s[j][i].tv.tv_usec;
283 data->ev[c].type = EV_ABS;
284 data->ev[c].code = ABS_MT_WIDTH_MAJOR;
285 data->ev[c].value = s[j][i].width_major;
286 c++;
287
288- data->ev[c].time = s[j][i].tv;
289+ data->ev[c].input_event_sec = s[j][i].tv.tv_sec;
290+ data->ev[c].input_event_usec = s[j][i].tv.tv_usec;
291 data->ev[c].type = EV_ABS;
292 data->ev[c].code = ABS_MT_TOUCH_MINOR;
293 data->ev[c].value = s[j][i].touch_minor;
294 c++;
295
296- data->ev[c].time = s[j][i].tv;
297+ data->ev[c].input_event_sec = s[j][i].tv.tv_sec;
298+ data->ev[c].input_event_usec = s[j][i].tv.tv_usec;
299 data->ev[c].type = EV_ABS;
300 data->ev[c].code = ABS_MT_WIDTH_MINOR;
301 data->ev[c].value = s[j][i].width_minor;
302 c++;
303
304- data->ev[c].time = s[j][i].tv;
305+ data->ev[c].input_event_sec = s[j][i].tv.tv_sec;
306+ data->ev[c].input_event_usec = s[j][i].tv.tv_usec;
307 data->ev[c].type = EV_ABS;
308 data->ev[c].code = ABS_MT_TOOL_TYPE;
309 data->ev[c].value = s[j][i].tool_type;
310 c++;
311
312- data->ev[c].time = s[j][i].tv;
313+ data->ev[c].input_event_sec = s[j][i].tv.tv_sec;
314+ data->ev[c].input_event_usec = s[j][i].tv.tv_usec;
315 data->ev[c].type = EV_ABS;
316 data->ev[c].code = ABS_MT_TOOL_X;
317 data->ev[c].value = s[j][i].tool_x;
318 c++;
319
320- data->ev[c].time = s[j][i].tv;
321+ data->ev[c].input_event_sec = s[j][i].tv.tv_sec;
322+ data->ev[c].input_event_usec = s[j][i].tv.tv_usec;
323 data->ev[c].type = EV_ABS;
324 data->ev[c].code = ABS_MT_TOOL_Y;
325 data->ev[c].value = s[j][i].tool_y;
326 c++;
327
328- data->ev[c].time = s[j][i].tv;
329+ data->ev[c].input_event_sec = s[j][i].tv.tv_sec;
330+ data->ev[c].input_event_usec = s[j][i].tv.tv_usec;
331 data->ev[c].type = EV_ABS;
332 data->ev[c].code = ABS_MT_ORIENTATION;
333 data->ev[c].value = s[j][i].orientation;
334 c++;
335
336- data->ev[c].time = s[j][i].tv;
337+ data->ev[c].input_event_sec = s[j][i].tv.tv_sec;
338+ data->ev[c].input_event_usec = s[j][i].tv.tv_usec;
339 data->ev[c].type = EV_ABS;
340 data->ev[c].code = ABS_MT_DISTANCE;
341 data->ev[c].value = s[j][i].distance;
342 c++;
343
344- data->ev[c].time = s[j][i].tv;
345+ data->ev[c].input_event_sec = s[j][i].tv.tv_sec;
346+ data->ev[c].input_event_usec = s[j][i].tv.tv_usec;
347 data->ev[c].type = EV_ABS;
348 data->ev[c].code = ABS_MT_BLOB_ID;
349 data->ev[c].value = s[j][i].blob_id;
350 c++;
351
352- data->ev[c].time = s[j][i].tv;
353+ data->ev[c].input_event_sec = s[j][i].tv.tv_sec;
354+ data->ev[c].input_event_usec = s[j][i].tv.tv_usec;
355 data->ev[c].type = EV_ABS;
356 data->ev[c].code = ABS_MT_TRACKING_ID;
357 data->ev[c].value = s[j][i].tracking_id;
358 c++;
359
360 if (data->mt_type_a == 1) {
361- data->ev[c].time = s[j][i].tv;
362+ data->ev[c].input_event_sec = s[j][i].tv.tv_sec;
363+ data->ev[c].input_event_usec = s[j][i].tv.tv_usec;
364 data->ev[c].type = EV_SYN;
365 data->ev[c].code = SYN_MT_REPORT;
366 data->ev[c].value = 0;
367@@ -302,7 +322,8 @@ static int send_touch_events(struct data_t *data, struct ts_sample_mt **s,
368 }
369
370 if (s[j][i].pen_down == 0) {
371- data->ev[c].time = s[j][i].tv;
372+ data->ev[c].input_event_sec = s[j][i].tv.tv_sec;
373+ data->ev[c].input_event_usec = s[j][i].tv.tv_usec;
374 data->ev[c].type = EV_KEY;
375 data->ev[c].code = BTN_TOUCH;
376 data->ev[c].value = s[j][i].pen_down;
377@@ -312,7 +333,8 @@ static int send_touch_events(struct data_t *data, struct ts_sample_mt **s,
378 }
379
380 if (c > 0) {
381- data->ev[c].time = s[j][i].tv;
382+ data->ev[c].input_event_sec = s[j][i].tv.tv_sec;
383+ data->ev[c].input_event_usec = s[j][i].tv.tv_usec;
384 data->ev[c].type = EV_SYN;
385 data->ev[c].code = SYN_REPORT;
386 data->ev[c].value = 0;
387--
3882.24.0
389
diff --git a/meta-oe/recipes-graphics/tslib/tslib_1.21.bb b/meta-oe/recipes-graphics/tslib/tslib_1.21.bb
index 2bc40d9391..bb28ee410c 100644
--- a/meta-oe/recipes-graphics/tslib/tslib_1.21.bb
+++ b/meta-oe/recipes-graphics/tslib/tslib_1.21.bb
@@ -14,6 +14,7 @@ LIC_FILES_CHKSUM = "\
14" 14"
15 15
16SRC_URI = "https://github.com/kergoth/tslib/releases/download/${PV}/tslib-${PV}.tar.xz;downloadfilename=tslib-${PV}.tar.xz \ 16SRC_URI = "https://github.com/kergoth/tslib/releases/download/${PV}/tslib-${PV}.tar.xz;downloadfilename=tslib-${PV}.tar.xz \
17 file://0001-Fix-build-on-32bit-arches-with-64bit-time_t.patch \
17 file://ts.conf \ 18 file://ts.conf \
18 file://tslib.sh \ 19 file://tslib.sh \
19" 20"