-
Notifications
You must be signed in to change notification settings - Fork 46
/
README.txt
148 lines (103 loc) · 5.16 KB
/
README.txt
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
Update
======
This version hasn't been worked on in a long time.
It was to scratch an itch which has long since gone.
A far more maintained fork is:
https://github.com/onitake/gslx680-acpi
About
=====
This is a gslx680 driver for the sunxi (AllWinner) platform.
The aim is to make the gslx680 usable with a GNU/Linux build.
The Android build has not been removed, but it has not been tested.
The source was originally from:
http://code.google.com/p/yuandao-n90-window-dual-core-2/source/browse/drivers/input/touchscreen/gslx680_ts.c
This was the only source for the gslx680 available.
It has been:
* Ported to the sunxi platform (AllWinner).
* Changed to load firmware from a separate file.
* Given extracted firmware from an Android driver for a 7inch A13
tablet.
* Modified to also support normal single point touch alongside the
existing multi touch.
Firmware Instructions
=====================
The firmware included is from a 7inch tablet with a 800x480 screen.
If this is does not match your tablet, you will need to extract the
firmware from the existing Android tablet.
It will be under a path like:
/system/vendor/modules/gslx680.ko
Copy this to a SD card or use a GNU/Linux chroot to scp it over, or use
adb pull.
On your build machine, on the command line, use the script
'firmware/fw_extractor' to extract the firmware to its own file.
./firmware/fw_extractor my_android_gslx680.ko my_tablets.fw
The Android driver may well contain multiple firmwares to support
different hardware configurations with the same driver. The extractor
will spit those out as seperate files. We currently have no way of
knowing which is right for your device. You will have to try each.
Build Instructions
==================
Open the file Makefile in your text editor of choice. Change the second
line, the KDIR variable, to the build folder of your kernel.
Ensuring you have your armhf cross compiling folder in PATH (for gcc),
on the command line, build the module with the command:
make
Install Instructions
====================
You will need to generate a new script.bin from a modified fex file.
You should already be using a fex file generated from your script.bin
from your Android device. Find the ctp_para section.
Ensure the lines:
ctp_used = 1
ctp_name = "gslx680"
ctp_twi_id = 1
ctp_twi_addr = 0x40
On some devices the driver is a hack and isn't using the fex system
properly or is doing some unknown interaction with semi documented
autotp sections. So the matching parameters in ctp_para may have
different values.
Add the line:
ctp_firmware = "my_tablets.fw"
But using the name of the file of the firmware you wish to use.
Create a new script.bin.
Copy the new script.bin to the SD card you are booting from.
Copy your firmware file to /lib/firmware/ on your GNU/Linux install
(probably also on the SD card).
Copy your gslx680_ts.ko to a your GNU/Linux install.
Boot your device into GNU/Linux.
Insert the gslx680_ts.ko module (insmod gslx680_ts.ko).
Using 'dmesg' you should see something like:
[ 64.130000] ===========================gslx680_ts_init=====================
[ 64.140000] _fetch_sysconfig_para.
[ 64.160000] gslx680 firmware a13_7inch_800x480.fw.
[ 64.170000] _fetch_sysconfig_para: after: ctp_twi_addr is 0x40, dirty_addr_buf: 0x40. dirty_addr_buf[1]: 0xfffe
[ 64.180000] _fetch_sysconfig_para: ctp_twi_id is 1.
[ 64.190000] _fetch_sysconfig_para: screen_max_x = 800.
[ 64.200000] _fetch_sysconfig_para: screen_max_y = 480.
[ 64.210000] _fetch_sysconfig_para: revert_x_flag = 1.
[ 64.220000] _fetch_sysconfig_para: revert_y_flag = 0.
[ 64.230000] _fetch_sysconfig_para: exchange_x_y_flag = 0.
[ 64.240000] ctp_detect: Detected chip gslx680 at adapter 1, address 0x40
[ 64.260000] ====gslx680_ts_probe begin=====.
[ 64.280000] ==kzalloc success=
[ 64.280000] [GSLX680] Enter gsl_ts_init_ts
[ 64.300000] ctp_set_irq_mode: config gpio to int mode.
[ 64.310000] ctp_set_irq_mode, 924: gpio_int_info, port = 7, port_num = 11.
[ 64.320000] INTERRUPT CONFIG
[ 64.340000] input: gslx680 as /devices/platform/sunxi-i2c.1/i2c-1/1-0040/input/input1
[ 64.460000] =============gsl_load_fw start==============
[ 65.460000] =============gsl_load_fw end==============
[ 65.780000] ==gslx680_ts_probe over =
Use 'evtest' to check it is working. Select the gslx680. Touch the
screen, you should see something like:
Event: time 1377032989.427032, ++++++++++++++ SYN_MT_REPORT ++++++++++++
Event: time 1377032989.427036, type 3 (EV_ABS), code 0 (ABS_X), value 171
Event: time 1377032989.427039, type 3 (EV_ABS), code 1 (ABS_Y), value 225
Event: time 1377032989.427044, type 3 (EV_ABS), code 57 (ABS_MT_TRACKING_ID), value 3
Event: time 1377032989.427047, type 3 (EV_ABS), code 48 (ABS_MT_TOUCH_MAJOR), value 10
Event: time 1377032989.427050, type 3 (EV_ABS), code 53 (ABS_MT_POSITION_X), value 171
Event: time 1377032989.427054, type 3 (EV_ABS), code 54 (ABS_MT_POSITION_Y), value 225
Event: time 1377032989.427057, type 3 (EV_ABS), code 50 (ABS_MT_WIDTH_MAJOR), value 1
Event: time 1377032989.427060, ++++++++++++++ SYN_MT_REPORT ++++++++++++
All is well, ensure you have the xserver-xorg-input-evdev installed
before trying X. Only single point touch is enabled as standard.