diff options
5 files changed, 712 insertions, 0 deletions
diff --git a/meta-oe/recipes-graphics/xtscal/xtscal/30xTs_Calibrate.sh b/meta-oe/recipes-graphics/xtscal/xtscal/30xTs_Calibrate.sh new file mode 100644 index 0000000000..fa43617bd2 --- /dev/null +++ b/meta-oe/recipes-graphics/xtscal/xtscal/30xTs_Calibrate.sh | |||
| @@ -0,0 +1,13 @@ | |||
| 1 | #!/bin/sh | ||
| 2 | |||
| 3 | . /etc/formfactor/config | ||
| 4 | |||
| 5 | if [ "$HAVE_TOUCHSCREEN" = "1" ]; then | ||
| 6 | n=1 | ||
| 7 | while [ ! -z $TSLIB_TSDEVICE ] && [ ! -f /etc/pointercal ] && [ $n -le 5 ] | ||
| 8 | do | ||
| 9 | /usr/bin/xtscal | ||
| 10 | sleep 1 | ||
| 11 | n=$(($n+1)) | ||
| 12 | done | ||
| 13 | fi | ||
diff --git a/meta-oe/recipes-graphics/xtscal/xtscal/change-cross.patch b/meta-oe/recipes-graphics/xtscal/xtscal/change-cross.patch new file mode 100644 index 0000000000..1da7717869 --- /dev/null +++ b/meta-oe/recipes-graphics/xtscal/xtscal/change-cross.patch | |||
| @@ -0,0 +1,18 @@ | |||
| 1 | Upstream-Status: Pending | ||
| 2 | |||
| 3 | --- tmp/main.c.orig 2007-01-02 15:39:54.000000000 +0000 | ||
| 4 | +++ tmp/main.c 2007-01-02 15:39:54.000000000 +0000 | ||
| 5 | @@ -131,9 +131,10 @@ | ||
| 6 | { | ||
| 7 | XRenderFillRectangles (dpy, PictOpSrc, pict, &rect_color, rectangles, 2); | ||
| 8 | |||
| 9 | - XFillArc (dpy, crosshair_w, crosshair_gc, (CROSSHAIR_SIZE / 2) - (WIDTH / 2) - 1, | ||
| 10 | - (CROSSHAIR_SIZE / 2) - (WIDTH / 2) - 1, | ||
| 11 | - WIDTH + 1, WIDTH + 1, 0, 360 * 64); | ||
| 12 | + XFillRectangle (dpy, crosshair_w, crosshair_gc, | ||
| 13 | + (CROSSHAIR_SIZE / 2) - (WIDTH / 2), | ||
| 14 | + (CROSSHAIR_SIZE / 2) - (WIDTH / 2), | ||
| 15 | + WIDTH, WIDTH); | ||
| 16 | } | ||
| 17 | |||
| 18 | void | ||
diff --git a/meta-oe/recipes-graphics/xtscal/xtscal/cleanup.patch b/meta-oe/recipes-graphics/xtscal/xtscal/cleanup.patch new file mode 100644 index 0000000000..f7b0854c34 --- /dev/null +++ b/meta-oe/recipes-graphics/xtscal/xtscal/cleanup.patch | |||
| @@ -0,0 +1,621 @@ | |||
| 1 | --- | ||
| 2 | Makefile.am | 9 -- | ||
| 3 | configure.ac | 3 | ||
| 4 | gpe-dist.am | 12 --- | ||
| 5 | h3600_ts.h | 216 ----------------------------------------------------------- | ||
| 6 | main.c | 210 ++------------------------------------------------------- | ||
| 7 | xtscal.in | 19 ----- | ||
| 8 | 6 files changed, 14 insertions(+), 455 deletions(-) | ||
| 9 | |||
| 10 | Upstream-Status: Pending | ||
| 11 | |||
| 12 | Index: xtscal-0.6.3/xtscal.in | ||
| 13 | =================================================================== | ||
| 14 | --- xtscal-0.6.3.orig/xtscal.in 2004-09-10 20:10:36.000000000 +0100 | ||
| 15 | +++ /dev/null 1970-01-01 00:00:00.000000000 +0000 | ||
| 16 | @@ -1,19 +0,0 @@ | ||
| 17 | -#!/bin/sh | ||
| 18 | - | ||
| 19 | -module_id() { | ||
| 20 | - # Get model name | ||
| 21 | - echo `grep "^Hardware" /proc/cpuinfo | sed -e "s/.*: *//" | tr a-z A-Z` | ||
| 22 | -} | ||
| 23 | - | ||
| 24 | -case `module_id` in | ||
| 25 | - "HP IPAQ H3100" | "HP IPAQ H3800" ) | ||
| 26 | - ARGS="-rotate 90" ;; | ||
| 27 | - "HP IPAQ H3600" | "HP IPAQ H3700" | "HP IPAQ H3900" | *COLLIE | *POODLE) | ||
| 28 | - ARGS="-rotate 270" ;; | ||
| 29 | - # H2200: works without rotation | ||
| 30 | -esac | ||
| 31 | - | ||
| 32 | -# the things we do for autoconf | ||
| 33 | -prefix=@prefix@ | ||
| 34 | -exec_prefix=@exec_prefix@ | ||
| 35 | -exec @libexecdir@/xtscal.bin $ARGS $* | ||
| 36 | Index: xtscal-0.6.3/main.c | ||
| 37 | =================================================================== | ||
| 38 | --- xtscal-0.6.3.orig/main.c 2007-07-01 01:12:52.000000000 +0100 | ||
| 39 | +++ xtscal-0.6.3/main.c 2007-07-01 01:12:55.000000000 +0100 | ||
| 40 | @@ -22,12 +22,10 @@ | ||
| 41 | #include <X11/Xlib.h> | ||
| 42 | |||
| 43 | #include <X11/extensions/Xrender.h> | ||
| 44 | -#include <X11/extensions/Xrandr.h> | ||
| 45 | #include <X11/Xft/Xft.h> | ||
| 46 | #include <X11/extensions/xcalibrate.h> | ||
| 47 | #include <X11/keysym.h> | ||
| 48 | |||
| 49 | -#include "h3600_ts.h" | ||
| 50 | #include "calibrate.h" | ||
| 51 | |||
| 52 | Display *dpy; | ||
| 53 | @@ -45,15 +43,11 @@ XftColor xftcol; | ||
| 54 | XftDraw *xftdraw; | ||
| 55 | XftFont *xftfont; | ||
| 56 | int screen_x, screen_y; | ||
| 57 | -int ts_fd; | ||
| 58 | int samples; | ||
| 59 | Pixmap bg_pixmap; | ||
| 60 | int flag_debug; | ||
| 61 | -int rotation = 0; | ||
| 62 | int error_base, event_base; | ||
| 63 | |||
| 64 | -int using_xcalibrate; | ||
| 65 | - | ||
| 66 | int moving; | ||
| 67 | |||
| 68 | #define CROSSHAIR_SIZE 25 | ||
| 69 | @@ -63,7 +57,6 @@ int moving; | ||
| 70 | #define ENOUGH 5 | ||
| 71 | #define MAX_SAMPLES 40 | ||
| 72 | |||
| 73 | -#define RAW_DEVICE "/dev/h3600_tsraw" | ||
| 74 | #define FONTNAME "sans-10" | ||
| 75 | |||
| 76 | struct point | ||
| 77 | @@ -287,12 +280,8 @@ sort_by_y (const void* a, const void *b) | ||
| 78 | void | ||
| 79 | set_calibration (calibration *cal) | ||
| 80 | { | ||
| 81 | - TS_CAL tc; | ||
| 82 | - int xtrans, ytrans, xscale, yscale, xyscale, yxscale; | ||
| 83 | calibration ocal = *cal; | ||
| 84 | |||
| 85 | - if (using_xcalibrate) | ||
| 86 | - { | ||
| 87 | FILE *fp; | ||
| 88 | if (flag_debug) | ||
| 89 | printf ("constants are: %d %d %d %d %d %d %d\n", cal->a[1], cal->a[2], cal->a[0], cal->a[4], cal->a[5], cal->a[3], cal->a[6]); | ||
| 90 | @@ -304,29 +293,6 @@ set_calibration (calibration *cal) | ||
| 91 | } | ||
| 92 | fprintf (fp, "%d %d %d %d %d %d %d\n", cal->a[1], cal->a[2], cal->a[0], cal->a[4], cal->a[5], cal->a[3], cal->a[6]); | ||
| 93 | fclose (fp); | ||
| 94 | - return; | ||
| 95 | - } | ||
| 96 | - | ||
| 97 | - xtrans = cal->a[0] / cal->a[6]; | ||
| 98 | - ytrans = cal->a[3] / cal->a[6]; | ||
| 99 | - xscale = cal->a[1] * 256 / cal->a[6]; | ||
| 100 | - yscale = cal->a[5] * 256 / cal->a[6]; | ||
| 101 | - xyscale = cal->a[2] * 256 / cal->a[6]; | ||
| 102 | - yxscale = cal->a[4] * 256 / cal->a[6]; | ||
| 103 | - | ||
| 104 | - tc.xtrans = xtrans; | ||
| 105 | - tc.ytrans = ytrans; | ||
| 106 | - tc.xscale = xscale; | ||
| 107 | - tc.yscale = yscale; | ||
| 108 | - tc.xyswap = 0; | ||
| 109 | - | ||
| 110 | - printf ("%d %d %d %d %d\n", tc.xscale, tc.xtrans, tc.yscale, tc.ytrans, tc.xyswap); | ||
| 111 | - | ||
| 112 | - if (ioctl (ts_fd, TS_SET_CAL, (void *)&tc) != 0) | ||
| 113 | - { | ||
| 114 | - perror ("TS_SET_CAL"); | ||
| 115 | - exit (1); | ||
| 116 | - } | ||
| 117 | } | ||
| 118 | |||
| 119 | void | ||
| 120 | @@ -398,80 +364,13 @@ handle_ts_event (int x, int y, int press | ||
| 121 | } | ||
| 122 | |||
| 123 | void | ||
| 124 | -read_ts (void) | ||
| 125 | -{ | ||
| 126 | - TS_EVENT ts_ev; | ||
| 127 | - int r; | ||
| 128 | - | ||
| 129 | - r = read (ts_fd, &ts_ev, sizeof (ts_ev)); | ||
| 130 | - if (r == sizeof (ts_ev)) | ||
| 131 | - handle_ts_event (ts_ev.x, ts_ev.y, ts_ev.pressure); | ||
| 132 | -} | ||
| 133 | - | ||
| 134 | -void | ||
| 135 | -do_cal (char **args) | ||
| 136 | -{ | ||
| 137 | - TS_CAL tc; | ||
| 138 | - | ||
| 139 | - tc.xscale = atoi (args[0]); | ||
| 140 | - tc.xtrans = atoi (args[1]); | ||
| 141 | - tc.yscale = atoi (args[2]); | ||
| 142 | - tc.ytrans = atoi (args[3]); | ||
| 143 | - tc.xyswap = atoi (args[4]); | ||
| 144 | - | ||
| 145 | - if (flag_debug) | ||
| 146 | - fprintf (stderr, "setting: %d %d %d %d %d\n", | ||
| 147 | - tc.xtrans, tc.ytrans, tc.xscale, tc.yscale, tc.xyswap); | ||
| 148 | - | ||
| 149 | - if (ioctl (ts_fd, TS_SET_CAL, (void *)&tc) != 0) | ||
| 150 | - { | ||
| 151 | - perror ("TS_SET_CAL"); | ||
| 152 | - exit (1); | ||
| 153 | - } | ||
| 154 | - | ||
| 155 | - exit (0); | ||
| 156 | -} | ||
| 157 | - | ||
| 158 | -void | ||
| 159 | -show_cal (void) | ||
| 160 | -{ | ||
| 161 | - TS_CAL tc; | ||
| 162 | - | ||
| 163 | - if (ioctl (ts_fd, TS_GET_CAL, (void *)&tc) != 0) | ||
| 164 | - { | ||
| 165 | - perror ("TS_GET_CAL"); | ||
| 166 | - exit (1); | ||
| 167 | - } | ||
| 168 | - | ||
| 169 | - printf ("%d %d %d %d %d\n", tc.xscale, tc.xtrans, tc.yscale, tc.ytrans, tc.xyswap); | ||
| 170 | -} | ||
| 171 | - | ||
| 172 | -void | ||
| 173 | usage (const char *name) | ||
| 174 | { | ||
| 175 | - fprintf (stderr, "usage: %s -view\n", name); | ||
| 176 | - fprintf (stderr, " %s [-rotate <0 | 90 | 180 | 270>]\n", name); | ||
| 177 | - fprintf (stderr, " %s -cal <xs> <xt> <ys> <yt> <xyswap>\n", name); | ||
| 178 | - | ||
| 179 | + fprintf (stderr, "usage: %s [-debug]\n", name); | ||
| 180 | exit (1); | ||
| 181 | } | ||
| 182 | |||
| 183 | int | ||
| 184 | -xrr_supported (void) | ||
| 185 | -{ | ||
| 186 | - int xrr_event_base, xrr_error_base; | ||
| 187 | - int xrr_major, xrr_minor; | ||
| 188 | - | ||
| 189 | - if (XRRQueryExtension (dpy, &xrr_event_base, &xrr_error_base) == False | ||
| 190 | - || XRRQueryVersion (dpy, &xrr_major, &xrr_minor) == 0 | ||
| 191 | - || xrr_major != 1 | ||
| 192 | - || xrr_minor < 1) | ||
| 193 | - return 0; | ||
| 194 | - | ||
| 195 | - return 1; | ||
| 196 | -} | ||
| 197 | - | ||
| 198 | -int | ||
| 199 | main (int argc, char *argv[]) | ||
| 200 | { | ||
| 201 | XSetWindowAttributes attributes; | ||
| 202 | @@ -480,31 +379,11 @@ main (int argc, char *argv[]) | ||
| 203 | int max_fd; | ||
| 204 | GC bg_gc; | ||
| 205 | int i; | ||
| 206 | - int have_xrandr; | ||
| 207 | |||
| 208 | for (i = 1; i < argc; i++) | ||
| 209 | { | ||
| 210 | - if (!strcmp (argv[i], "-view")) | ||
| 211 | - { | ||
| 212 | - show_cal (); | ||
| 213 | - exit (0); | ||
| 214 | - } | ||
| 215 | - else if (!strcmp (argv[i], "-debug")) | ||
| 216 | + if (!strcmp (argv[i], "-debug")) | ||
| 217 | flag_debug = 1; | ||
| 218 | - else if (!strcmp (argv[i], "-cal")) | ||
| 219 | - { | ||
| 220 | - if (argc > (i + 5)) | ||
| 221 | - do_cal (argv + i + 1); | ||
| 222 | - else | ||
| 223 | - usage (argv[0]); | ||
| 224 | - } | ||
| 225 | - else if (!strcmp (argv[i], "-rotate")) | ||
| 226 | - { | ||
| 227 | - if (argc > (i + 1)) | ||
| 228 | - rotation = atoi (argv[++i]); | ||
| 229 | - else | ||
| 230 | - usage (argv[0]); | ||
| 231 | - } | ||
| 232 | else | ||
| 233 | usage (argv[0]); | ||
| 234 | } | ||
| 235 | @@ -531,48 +410,11 @@ main (int argc, char *argv[]) | ||
| 236 | fprintf (stderr, "failed to set raw mode: error %d\n", r); | ||
| 237 | exit (1); | ||
| 238 | } | ||
| 239 | - | ||
| 240 | - using_xcalibrate = 1; | ||
| 241 | - } | ||
| 242 | - | ||
| 243 | - have_xrandr = xrr_supported (); | ||
| 244 | - if (have_xrandr) | ||
| 245 | - { | ||
| 246 | - XRRScreenConfiguration *rr_screen; | ||
| 247 | - Rotation current_rotation; | ||
| 248 | - | ||
| 249 | - if (flag_debug) | ||
| 250 | - fprintf (stderr, "XRANDR is supported\n"); | ||
| 251 | - | ||
| 252 | - rr_screen = XRRGetScreenInfo (dpy, RootWindow (dpy, screen)); | ||
| 253 | - | ||
| 254 | - XRRRotations (dpy, screen, ¤t_rotation); | ||
| 255 | - | ||
| 256 | - XRRFreeScreenConfigInfo (rr_screen); | ||
| 257 | - | ||
| 258 | - if (flag_debug) | ||
| 259 | - fprintf (stderr, "Current RANDR rotation is %d\n", current_rotation); | ||
| 260 | - | ||
| 261 | - switch (current_rotation) | ||
| 262 | - { | ||
| 263 | - case RR_Rotate_270: | ||
| 264 | - rotation += 90; | ||
| 265 | - case RR_Rotate_180: | ||
| 266 | - rotation += 90; | ||
| 267 | - case RR_Rotate_90: | ||
| 268 | - rotation += 90; | ||
| 269 | - rotation %= 360; | ||
| 270 | - case RR_Rotate_0: | ||
| 271 | - break; | ||
| 272 | - default: | ||
| 273 | - fprintf (stderr, "Unknown RANDR rotation: %d\n", current_rotation); | ||
| 274 | - break; | ||
| 275 | - } | ||
| 276 | } | ||
| 277 | else | ||
| 278 | { | ||
| 279 | - if (flag_debug) | ||
| 280 | - fprintf (stderr, "XRANDR not supported\n"); | ||
| 281 | + perror ("XCALIBRATE extension missing"); | ||
| 282 | + exit (1); | ||
| 283 | } | ||
| 284 | |||
| 285 | attributes.override_redirect = flag_debug ? False : True; | ||
| 286 | @@ -666,45 +508,17 @@ main (int argc, char *argv[]) | ||
| 287 | |||
| 288 | for (i = 0; i < NR_POINTS; i++) | ||
| 289 | { | ||
| 290 | - switch (rotation) | ||
| 291 | - { | ||
| 292 | - case 0: | ||
| 293 | - cal.xfb[i] = cal.xscr[i]; | ||
| 294 | - cal.yfb[i] = cal.yscr[i]; | ||
| 295 | - break; | ||
| 296 | - case 90: | ||
| 297 | - cal.xfb[i] = cal.yscr[i]; | ||
| 298 | - cal.yfb[i] = screen_x - cal.xscr[i]; | ||
| 299 | - break; | ||
| 300 | - case 180: | ||
| 301 | - cal.xfb[i] = screen_x - cal.xscr[i]; | ||
| 302 | - cal.yfb[i] = screen_y - cal.yscr[i]; | ||
| 303 | - break; | ||
| 304 | - case 270: | ||
| 305 | - cal.xfb[i] = screen_y - cal.yscr[i]; | ||
| 306 | - cal.yfb[i] = cal.xscr[i]; | ||
| 307 | - break; | ||
| 308 | - } | ||
| 309 | + cal.xfb[i] = cal.xscr[i]; | ||
| 310 | + cal.yfb[i] = cal.yscr[i]; | ||
| 311 | + XCalibrateScreenToCoord (dpy, &cal.xfb[i], &cal.yfb[i]); | ||
| 312 | |||
| 313 | if (flag_debug) | ||
| 314 | - printf ("rotation %d: (%d,%d) -> (%d,%d)\n", rotation, | ||
| 315 | + printf ("rotation conversion: (%d,%d) -> (%d,%d)\n", | ||
| 316 | cal.xscr[i], cal.yscr[i], cal.xfb[i], cal.yfb[i]); | ||
| 317 | } | ||
| 318 | |||
| 319 | next_event (); | ||
| 320 | |||
| 321 | - if (!using_xcalibrate) | ||
| 322 | - { | ||
| 323 | - ts_fd = open (RAW_DEVICE, O_RDONLY); | ||
| 324 | - if (ts_fd < 0) | ||
| 325 | - { | ||
| 326 | - perror (RAW_DEVICE); | ||
| 327 | - exit (1); | ||
| 328 | - } | ||
| 329 | - } | ||
| 330 | - | ||
| 331 | - max_fd = (xfd > ts_fd) ? xfd : ts_fd; | ||
| 332 | - | ||
| 333 | for (;;) | ||
| 334 | { | ||
| 335 | fd_set fds; | ||
| 336 | @@ -713,12 +527,8 @@ main (int argc, char *argv[]) | ||
| 337 | |||
| 338 | FD_ZERO (&fds); | ||
| 339 | FD_SET (xfd, &fds); | ||
| 340 | - if (ts_fd != -1) | ||
| 341 | - FD_SET (ts_fd, &fds); | ||
| 342 | |||
| 343 | - select (max_fd + 1, &fds, NULL, NULL, NULL); | ||
| 344 | - | ||
| 345 | - if (ts_fd != -1 && FD_ISSET (ts_fd, &fds)) | ||
| 346 | - read_ts (); | ||
| 347 | + select (xfd + 1, &fds, NULL, NULL, NULL); | ||
| 348 | } | ||
| 349 | } | ||
| 350 | + | ||
| 351 | Index: xtscal-0.6.3/configure.ac | ||
| 352 | =================================================================== | ||
| 353 | --- xtscal-0.6.3.orig/configure.ac 2004-09-10 20:11:12.000000000 +0100 | ||
| 354 | +++ xtscal-0.6.3/configure.ac 2007-07-01 01:12:55.000000000 +0100 | ||
| 355 | @@ -9,8 +9,7 @@ AM_INIT_AUTOMAKE([foreign dist-bzip2]) | ||
| 356 | # Checks for programs. | ||
| 357 | AC_PROG_CC | ||
| 358 | |||
| 359 | -PKG_CHECK_MODULES(XTSCAL, x11 xft xext xrandr xcalibrate) | ||
| 360 | +PKG_CHECK_MODULES(XTSCAL, x11 xft xext xcalibrate) | ||
| 361 | |||
| 362 | AC_CONFIG_FILES([Makefile]) | ||
| 363 | -AC_CONFIG_FILES([xtscal]) | ||
| 364 | AC_OUTPUT | ||
| 365 | Index: xtscal-0.6.3/gpe-dist.am | ||
| 366 | =================================================================== | ||
| 367 | --- xtscal-0.6.3.orig/gpe-dist.am 2004-06-02 23:07:13.000000000 +0100 | ||
| 368 | +++ /dev/null 1970-01-01 00:00:00.000000000 +0000 | ||
| 369 | @@ -1,12 +0,0 @@ | ||
| 370 | -CVSTAG := $(shell echo $(PACKAGE)-$(VERSION) | tr [a-z.] [A-Z_]) | ||
| 371 | - | ||
| 372 | -dist-upload: dist | ||
| 373 | - scp $(PACKAGE)-$(VERSION).tar.bz2 $(USER)@handhelds.org:/home/ftp/pub/projects/gpe/source/ | ||
| 374 | - | ||
| 375 | -tag: | ||
| 376 | - cvs tag $(CVSTAG) | ||
| 377 | - | ||
| 378 | -retag: | ||
| 379 | - cvs tag -F $(CVSTAG) | ||
| 380 | - | ||
| 381 | -source: tag dist-upload | ||
| 382 | Index: xtscal-0.6.3/h3600_ts.h | ||
| 383 | =================================================================== | ||
| 384 | --- xtscal-0.6.3.orig/h3600_ts.h 2003-07-05 17:27:10.000000000 +0100 | ||
| 385 | +++ /dev/null 1970-01-01 00:00:00.000000000 +0000 | ||
| 386 | @@ -1,216 +0,0 @@ | ||
| 387 | -/* | ||
| 388 | -* | ||
| 389 | -* Driver for the H3600 Touch Screen and other Atmel controlled devices. | ||
| 390 | -* | ||
| 391 | -* Copyright 2000 Compaq Computer Corporation. | ||
| 392 | -* | ||
| 393 | -* Use consistent with the GNU GPL is permitted, | ||
| 394 | -* provided that this copyright notice is | ||
| 395 | -* preserved in its entirety in all copies and derived works. | ||
| 396 | -* | ||
| 397 | -* COMPAQ COMPUTER CORPORATION MAKES NO WARRANTIES, EXPRESSED OR IMPLIED, | ||
| 398 | -* AS TO THE USEFULNESS OR CORRECTNESS OF THIS CODE OR ITS | ||
| 399 | -* FITNESS FOR ANY PARTICULAR PURPOSE. | ||
| 400 | -* | ||
| 401 | -* Author: Charles Flynn. | ||
| 402 | -* | ||
| 403 | -*/ | ||
| 404 | - | ||
| 405 | - | ||
| 406 | -#ifndef __H3600_TS_H__ | ||
| 407 | -#define __H3600_TS_H__ | ||
| 408 | - | ||
| 409 | -#include <linux/ioctl.h> | ||
| 410 | - | ||
| 411 | -enum h3600_ts_minor_devices { | ||
| 412 | - TS_MINOR = 0, | ||
| 413 | - TSRAW_MINOR = 1, | ||
| 414 | - KEY_MINOR = 2 | ||
| 415 | -}; | ||
| 416 | - | ||
| 417 | -typedef struct h3600_ts_calibration { | ||
| 418 | - int xscale; | ||
| 419 | - int xtrans; | ||
| 420 | - int yscale; | ||
| 421 | - int ytrans; | ||
| 422 | - int xyswap; | ||
| 423 | -} TS_CAL; | ||
| 424 | - | ||
| 425 | -typedef struct h3600_ts_event { | ||
| 426 | - unsigned short pressure; | ||
| 427 | - unsigned short x; | ||
| 428 | - unsigned short y; | ||
| 429 | - unsigned short pad; | ||
| 430 | -} TS_EVENT; | ||
| 431 | - | ||
| 432 | -/* Deprecated - do not use */ | ||
| 433 | -typedef struct h3600_ts_return { | ||
| 434 | - unsigned short pressure; | ||
| 435 | - unsigned short x; | ||
| 436 | - unsigned short y; | ||
| 437 | - unsigned short pad; | ||
| 438 | -} TS_RET; | ||
| 439 | - | ||
| 440 | -enum power_button_mode { | ||
| 441 | - PBM_SUSPEND = 0, | ||
| 442 | - PBM_GENERATE_KEYPRESS = 1 | ||
| 443 | -}; | ||
| 444 | - | ||
| 445 | - | ||
| 446 | -/* ++++++++++++++ +++++++++++++++++++++++++++++++++++++ */ | ||
| 447 | - | ||
| 448 | -typedef struct therm_dev { | ||
| 449 | - short data; | ||
| 450 | -} THERM_DEV; | ||
| 451 | - | ||
| 452 | -#define H3600_BATT_CHEM_ALKALINE 0x01 | ||
| 453 | -#define H3600_BATT_CHEM_NICD 0x02 | ||
| 454 | -#define H3600_BATT_CHEM_NIMH 0x03 | ||
| 455 | -#define H3600_BATT_CHEM_LION 0x04 | ||
| 456 | -#define H3600_BATT_CHEM_LIPOLY 0x05 | ||
| 457 | -#define H3600_BATT_CHEM_NOT_INSTALLED 0x06 | ||
| 458 | -#define H3600_BATT_CHEM_UNKNOWN 0xff | ||
| 459 | - | ||
| 460 | -/* These should match the apm_bios.h definitions */ | ||
| 461 | -#define H3600_AC_STATUS_AC_OFFLINE 0x00 | ||
| 462 | -#define H3600_AC_STATUS_AC_ONLINE 0x01 | ||
| 463 | -#define H3600_AC_STATUS_AC_BACKUP 0x02 /* What does this mean? */ | ||
| 464 | -#define H3600_AC_STATUS_AC_UNKNOWN 0xff | ||
| 465 | - | ||
| 466 | -/* These bitfields are rarely "or'd" together */ | ||
| 467 | -#define H3600_BATT_STATUS_HIGH 0x01 | ||
| 468 | -#define H3600_BATT_STATUS_LOW 0x02 | ||
| 469 | -#define H3600_BATT_STATUS_CRITICAL 0x04 | ||
| 470 | -#define H3600_BATT_STATUS_CHARGING 0x08 | ||
| 471 | -#define H3600_BATT_STATUS_CHARGE_MAIN 0x10 | ||
| 472 | -#define H3600_BATT_STATUS_DEAD 0x20 /* Battery will not charge */ | ||
| 473 | -#define H3600_BATT_NOT_INSTALLED 0x20 /* For expansion pack batteries */ | ||
| 474 | -#define H3600_BATT_STATUS_FULL 0x40 /* Battery fully charged (and connected to AC) */ | ||
| 475 | -#define H3600_BATT_STATUS_NOBATT 0x80 | ||
| 476 | -#define H3600_BATT_STATUS_UNKNOWN 0xff | ||
| 477 | - | ||
| 478 | -struct battery_data { | ||
| 479 | - unsigned char chemistry; | ||
| 480 | - unsigned char status; | ||
| 481 | - unsigned short voltage; /* Voltage for battery #0; unknown for battery #1 */ | ||
| 482 | - unsigned short percentage; /* Percentage of full charge */ | ||
| 483 | - unsigned short life; /* Life remaining in minutes */ | ||
| 484 | -}; | ||
| 485 | - | ||
| 486 | -struct h3600_battery { | ||
| 487 | - unsigned char ac_status; | ||
| 488 | - unsigned char battery_count; /* How many batteries we have */ | ||
| 489 | - struct battery_data battery[2]; | ||
| 490 | -}; | ||
| 491 | - | ||
| 492 | -/* -------- EEPROM and SPI Interfaces ---------------*/ | ||
| 493 | - | ||
| 494 | -#define EEPROM_RD_BUFSIZ 6 /* EEPROM reads are 16 bits */ | ||
| 495 | -#define EEPROM_WR_BUFSIZ 5 /* Allow room for 8bit 'addr' field in buffer*/ | ||
| 496 | -#define SPI_RD_BUFSIZ 16 /* SPI reads are 8 bits */ | ||
| 497 | -#define SPI_WR_BUFSIZ 7 | ||
| 498 | - | ||
| 499 | -/* The EEPROM is where internal programs are stored on the Amtel. | ||
| 500 | - You probably don't want to read or write these values */ | ||
| 501 | - | ||
| 502 | -typedef struct h3600_eeprom_read_request { | ||
| 503 | - unsigned char addr; /* 8bit Address Offset 0-255 */ | ||
| 504 | - unsigned char len; /* Number of 16bit words to read 0-128 */ | ||
| 505 | - unsigned short buff[EEPROM_RD_BUFSIZ]; | ||
| 506 | -} EEPROM_READ; | ||
| 507 | - | ||
| 508 | -typedef struct h3600_eeprom_write_request { | ||
| 509 | - unsigned char len; /* used only to compute the number of bytes to send */ | ||
| 510 | - unsigned char addr; /* 0-128 */ | ||
| 511 | - unsigned short buff[EEPROM_WR_BUFSIZ]; | ||
| 512 | -} EEPROM_WRITE; | ||
| 513 | - | ||
| 514 | -/* The SPI bus connects to EEPROMs located on sleeves plugged into | ||
| 515 | - the iPAQ. You may want to read these values */ | ||
| 516 | - | ||
| 517 | -typedef struct h3600_spi_read_request { | ||
| 518 | - unsigned short addr; /* 16bit Address Offset 0-128 */ | ||
| 519 | - unsigned char len; /* Number of bytes to read */ | ||
| 520 | - unsigned char buff[SPI_RD_BUFSIZ]; | ||
| 521 | -} SPI_READ; | ||
| 522 | - | ||
| 523 | -#define SPI_READ_STATUS_BYTE 0xffff /* Use this address to read the status byte */ | ||
| 524 | - | ||
| 525 | -typedef struct h3600_spi_write_request { | ||
| 526 | - unsigned short len; /* used only to compute the number of bytes to send */ | ||
| 527 | - unsigned short addr; /* this 16bit address accesses a single byte */ | ||
| 528 | - unsigned char buff[SPI_WR_BUFSIZ]; | ||
| 529 | -} SPI_WRITE; | ||
| 530 | - | ||
| 531 | - | ||
| 532 | -/* -------- end of EEPROM and SPI Interfaces ---------------*/ | ||
| 533 | - | ||
| 534 | -/* User space structures for IOCTL calls */ | ||
| 535 | - | ||
| 536 | -typedef struct h3600_ts_version { | ||
| 537 | - unsigned char host_version[8]; /* ascii "x.yy" */ | ||
| 538 | - unsigned char pack_version[8]; /* ascii "x.yy" */ | ||
| 539 | - unsigned char boot_type; /* TODO ?? */ | ||
| 540 | -} VER_RET; | ||
| 541 | - | ||
| 542 | -typedef struct h3600_ts_led { | ||
| 543 | - unsigned char OffOnBlink; /* 0=off 1=on 2=Blink */ | ||
| 544 | - unsigned char TotalTime; /* Units of 5 seconds */ | ||
| 545 | - unsigned char OnTime; /* units of 100m/s */ | ||
| 546 | - unsigned char OffTime; /* units of 100m/s */ | ||
| 547 | -} LED_IN; | ||
| 548 | - | ||
| 549 | -enum flite_mode { | ||
| 550 | - FLITE_MODE1 = 1, | ||
| 551 | - FLITE_AUTO_MODE = 1, /* for reference only */ | ||
| 552 | - FLITE_MANUAL_MODE = 2, /* Use this normally? */ | ||
| 553 | - FLITE_GET_LIGHT_SENSOR = 3 /* Returns light reading in "brightness" field */ | ||
| 554 | -}; | ||
| 555 | -enum flite_pwr { | ||
| 556 | - FLITE_PWR_OFF = 0, | ||
| 557 | - FLITE_PWR_ON = 1 | ||
| 558 | -}; | ||
| 559 | - | ||
| 560 | -typedef struct h3600_ts_flite { | ||
| 561 | - unsigned char mode; | ||
| 562 | - unsigned char pwr; | ||
| 563 | - unsigned char brightness; | ||
| 564 | -} FLITE_IN; | ||
| 565 | - | ||
| 566 | -/*************************** Updated "universal" structures *******************/ | ||
| 567 | - | ||
| 568 | -/* Sets backlight for both H3100 and H3600 models - technically "frontlight" for H3600 */ | ||
| 569 | -struct h3600_ts_backlight { | ||
| 570 | - enum flite_pwr power; /* 0 = off, 1 = on */ | ||
| 571 | - unsigned char brightness; /* 0 - 255 */ | ||
| 572 | -}; | ||
| 573 | - | ||
| 574 | -struct h3600_ts_contrast { /* Only useful on H3100 model */ | ||
| 575 | - unsigned char contrast; /* 0 - 255 */ | ||
| 576 | -}; | ||
| 577 | - | ||
| 578 | -/* IOCTL cmds user or kernel space */ | ||
| 579 | - | ||
| 580 | -/* Use 'f' as magic number */ | ||
| 581 | -#define IOC_H3600_TS_MAGIC 'f' | ||
| 582 | - | ||
| 583 | -/* TODO: Some of these IOWR values are just plain wrong */ | ||
| 584 | -#define GET_VERSION _IOR(IOC_H3600_TS_MAGIC, 1, struct h3600_ts_version ) | ||
| 585 | -#define READ_EEPROM _IOWR(IOC_H3600_TS_MAGIC, 2, struct h3600_eeprom_read_request) | ||
| 586 | -#define WRITE_EEPROM _IOWR(IOC_H3600_TS_MAGIC, 3, struct h3600_eeprom_write_request) | ||
| 587 | -#define GET_THERMAL _IOR(IOC_H3600_TS_MAGIC, 4, struct therm_dev) | ||
| 588 | -#define LED_ON _IOW(IOC_H3600_TS_MAGIC, 5, struct h3600_ts_led) | ||
| 589 | -#define GET_BATTERY_STATUS _IOR(IOC_H3600_TS_MAGIC, 6, struct h3600_battery) | ||
| 590 | -#define FLITE_ON _IOW(IOC_H3600_TS_MAGIC, 7, struct h3600_ts_flite) | ||
| 591 | -#define READ_SPI _IOWR(IOC_H3600_TS_MAGIC, 8, struct h3600_spi_read_request) | ||
| 592 | -#define WRITE_SPI _IOWR(IOC_H3600_TS_MAGIC, 9, struct h3600_spi_write_request) | ||
| 593 | -#define TS_GET_CAL _IOR(IOC_H3600_TS_MAGIC, 10, struct h3600_ts_calibration) | ||
| 594 | -#define TS_SET_CAL _IOW(IOC_H3600_TS_MAGIC, 11, struct h3600_ts_calibration) | ||
| 595 | - | ||
| 596 | -/* New IOCTL interfaces - defined to be more user friendly */ | ||
| 597 | -#define TS_GET_BACKLIGHT _IOR(IOC_H3600_TS_MAGIC, 20, struct h3600_ts_backlight) | ||
| 598 | -#define TS_SET_BACKLIGHT _IOW(IOC_H3600_TS_MAGIC, 20, struct h3600_ts_backlight) | ||
| 599 | -#define TS_GET_CONTRAST _IOR(IOC_H3600_TS_MAGIC, 21, struct h3600_ts_contrast) | ||
| 600 | -#define TS_SET_CONTRAST _IOW(IOC_H3600_TS_MAGIC, 21, struct h3600_ts_contrast) | ||
| 601 | - | ||
| 602 | -#endif | ||
| 603 | Index: xtscal-0.6.3/Makefile.am | ||
| 604 | =================================================================== | ||
| 605 | --- xtscal-0.6.3.orig/Makefile.am 2004-06-02 23:07:13.000000000 +0100 | ||
| 606 | +++ xtscal-0.6.3/Makefile.am 2007-07-02 12:51:02.000000000 +0100 | ||
| 607 | @@ -1,11 +1,8 @@ | ||
| 608 | -libexec_PROGRAMS = xtscal.bin | ||
| 609 | -bin_SCRIPTS = xtscal | ||
| 610 | +bin_PROGRAMS = xtscal | ||
| 611 | |||
| 612 | -xtscal_bin_SOURCES = main.c calibrate.c calibrate.h h3600_ts.h | ||
| 613 | +xtscal_SOURCES = main.c calibrate.c calibrate.h | ||
| 614 | |||
| 615 | -xtscal_bin_LDADD = @XTSCAL_LIBS@ | ||
| 616 | +xtscal_LDADD = @XTSCAL_LIBS@ | ||
| 617 | |||
| 618 | INCLUDES = @XTSCAL_CFLAGS@ -DNR_POINTS=5 | ||
| 619 | |||
| 620 | -include gpe-dist.am | ||
| 621 | - | ||
diff --git a/meta-oe/recipes-graphics/xtscal/xtscal/dso_linking_change_build_fix.patch b/meta-oe/recipes-graphics/xtscal/xtscal/dso_linking_change_build_fix.patch new file mode 100644 index 0000000000..3e4533f785 --- /dev/null +++ b/meta-oe/recipes-graphics/xtscal/xtscal/dso_linking_change_build_fix.patch | |||
| @@ -0,0 +1,27 @@ | |||
| 1 | after gcc linking has changed, all the libraries must be explicitely specified | ||
| 2 | This patch avoids this linking error: | ||
| 3 | |||
| 4 | | ccache i586-poky-linux-gcc -march=i586 --sysroot=/disk0/pokybuild/build1/tmp/sysroots/i586-poky-linux -fexpensive-optimizations -fomit-frame-pointer -frename-registers -O2 -ggdb -feliminate-unused-debug-types -Wl,-O1 -Wl,--hash-style=gnu -Wl,--as-needed -o xtscal main.o calibrate.o -lX11 -lXft -lXext -lXcalibrate^M | ||
| 5 | | /disk0/pokybuild/build1/tmp/sysroots/x86_64-linux/usr/libexec/i586-poky-linux/gcc/i586-poky-linux/4.5.1/ld: ^?: invalid DSO for symbol `XRenderChangePicture' definition^M | ||
| 6 | | /disk0/pokybuild/build1/tmp/sysroots/i586-poky-linux/usr/lib/libXrender.so.1: could not read symbols: Bad value^M | ||
| 7 | | collect2: ld returned 1 exit status^M | ||
| 8 | | make: *** [xtscal] Error 1 | ||
| 9 | |||
| 10 | Nitin A Kamble <nitin.a.kamble@intel.com> | ||
| 11 | Date: 2011/01/11 | ||
| 12 | |||
| 13 | Upstream-Status: Pending | ||
| 14 | |||
| 15 | Index: xtscal-0.6.3/configure.ac | ||
| 16 | =================================================================== | ||
| 17 | --- xtscal-0.6.3.orig/configure.ac | ||
| 18 | +++ xtscal-0.6.3/configure.ac | ||
| 19 | @@ -9,7 +9,7 @@ AM_INIT_AUTOMAKE([foreign dist-bzip2]) | ||
| 20 | # Checks for programs. | ||
| 21 | AC_PROG_CC | ||
| 22 | |||
| 23 | -PKG_CHECK_MODULES(XTSCAL, x11 xft xext xcalibrate) | ||
| 24 | +PKG_CHECK_MODULES(XTSCAL, x11 xft xext xcalibrate xrender) | ||
| 25 | |||
| 26 | AC_CONFIG_FILES([Makefile]) | ||
| 27 | AC_OUTPUT | ||
diff --git a/meta-oe/recipes-graphics/xtscal/xtscal_0.6.3.bb b/meta-oe/recipes-graphics/xtscal/xtscal_0.6.3.bb new file mode 100644 index 0000000000..4bfddf06b5 --- /dev/null +++ b/meta-oe/recipes-graphics/xtscal/xtscal_0.6.3.bb | |||
| @@ -0,0 +1,33 @@ | |||
| 1 | SUMMARY = "Touchscreen calibration utility" | ||
| 2 | |||
| 3 | DESCRIPTION = "Basic touchscreen calibration utility" | ||
| 4 | |||
| 5 | HOMEPAGE = "http://gpe.linuxtogo.org" | ||
| 6 | BUGTRACKER = "http://bugs.linuxtogo.org" | ||
| 7 | LICENSE = "GPLv2 & GPLv2+" | ||
| 8 | LIC_FILES_CHKSUM = "file://COPYING;md5=94d55d512a9ba36caa9b7df079bae19f \ | ||
| 9 | file://main.c;endline=10;md5=8721bcb08ae9f24e5fe4c82941873c87" | ||
| 10 | |||
| 11 | SECTION = "x11/base" | ||
| 12 | |||
| 13 | DEPENDS = "virtual/libx11 libxft libxcalibrate" | ||
| 14 | |||
| 15 | PR = "r13" | ||
| 16 | |||
| 17 | SRC_URI = "${GPE_MIRROR}/xtscal-${PV}.tar.bz2 \ | ||
| 18 | file://change-cross.patch \ | ||
| 19 | file://cleanup.patch \ | ||
| 20 | file://dso_linking_change_build_fix.patch \ | ||
| 21 | file://30xTs_Calibrate.sh" | ||
| 22 | |||
| 23 | SRC_URI[md5sum] = "9bcab80b474d5454477d1ca166a68c34" | ||
| 24 | SRC_URI[sha256sum] = "27b9dc2203de9b1706ca39fa6ca80ecab8807909ec901c4a345b8e41178800a1" | ||
| 25 | |||
| 26 | inherit autotools pkgconfig distro_features_check | ||
| 27 | # depends on virtual/libx11 | ||
| 28 | REQUIRED_DISTRO_FEATURES = "x11" | ||
| 29 | |||
| 30 | do_install_append() { | ||
| 31 | install -d ${D}${sysconfdir}/X11/Xsession.d/ | ||
| 32 | install -m 0755 ${WORKDIR}/30xTs_Calibrate.sh ${D}${sysconfdir}/X11/Xsession.d/ | ||
| 33 | } | ||
