ts_calibrate with 18bpp screen
Sergey Alyoshin
alyoshin.s at gmail.com
Thu Nov 19 07:04:47 EST 2009
On Thu, Nov 19, 2009 at 2:57 PM, Patrick <kpa_info at yahoo.fr> wrote:
> Hello all,
>
> ts_calibrate (package from angstöm) doesn't work with 18bpp screen. The screen is always black and the little white cross doesn't appear. I think it's because pixel coding format.
>
> Is there a special version of ts_calibrate, or a patch, to work with 18bpp screen ?
>
# This patch allow ts_calibrate and ts_test from tslib
# to show on 18/24 bpp (bits_per_pixel/nonstd).
diff -ur tslib-0.0.2.orig/tests/fbutils.c tslib-0.0.2/tests/fbutils.c
--- tslib-0.0.2.orig/tests/fbutils.c 2004-10-20 02:01:27.000000000 +0400
+++ tslib-0.0.2/tests/fbutils.c 2008-09-26 11:56:19.000000000 +0400
@@ -135,7 +135,7 @@
}
memset(fbuffer,0,fix.smem_len);
- bytes_per_pixel = (var.bits_per_pixel + 7) / 8;
+ bytes_per_pixel = (var.nonstd ? var.nonstd : var.bits_per_pixel + 7) / 8;
line_addr = malloc (sizeof (__u32) * var.yres_virtual);
addr = 0;
for (y = 0; y < var.yres_virtual; y++, addr += fix.line_length)
@@ -247,6 +247,7 @@
perror("ioctl FBIOPUTCMAP");
break;
case 2:
+ case 3:
case 4:
red = (value >> 16) & 0xff;
green = (value >> 8) & 0xff;
@@ -274,6 +275,17 @@
else
*loc.p16 = color;
break;
+ case 3:
+ if (xormode) {
+ *loc.p8 ^= color;
+ *(loc.p8 + 1) ^= color>>8;
+ *(loc.p8 + 2) ^= color>>16;
+ } else {
+ *loc.p8 = color;
+ *(loc.p8 + 1) = color>>8;
+ *(loc.p8 + 2) = color>>16;
+ }
+ break;
case 4:
if (xormode)
*loc.p32 ^= color;
More information about the linux-arm
mailing list