The BluePAD is a tablet PC.
It includes:
Here is a short list of PCI devices:
Bus | Dev | Func | VID | PID | Class | Irq | PCI device |
---|---|---|---|---|---|---|---|
00 | 00 | 00 | 1078 | 0001 | Host Bridge | NA | PCI Master |
00 | 0D | 00 | 10EC | 8139 | Ethernet | 11 | RT8139 Ethernet |
00 | 0E | 00 | 109E | 036E | Video | 6 | Bt878 Video Capture |
00 | 0E | 01 | 109E | 0878 | Multimedia | 6 | Bt878 Audio Capture |
00 | 0F | 00 | 1013 | 1100 | PCMCIA Bridge | 10 | Cirrus Logic CL 6729 |
00 | 12 | 00 | 1078 | 0100 | ISA Bridge | NA | 5530 Legacy (Kahlua) |
00 | 12 | 01 | 1078 | 0101 | PCI Bridge | NA | 5530 SMI (Kahlua) |
00 | 12 | 02 | 1078 | 0102 | IDE Controller | NA | 5530 IDE (Kahlua) |
00 | 12 | 03 | 1078 | 0103 | Audio | NA | 5530 Audio (Kahlua) |
00 | 12 | 04 | 1078 | 0104 | VGA Display | NA | 5530 Video (Kahlua) |
00 | 13 | 00 | 0E11 | A0F8 | Serial Bus | 11 | ZFMicro Chipset USB |
Enter BIOS by pressing the "Del." key. To boot on the 'external' HDD, change the BIOS settings so that:
DRIVE ASSIGNMENT ORDER | BOOT ORDER |
---|---|
Drive C: Ide 2/Sec Master | Boot 1st: Drive C: |
Drive D: Ide 0/Pri Master | Boot 2nd: Drive D: |
To boot on the internal flash drive, invert the drive assignment order.
Here is a working linux-2.6.20 .config file (note that the squashfs patch was applied to this kernel).
Xorg is working fine with either the cyrix
or the fbdev
drivers. If you're using cyrix
, you get some kind of acceleration, but loose the console; if you use fbdev
, you keep the console useable, but loose the (somewhat inexistant) acceleration. The kernel has good framebuffer support for the geode, so I suggest using that.
The touchscreen data is available from ttyS1, apparently @ 9600 bauds. Below is a dump of some data obtained with the following commands and the stylus sliding along the bottom right edge of the screen, from left to right:
stty -F /dev/ttyS1 9600 -parenb cs8 -hupcl -cstopb ignbrk \ -icrnl-ixon -ixoff -opost -onlcr -isig -icanon -iexten \ -echo -echoe -echok -echoctl -echoke hexdump -v -e '"%06.6_ax " 4/2 "%04x " "\n"' /dev/ttyS1
And here is the dump:
000000 3302 0186 0050 03e4 000008 4402 0186 0050 0393 000010 4402 0186 0050 0393 000018 4402 0188 0050 039d 000020 4402 0188 0050 039d 000028 4402 018b 0051 039f 000030 4402 018b 0051 039f 000038 4402 018d 0051 0399 000040 4402 018d 0051 0399 000048 4402 0192 0050 0387 000050 4402 0199 0050 038c 000058 4402 019e 0050 038b 000060 4402 01a4 0050 03b1 000068 4402 01ab 0050 03be 000070 4402 01b2 0050 03a7 000078 4402 01ba 0050 03af 000080 4402 01c2 0050 03d7 000088 4402 01cc 0050 03d9 000090 4402 01d6 0050 03c3 000098 4402 01e1 0050 03f4 0000a0 4402 01ed 0050 03f8 0000a8 4402 01f9 0050 03ec 0000b0 4402 0206 0050 0310 0000b8 4402 0212 0050 0304 0000c0 4402 021e 0050 0308 0000c8 4402 0229 0050 033f 0000d0 4402 0232 0050 0324 0000d8 4402 023a 0051 032d 0000e0 4402 0240 0050 0356 0000e8 4402 0245 0050 0353 0000f0 4402 0245 0050 0353 0000f8 4402 0248 0050 035e 000100 5502 0248 0050 034f
With a bit more of data, we can see that:
Bytes | b0 | b1 | b2-b3 | b4-b5 | b6 | b7 |
---|---|---|---|---|---|---|
Description | stylus | constant | X coordinates | Y coordinates | constant | XOR |
Range | 0x 33 : stylus on0x 44 : stylus move1)0x 55 : stylus off | 0x 02 | 0x 0025 -0x 03df | 0x 004e -0x03d7 | 0x 03 | =xor(b0,b2,b3,b4,b5) |
So here are the reported coordinates for my touchscreen:
Left | _ _ _ _ _ _ _ _ | Right | |
---|---|---|---|
Top | X=0x 0026 Y=0x 03d7 | X=0x 03de Y=0x 03d9 |
|
! ! ! ! | |||
Bottom | X=0x 0029 Y=0x 004f | X=0x 03de Y=0x 0052 |
We still have to find which Xorg
or kernel driver supports this touchscreen (should be quite easy).
20070402 - Update: I have found neither a kernel- nor Xorg-side driver for this touchpad. I'm currently reading docs and code about Xorg input drivers, and will write one when I get some more time.
(More to comeā¦)
A page on the BluePAD by Julian Coccia.