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