Giter Site home page Giter Site logo

gslx680-acpi's Introduction

About

This is a generic Linux kernel driver for the Silead GSLx68y series of touch screen controllers. It is currently designed to work on ACPI platforms, but support for DeviceTree/OpenFirmware is also in the works.

The code was adapted from the platform specific driver here: https://github.com/jabjoe/sunxi-gslx680

Kernel-based finger tracking is available and can be enabled if the hardware doesn't support it. It works reasonably well, but touches close to the edges are not registered reliably, and dragging is very inaccurate.

Firmware Instructions

The controller requires firmware to work properly. Firmware images extracted from vendor drivers are maintained in a separate repository: https://github.com/onitake/gsl-firmware

If your device is not mentioned yet, or the required silead_ts.fw is not available, please post a request in the issue tracker there, or consult gsl-firmware/README.md for information on how to obtain the firmware yourself.

Build Instructions

If you don't need to cross compile, just make sure you have headers for your running Linux kernel installed, then type

make

This will produce gslx680_ts_acpi.ko

If you need to cross compile, pass appropriate KSRC, ARCH and CROSS_COMPILE variables to the make command. For example:

make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- KSRC=../linux-arm

CROSS_COMPILE is the compiler prefix (i.e. gcc will become arm-linux-gnueabihf-gcc with CROSS_COMPILE=arm-linux-gnueabihf-), ARCH is the target architecture as understood by the kernel (note: use i386 for 32 bit Intel platforms) and KSRC is the path to the target kernel sources or kernel headers.

Install Instructions

Install appropriate firmware for your device, as per the Firmware Instructions above.

Load and test the driver with

insmod ./gslx680_ts_acpi.ko

Running dmesg should produce some output if the device was matched by the driver. You should also see a message from the input subsystem that a new input device was added.

You may then observe the output from evtest. X.org touchscreen input should work too, but you will notice that the touch points are off if the panel width and height were not set accurately.

This can be fixed by installing xinput_calibrator and using it to generate a configuration file for your touchscreen. Some desktop environments may offer their own touchscreen calibrator, which you can also use.

xinput_calibrator, when run from an X terminal, will present a series of points on the screen. Touch each of them when prompted, then save the configuration printed to the terminal to the indicated location.

After restarting X, you should have a working touchscreen.

gslx680-acpi's People

Contributors

barni2000 avatar drt1245 avatar fly206 avatar holzingerm avatar lilstevie avatar onitake avatar tiagosales avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

gslx680-acpi's Issues

3/4 dead zone on CW1529 (Chuwi Hi10 Pro)

on my CW1529 (Chuwi Hi10 Pro), I could not make the touchscreen work properly. maximum that I could achieve is that the touchscreen works in the lower 1/4 part of the screen, but in the rest of the area the cursor is jumping randomly. Also the driver does not take the screen orientation into consideration.

So, for "normal" orientation, which is vertical by default, the best result is achieved with

perl -I tools/ ./tools/fwtool -c firmware/chuwi/hi10_pro/firmware.fw -m 1680 -w 1260 -h 1925 -t 5 -f track,swap /lib/firmware/silead_ts.fw

If I do xrandr -o right, and the screen is usable with the docked keyboard, the firmware needs different parameters:

perl -I tools/ ./tools/fwtool -c firmware/chuwi/hi10_pro/firmware.fw -m 1680 -w 1925 -h 1260 -t 5 -f track,yflip /lib/firmware/silead_ts.fw

I've got the original MMC image. Should I look for a newer firmware on it? Where approximately?

New firmware needed... Teclast X98 II Plus...

Greatings,

Please, would it be possible to extract a firmware from my Windows 10 ".sys" driver ?
I don't really feel I can do that by myself, so I would really appreciate a little help, if possible...
I really wish to use the tablet with ubuntu. Everything works great except the touchscreen... The screen by itself is 1536 x 2048 pixels.

I hope you will be able to take a look at this request. I thank you so much in advance.

SileadTouch.zip

Touchscreen not working after kernel update (Chuwi surbook mini)

Hi,

I have a Chuwi Surbook and I install an Ubuntu Gnome 16.04 LTS. Everything works fine on the first kernel:

# uname -r
4.13.0-41-generic

But after an apt update the kernel is 4.13.0-43-generic don't work with the acpi driver.
So I have try to go back on the first kernel by doing

apt purge linux-image-4.13.0-43-generic

But it still no work. Here the result of my dmesg:

[  142.265170] gslx680 i2c-MSSL1680:00: gsl_ts_probe: got a device named MSSL1680:00 at address 0x40, IRQ 143, flags 0x0
[  142.413973] gslx680 i2c-MSSL1680:00: Direct firmware load for silead_ts.fw failed with error -2
[  142.413985] gslx680 i2c-MSSL1680:00: gsl_ts_probe: failed to load firmware: -2
[  142.414455] gslx680: probe of i2c-MSSL1680:00 failed with error -2

cube i10w

i need help with the fw files that i pulled from my tablet's.ko, i need to know how do i use these in the Makefile?

make not working (Ubuntu 21.04)

Hello,

I am trying to run make in the gslx680-acpi folder but I get this error:

Skipping BTF generation for /tmp/gslx680-acpi/gslx680_ts_acpi.ko due to unavailability of vmlinux

Does anyone know how i can solve this error?
I am using this compiler: gcc (Ubuntu 10.3.0-1ubuntu1) 10.3.0

make not working

Hello,

I'm trying to run make and get an error:

gslx680-acpi-master/gslx680_ts_acpi.c:753:19: error: initialization of ‘void (*)(struct i2c_client *)’ from incompatible pointer type ‘int (*)(struct i2c_client *)’ [-Werror=incompatible-pointer-types]
  753 |         .remove = gsl_ts_remove,

My kernel is:

Linux pctest 6.1.1-arch1-1 #1 SMP PREEMPT_DYNAMIC Wed, 21 Dec 2022 22:27:55 +0000 x86_64 GNU/Linux

Then I modified the code:

diff -urN a/gslx680_ts_acpi.c b/gslx680_ts_acpi.c
--- a/gslx680_ts_acpi.c	2016-04-28 21:12:01.000000000 +0800
+++ b/gslx680_ts_acpi.c	2023-01-03 11:23:25.167129379 +0800
@@ -663,10 +663,9 @@
 	return 0;
 }

-int gsl_ts_remove(struct i2c_client *client) {
+void gsl_ts_remove(struct i2c_client *client) {
 	/* Power the device off */
 	gsl_ts_power(client, true);
-	return 0;
 }

 static int __maybe_unused gsl_ts_suspend(struct device *dev)

After that, it worked fine.

Cube iwork8 Ultimate support

Hello.
I'm trying to get touchscreen working on Cube iwork8 Ultimate. It's an Cherry Trail-based dual boot tablet. Unfortunately, loading driver on 4.4.1 fails, probably due to issue #11.

[378.358143] gslx680 i2c-MSSL1680:00: gsl_ts_probe: got a device named MSSL1680:00 at address 0x40, IRQ 186, flags 0x0
[378.358404] gslx680 i2c-MSSL1680:00: gsl_ts_probe: error obtaining power pin GPIO resource
[378.522120] gslx680: probe of i2c-MSSL1680:00 failed with error -16

Stock Android GSL1680 driver is compiled into kernel. I loaded it in disassembler, seems to contain multiple firmwares, along with detection code (gsl_identify_tp at FFFFFFFF816F2BD0). From what I can understand, it first loads generic firmware, gets touchscreen type and then loads firmware for the device. For my device tp_type is 27, judging from dmesg, so I extracted the firmware that gets loaded for this type (at FFFFFFFF81AD5F20) manually, but not completely sure it's correct.

I also tried using gslx680-acpi driver with Android-IA Cherry Trail kernel 3.14.37 (it's for Intel reference boards and lacks tablet-specific adaptations, but support for tablet's hardware is still better than with mainline kernel). For some reason it doesn't set IRQ. I wonder why can this happen:

[157.879029] gslx680 i2c-MSSL1680:00: gsl_ts_probe: got a device named MSSL1680:00 at address 0x40, IRQ -1, flags 0x0
[157.879042] gslx680 i2c-MSSL1680:00: gsl_ts_probe: missing IRQ configuration

cube_iwork8_ultimate.tar.gz

CHUWI HI10

HI
I have CHUWI HI10 and i just want to know if this driver work with this tablet please.

Make error on Arch

Hello onitake,

Is this driver still being maintained?

If so, I'd like to verify if there's any fix for the following issue: I received a make error when building the root file (this is for use with Silead firmware, for the MW11 Multilaser touchscreen):

[root@multilaser gslx680-acpi-master]# make make -C /lib/modules/6.5.7-arch1-1/build ARCH=x86_64 CROSS_COMPILE= M=/home/multi/Downloads/gslx680-acpi-master modules make[1]: Entering directory '/usr/lib/modules/6.5.7-arch1-1/build' CC [M] /home/multi/Downloads/gslx680-acpi-master/gslx680_ts_acpi.o /home/multi/Downloads/gslx680-acpi-master/gslx680_ts_acpi.c:760:18: error: initialization of ‘int (*)(struct i2c_client *)’ from incompatible pointer type ‘int (*)(struct i2c_client *, const struct i2c_device_id *)’ [-Werror=incompatible-pointer-types] 760 | .probe = gsl_ts_probe, | ^~~~~~~~~~~~ /home/multi/Downloads/gslx680-acpi-master/gslx680_ts_acpi.c:760:18: note: (near initialization for ‘gslx680_ts_driver.<anonymous>.probe’) cc1: some warnings being treated as errors make[3]: *** [scripts/Makefile.build:243: /home/multi/Downloads/gslx680-acpi-master/gslx680_ts_acpi.o] Error 1 make[2]: *** [/usr/lib/modules/6.5.7-arch1-1/build/Makefile:2034: /home/multi/Downloads/gslx680-acpi-master] Error 2 make[1]: *** [Makefile:234: __sub-make] Error 2 make[1]: Leaving directory '/usr/lib/modules/6.5.7-arch1-1/build' make: *** [Makefile:18: modules] Error 2

I thank you in advance for any help on this.

[feature] Windows softkey support

Hi,

I have a chuwi hi10 pro (HQ64/z8350), with a supported touchscreen. There is a windows button softkey that is partially used by the driver. It seems to force a click at a specific coordinate in the screen.


Investigation

I have briefly looked at the code and it looks like there's no handling for anything else than touch. (Not an issue, as the driver is fairly generic.)

I have not xinput calibrated anything (though it shouldn't affect this print?). The firmware was extracted using this invocation:

$ perl -I gsl-firmware/tools gsl-firmware/tools/fwtool \
    -c SileadTouch.sys -3 -m 1680 -w 1260 -h 1925 -t 10 -f track,swap \
    silead_ts.fw

Informations gathering

Any touch on the windows softkey gives me the exact same position and pressure.

[ 3587.059739] gslx680 i2c-MSSL1680:00: gsl_ts_mt_event: got touch events for 1 fingers @5205
[ 3587.059772] gslx680 i2c-MSSL1680:00: gsl_ts_mt_event: touch event 0: x=672 y=1952 id=0x0 p=1

Keeping a finger on the screen and then touching the windows softkey does not nothing; no new event for the softkey press.

Keeping the softkey pressed and touching the screen seems to cancel the touch, but first makes a two-finger touch? On this log, I did not release the, the 2nd finger release was whilst holding the key

[ 3659.050157] gslx680 i2c-MSSL1680:00: gsl_ts_mt_event: got touch events for 1 fingers @15413
[ 3659.050193] gslx680 i2c-MSSL1680:00: gsl_ts_mt_event: touch event 0: x=672 y=1952 id=0x0 p=1
[ 3659.069265] gslx680 i2c-MSSL1680:00: gsl_ts_mt_event: got touch events for 1 fingers @15417
[ 3659.069298] gslx680 i2c-MSSL1680:00: gsl_ts_mt_event: touch event 0: x=672 y=1952 id=0x0 p=1
[ 3659.088048] gslx680 i2c-MSSL1680:00: gsl_ts_mt_event: got touch events for 1 fingers @15421
[ 3659.088079] gslx680 i2c-MSSL1680:00: gsl_ts_mt_event: touch event 0: x=672 y=1952 id=0x0 p=1
[ 3659.118831] gslx680 i2c-MSSL1680:00: gsl_ts_mt_event: got touch events for 1 fingers @15426
[ 3659.118866] gslx680 i2c-MSSL1680:00: gsl_ts_mt_event: touch event 0: x=672 y=1952 id=0x0 p=1
[ 3659.139449] gslx680 i2c-MSSL1680:00: gsl_ts_mt_event: got touch events for 2 fingers @15430       # <----- touchscreen touched here
[ 3659.139483] gslx680 i2c-MSSL1680:00: gsl_ts_mt_event: touch event 0: x=672 y=1952 id=0x0 p=1
[ 3659.139501] gslx680 i2c-MSSL1680:00: gsl_ts_mt_event: touch event 1: x=779 y=1064 id=0x0 p=4
[ 3659.162735] gslx680 i2c-MSSL1680:00: gsl_ts_mt_event: got touch events for 2 fingers @15434       # <----- Last two-finger event
[ 3659.162772] gslx680 i2c-MSSL1680:00: gsl_ts_mt_event: touch event 0: x=672 y=1952 id=0x0 p=1
[ 3659.162790] gslx680 i2c-MSSL1680:00: gsl_ts_mt_event: touch event 1: x=756 y=1067 id=0x0 p=0
[ 3659.180567] gslx680 i2c-MSSL1680:00: gsl_ts_mt_event: got touch events for 1 fingers @15438
[ 3659.180602] gslx680 i2c-MSSL1680:00: gsl_ts_mt_event: touch event 0: x=753 y=1071 id=0x0 p=0
[ 3659.200381] gslx680 i2c-MSSL1680:00: gsl_ts_mt_event: got touch events for 1 fingers @15442
[ 3659.200416] gslx680 i2c-MSSL1680:00: gsl_ts_mt_event: touch event 0: x=753 y=1070 id=0x0 p=0

It looks like the hardware treats the softkey with less priority than the touchscreen. Once the touchscreen is used, anything with the softkey is ignored, until the touchscreen is not in use.

Would there be anything else useful to gather before trying to understand how to implement this?

Driver not working on 4.2.0-27 and later

It seems that gslx680-acpi has stopped working on Ubuntu kernel 4.2.0-27, at least for some devices.

The ACPI power method wakeup procedure fails due to either an error in the kernel's DSDT parsing code or the Designware I2C driver. The exact cause has not been Identified yet.

Chuwi Hi8 support

@onitake ;

(RE: Manouchehri/vi8#1)

My codebase: https://github.com/djvdorp/hi8

My master tree contains the windows10 drivers (which I obtained from windows10 myself) and linux drivers (which I downloaded via techtablet).

The windows10 driver is a SileadTouch.{cat,sys} but no .fw file is incuded with the driver dump I made (but I might be able to dig this up manually).
However, @barni2000 wrote that it is possible to extract a firmware.fw from SileadTouch.sys, but since I have no clue on how to find the firmware begin and end I have not tried that yet.

The linux driver is a SileadTouch.{sys,fw} which I unscrambled via:
./unscramble SileadTouch.fw TS_CFG.h
That unscrambled version can also be found in my master tree.
However, after that I kinda get stuck. I don't have an idea which parameters to pass to fwtool even though I have read the README

I am just preparing these touch firmwares for when I am actually going to install Debian/Ubuntu on the device (or run it via USB OTG). I have not (tried to) run linux on it yet. I am unsure about what driver I am going to use at this point (eg. the gslx680-acpi or rastersoft you mentioned).

Thanks for your time and patience in advance!

Much more confuse

I'm pretty sure my touchscreen is gslx680, because I got gslX680 on i2c-5 in my Android OS;
But in lubuntu I got this:

dosk@Bullshit:~$ sudo find /sys/ | grep 1680
/sys/devices/LNXSYSTM:00/LNXSYBUS:00/PNP0A08:00/808622C1:05/GSL1680:00
/sys/devices/LNXSYSTM:00/LNXSYBUS:00/PNP0A08:00/808622C1:05/GSL1680:00/uevent
/sys/devices/LNXSYSTM:00/LNXSYBUS:00/PNP0A08:00/808622C1:05/GSL1680:00/power
/sys/devices/LNXSYSTM:00/LNXSYBUS:00/PNP0A08:00/808622C1:05/GSL1680:00/power/runtime_active_time
/sys/devices/LNXSYSTM:00/LNXSYBUS:00/PNP0A08:00/808622C1:05/GSL1680:00/power/runtime_active_kids
/sys/devices/LNXSYSTM:00/LNXSYBUS:00/PNP0A08:00/808622C1:05/GSL1680:00/power/runtime_usage
/sys/devices/LNXSYSTM:00/LNXSYBUS:00/PNP0A08:00/808622C1:05/GSL1680:00/power/runtime_status
/sys/devices/LNXSYSTM:00/LNXSYBUS:00/PNP0A08:00/808622C1:05/GSL1680:00/power/autosuspend_delay_ms
/sys/devices/LNXSYSTM:00/LNXSYBUS:00/PNP0A08:00/808622C1:05/GSL1680:00/power/async
/sys/devices/LNXSYSTM:00/LNXSYBUS:00/PNP0A08:00/808622C1:05/GSL1680:00/power/runtime_suspended_time
/sys/devices/LNXSYSTM:00/LNXSYBUS:00/PNP0A08:00/808622C1:05/GSL1680:00/power/runtime_enabled
/sys/devices/LNXSYSTM:00/LNXSYBUS:00/PNP0A08:00/808622C1:05/GSL1680:00/power/control
/sys/devices/LNXSYSTM:00/LNXSYBUS:00/PNP0A08:00/808622C1:05/GSL1680:00/power_resources_D0
/sys/devices/LNXSYSTM:00/LNXSYBUS:00/PNP0A08:00/808622C1:05/GSL1680:00/power_resources_D0/LNXPOWER:16
/sys/devices/LNXSYSTM:00/LNXSYBUS:00/PNP0A08:00/808622C1:05/GSL1680:00/power_resources_D0/LNXPOWER:17
/sys/devices/LNXSYSTM:00/LNXSYBUS:00/PNP0A08:00/808622C1:05/GSL1680:00/adr
/sys/devices/LNXSYSTM:00/LNXSYBUS:00/PNP0A08:00/808622C1:05/GSL1680:00/hid
/sys/devices/LNXSYSTM:00/LNXSYBUS:00/PNP0A08:00/808622C1:05/GSL1680:00/path
/sys/devices/LNXSYSTM:00/LNXSYBUS:00/PNP0A08:00/808622C1:05/GSL1680:00/subsystem
/sys/devices/LNXSYSTM:00/LNXSYBUS:00/PNP0A08:00/808622C1:05/GSL1680:00/status
/sys/devices/LNXSYSTM:00/LNXSYBUS:00/PNP0A08:00/808622C1:05/GSL1680:00/modalias
/sys/devices/LNXSYSTM:00/LNXSYBUS:00/PNP0A08:00/808622C1:05/MSSL1680:00
/sys/devices/LNXSYSTM:00/LNXSYBUS:00/PNP0A08:00/808622C1:05/MSSL1680:00/uevent
/sys/devices/LNXSYSTM:00/LNXSYBUS:00/PNP0A08:00/808622C1:05/MSSL1680:00/power
/sys/devices/LNXSYSTM:00/LNXSYBUS:00/PNP0A08:00/808622C1:05/MSSL1680:00/power/runtime_active_time
/sys/devices/LNXSYSTM:00/LNXSYBUS:00/PNP0A08:00/808622C1:05/MSSL1680:00/power/runtime_active_kids
/sys/devices/LNXSYSTM:00/LNXSYBUS:00/PNP0A08:00/808622C1:05/MSSL1680:00/power/runtime_usage
/sys/devices/LNXSYSTM:00/LNXSYBUS:00/PNP0A08:00/808622C1:05/MSSL1680:00/power/runtime_status
/sys/devices/LNXSYSTM:00/LNXSYBUS:00/PNP0A08:00/808622C1:05/MSSL1680:00/power/autosuspend_delay_ms
/sys/devices/LNXSYSTM:00/LNXSYBUS:00/PNP0A08:00/808622C1:05/MSSL1680:00/power/async
/sys/devices/LNXSYSTM:00/LNXSYBUS:00/PNP0A08:00/808622C1:05/MSSL1680:00/power/runtime_suspended_time
/sys/devices/LNXSYSTM:00/LNXSYBUS:00/PNP0A08:00/808622C1:05/MSSL1680:00/power/runtime_enabled
/sys/devices/LNXSYSTM:00/LNXSYBUS:00/PNP0A08:00/808622C1:05/MSSL1680:00/power/control
/sys/devices/LNXSYSTM:00/LNXSYBUS:00/PNP0A08:00/808622C1:05/MSSL1680:00/power_resources_D0
/sys/devices/LNXSYSTM:00/LNXSYBUS:00/PNP0A08:00/808622C1:05/MSSL1680:00/power_resources_D0/LNXPOWER:16
/sys/devices/LNXSYSTM:00/LNXSYBUS:00/PNP0A08:00/808622C1:05/MSSL1680:00/power_resources_D0/LNXPOWER:17
/sys/devices/LNXSYSTM:00/LNXSYBUS:00/PNP0A08:00/808622C1:05/MSSL1680:00/adr
/sys/devices/LNXSYSTM:00/LNXSYBUS:00/PNP0A08:00/808622C1:05/MSSL1680:00/hid
/sys/devices/LNXSYSTM:00/LNXSYBUS:00/PNP0A08:00/808622C1:05/MSSL1680:00/path
/sys/devices/LNXSYSTM:00/LNXSYBUS:00/PNP0A08:00/808622C1:05/MSSL1680:00/subsystem
/sys/devices/LNXSYSTM:00/LNXSYBUS:00/PNP0A08:00/808622C1:05/MSSL1680:00/status
/sys/devices/LNXSYSTM:00/LNXSYBUS:00/PNP0A08:00/808622C1:05/MSSL1680:00/modalias
/sys/bus/acpi/devices/GSL1680:00
/sys/bus/acpi/devices/MSSL1680:00

and

dosk@Bullshit:~$ ls -al /sys/bus/i2c/devices/
total 0
drwxr-xr-x 2 root root 0 3月  27 03:11 .
drwxr-xr-x 4 root root 0 3月  27 02:05 ..
lrwxrwxrwx 1 root root 0 3月  27 02:05 i2c-0 -> ../../../devices/pci0000:00/808622C1:00/i2c-0
lrwxrwxrwx 1 root root 0 3月  27 02:05 i2c-1 -> ../../../devices/pci0000:00/808622C1:01/i2c-1
lrwxrwxrwx 1 root root 0 3月  27 02:05 i2c-10 -> ../../../devices/pci0000:00/0000:00:02.0/i2c-10
lrwxrwxrwx 1 root root 0 3月  27 02:05 i2c-11 -> ../../../devices/pci0000:00/0000:00:02.0/i2c-11
lrwxrwxrwx 1 root root 0 3月  27 02:05 i2c-12 -> ../../../devices/pci0000:00/0000:00:02.0/i2c-12
lrwxrwxrwx 1 root root 0 3月  27 02:05 i2c-13 -> ../../../devices/pci0000:00/0000:00:02.0/drm/card0/card0-DP-1/i2c-13
lrwxrwxrwx 1 root root 0 3月  27 02:05 i2c-14 -> ../../../devices/pci0000:00/0000:00:02.0/drm/card0/card0-DP-2/i2c-14
lrwxrwxrwx 1 root root 0 3月  27 02:05 i2c-2 -> ../../../devices/pci0000:00/808622C1:02/i2c-2
lrwxrwxrwx 1 root root 0 3月  27 02:05 i2c-3 -> ../../../devices/pci0000:00/808622C1:03/i2c-3
lrwxrwxrwx 1 root root 0 3月  27 02:05 i2c-4 -> ../../../devices/pci0000:00/808622C1:04/i2c-4
lrwxrwxrwx 1 root root 0 3月  27 02:05 i2c-5 -> ../../../devices/pci0000:00/808622C1:05/i2c-5
lrwxrwxrwx 1 root root 0 3月  27 02:05 i2c-6 -> ../../../devices/pci0000:00/808622C1:06/i2c-6
lrwxrwxrwx 1 root root 0 3月  27 02:05 i2c-7 -> ../../../devices/pci0000:00/0000:00:02.0/i2c-7
lrwxrwxrwx 1 root root 0 3月  27 02:05 i2c-8 -> ../../../devices/pci0000:00/0000:00:02.0/i2c-8
lrwxrwxrwx 1 root root 0 3月  27 02:05 i2c-9 -> ../../../devices/pci0000:00/0000:00:02.0/i2c-9
lrwxrwxrwx 1 root root 0 3月  27 02:05 i2c-GDIX1001:00 -> ../../../devices/pci0000:00/808622C1:05/i2c-5/i2c-GDIX1001:00
lrwxrwxrwx 1 root root 0 3月  27 02:05 i2c-HIMX2051:00 -> ../../../devices/pci0000:00/808622C1:00/i2c-0/i2c-HIMX2051:00
lrwxrwxrwx 1 root root 0 3月  27 02:05 i2c-INT33F4:00 -> ../../../devices/pci0000:00/808622C1:06/i2c-6/i2c-INT33F4:00
lrwxrwxrwx 1 root root 0 3月  27 02:05 i2c-KIOX0009:00 -> ../../../devices/pci0000:00/808622C1:02/i2c-2/i2c-KIOX0009:00
lrwxrwxrwx 1 root root 0 3月  27 02:05 i2c-OVTI2680:00 -> ../../../devices/pci0000:00/808622C1:00/i2c-0/i2c-OVTI2680:00
lrwxrwxrwx 1 root root 0 3月  27 02:05 i2c-TXN24292:00 -> ../../../devices/pci0000:00/808622C1:00/i2c-0/i2c-TXN24292:00
lrwxrwxrwx 1 root root 0 3月  27 02:05 i2c-TXN27501:00 -> ../../../devices/pci0000:00/808622C1:00/i2c-0/i2c-TXN27501:00

so the driver won't match my device, and in my android I can't search any file contain 680 or silead in file name, so much more confuse ...

Fusion5 FWIN232

Hi all..
I've got myself into a pickle.. I formatted my tablet to try Android and now can't get the touch to work in any system, including windows since I don't have the original drivers.
How do I figure out if one of the already extracted firmwares works on my device?
Thanks

jittering

HW: Chuwi hi 10

when my finger remains on the screen I can see that pointer is jittering.
This cause some long web pages to jitter when I press the scrollbar for example and maintain my finger on it.

To solve this I've added a hysteresis parameter. See attached patch (renamed to txt).

hysteresis_param.txt

This may need some rework.

Thanks for your work.

Touchscreen not working after installing the driver

Hello,

i've extracted the firmware of my MPMAN CONVERTER 8 and after compiling your driver, the module is inserted correctly (see the dmesg.txt). I've launched evtest and see the touchscreen device and when I choose it, nothing happens even after restarting X.

My operating system is Ubuntu Artful 17.10 with a 4.12 rc4 kernel (to support the wifi/BT driver).
dmesg.txt

Have you got an idea ?

Strange deadzone in tablet Neso Volans WT1035 (SOLVED)

The tablet has a silead gsl3692 but is enumerated as SILD0005 (PNP0C50).
After add this device I can use this driver.
The tablet come with Android. I have extracted the FW from gslx68x_ts.ko and I have this result:

  • fw_index.fw
  • gsl_load_fw.fw
  • gslx680_fw_grp.fw
  • GSLX680_FW_gsl_customer.fw
  • GSLX680_FW_TEST.fw

Only GSLX680_FW_gsl_customer.fw seems to work

The problem is that coordinate is splitted and there is a dead zone in the middle.
If I touch at bottom the mouse start at middle of screen and can up to the top of screen with touch near to the middle . After that there is a zone that not respond (and not generate irq, with this driver in debug mode) then continue to touch to the top of the screen but the mouse start at bottom to up.
This happen whatever -w and -h parameter I use.
Some idea?

Here is my FW: https://drive.google.com/open?id=1h1llvggSYhE_6lWtuXoNbKWUp18d4MkC

Setting axis in the firmware?

So I think I figured out the resolution of my touch screen to be 1700x1125. Or at least if I start with a fresh boot with display settings clockwise, load a firmware with -w 1700 and -h 1125 it tracks 1:1 but one of the axis is reversed. Is there a way to specify this in the firmware?

Anyone tried onda v80 plus android only ?

With some change of code, I got this:

[ 5447.852930] gslX680 i2c-GDIX1001:00: gsl_ts_probe: got a device named GDIX1001:00 at address 0x14, IRQ 165, flags 0x0
[ 5447.853280] input: Silead GSLx680 Touchscreen as /devices/pci0000:00/808622C1:05/i2c-5/i2c-GDIX1001:00/input/input37
[ 5447.854813] gslX680 i2c-GDIX1001:00: gsl_ts_probe: failed to wake up device through ACPI: 0, using GPIO controls instead
[ 5447.854827] gslX680 i2c-GDIX1001:00: gsl_ts_probe: error obtaining power pin GPIO resource
[ 5447.897040] gslX680: probe of i2c-GDIX1001:00 failed with error -2

Where silead_ts firmware to be placed?

Trying to make touchscreen work on Chuwi Hibook. Some history:

  • I've started with SileadTouch.sys
  • I've used cat & dd to extract firmware
  • I've used fwtool to convert firmware

But now the main question: where to place silead_ts?
Thanks in advance.

Wiki with support matrix.

I think we should create a wiki with some informations for tablets.

For example:
SupportMatrix:

Device Tested Old stlye frimware New style firmware Comment
Utok i800 yes Link for old style firmware Link for new style firmware Something
Chuwi hi8 no Link for old style firmware Link for new style firmware Not working yet
Chuwi vi8 no Link for old style firmware Link for new style firmware Should test

Right click?

How do I configure right click to work, either two finger or long press is sufficient for me.

I tried adding these lines

Option "EmulateThirdButton" "1"
Option "EmulateThirdButtonTimeout" "750"
Option "EmulateThirdButtonMoveThreshold" "30"

into the same section statement as the calibration data from xinput_calibrator but longpress does nothing.

Android-x86 / RemixOS calibration fix

Hi,

Android X86 / RemixOS work on tablets with this touchscreen and it does register touches, but the calibration is off. How can the screen properly be calibrated???

Make the module compile with Ubuntu 18.04

I can have the module compiling with Ubuntu 18.04.
I'm running from error to error :

1- cc1: error: code model kernel does not support PIC mode
Solution was to modify the linux source kernel Makefile (/usr/src/linux-headers-4.15.0-43-generic) adding -fno-pie after KBUILD_CFLAGS :

KBUILD_CFLAGS   := -Wall -Wundef -Wstrict-prototypes -Wno-trigraphs \
		   -fno-strict-aliasing -fno-common -fshort-wchar \
		   -Werror-implicit-function-declaration \
		   -Wno-format-security \
		   -std=gnu89  -fno-pie

2- fatal error: 'stdarg.h' file not found
Solution :

$ cd /lib/modules/$(uname -r)/build/include
$ sudo ln -s $(gcc -print-file-name=include)/stdarg.h

3- fatal error: 'asm/linkage.h' file not found
Didn't find any solution right now ...

If somebody already succeed in compiling on Ubuntu 18.04, any help is welcome.

Thanks

CCE TF74W support

Hello,

I have a brazilian tablet CCE that have Windows as only OS and the driver on my device using android x86 doesn't work.

I compiled the driver using android x86 source kernel 4.0.9, did a insmod and the error below is showed.

<4>[  467.467528] gslx680 i2c-MSSL1680:00: gsl_ts_probe: got a device named MSSL1680:00 at address 0x40, IRQ 200, flags 0x0
<6>[  467.476087] input: Silead GSLx680 Touchscreen as /devices/platform/80860F41:01/i2c-1/i2c-MSSL1680:00/input/input10
<3>[  467.488589] gslx680 i2c-MSSL1680:00: gsl_ts_reset_chip: gsl_ts_write 1 fail!
<3>[  467.488612] gslx680 i2c-MSSL1680:00: gsl_ts_probe: chip reset failed
<4>[  467.516654] gslx680: probe of i2c-MSSL1680:00 failed with error -121

I extracted the FW from SileadTouch.sys(Windows driver) using a hex editor, and placed the .fw converted by fwtool on /lib/firmware folder.

Attached the DSDT.dsl.
dsdt.dsl.txt

Can you help me?

gsl_ts_reset_chip: gsl_ts_write 1 fail!

I have got some new errors:
[ 585.405027] gslx680 i2c-MSSL1680:00: gsl_ts_probe: got a device named MSSL1680:00 at address 0x40, IRQ 201, flags 0x0
[ 585.477655] input: Silead GSLx680 Touchscreen as /devices/platform/80860F41:03/i2c-11/i2c-MSSL1680:00/input/input10
[ 585.504702] gslx680 i2c-MSSL1680:00: gsl_ts_reset_chip: gsl_ts_write 1 fail!
[ 585.504715] gslx680 i2c-MSSL1680:00: gsl_ts_probe: chip reset failed
[ 585.544934] gslx680: probe of i2c-MSSL1680:00 failed with error -121

Building from Make file on 4.15.0-33 kernel - error: code model kernel does not support PIC mode

Just to start, I am running Lubuntu 18.04 with kernel version 4.15.0-33 on an Insignia NS-P11W7100.

I have been trying to build gslx680-acpi using the make command, and the build process returns this error:

sean@Lethe:~/gslx680-acpi$ make
make -C /lib/modules/4.15.0-33-generic/build ARCH=x86_64 CROSS_COMPILE= M=/home/sean/gslx680-acpi modules
make[1]: Entering directory '/usr/src/linux-headers-4.15.0-33-generic'
CC [M] /home/sean/gslx680-acpi/gslx680_ts_acpi.o
cc1: error: code model kernel does not support PIC mode
scripts/Makefile.build:339: recipe for target '/home/sean/gslx680-acpi/gslx680_ts_acpi.o' failed
make[2]: *** [/home/sean/gslx680-acpi/gslx680_ts_acpi.o] Error 1
Makefile:1552: recipe for target 'module/home/sean/gslx680-acpi' failed
make[1]: *** [module/home/sean/gslx680-acpi] Error 2
make[1]: Leaving directory '/usr/src/linux-headers-4.15.0-33-generic'
Makefile:18: recipe for target 'modules' failed
make: *** [modules] Error 2

After googling this error, it seemed to be an issue with the GCC version, so I applied the patch found at this link: https://askubuntu.com/questions/851433/kernel-doesnt-support-pic-mode-for-compiling

However when I do that, more errors crop up:

make
make -C /lib/modules/4.15.0-33-generic/build ARCH=x86_64 CROSS_COMPILE= M=/home/sean/gslx680-acpi modules
make[1]: Entering directory '/usr/src/linux-headers-4.15.0-33-generic'
CC [M] /home/sean/gslx680-acpi/gslx680_ts_acpi.o
In file included from /home/sean/gslx680-acpi/gslx680_ts_acpi.c:18:0:
./include/linux/types.h:17:9: error: unknown type name ‘__kernel_ino_t’
typedef __kernel_ino_t ino_t;
^~~~~~~~~~~~~~
./include/linux/types.h:18:9: error: unknown type name ‘__kernel_mode_t’
typedef __kernel_mode_t mode_t;
^~~~~~~~~~~~~~~
./include/linux/types.h:21:9: error: unknown type name ‘__kernel_off_t’
typedef __kernel_off_t off_t;
^~~~~~~~~~~~~~
./include/linux/types.h:22:9: error: unknown type name ‘__kernel_pid_t’
typedef __kernel_pid_t pid_t;
^~~~~~~~~~~~~~
./include/linux/types.h:23:9: error: unknown type name ‘__kernel_daddr_t’
typedef __kernel_daddr_t daddr_t;
^~~~~~~~~~~~~~~~
./include/linux/types.h:25:9: error: unknown type name ‘__kernel_suseconds_t’
typedef __kernel_suseconds_t suseconds_t;
^~~~~~~~~~~~~~~~~~~~
./include/linux/types.h:26:9: error: unknown type name ‘__kernel_timer_t’
typedef __kernel_timer_t timer_t;
^~~~~~~~~~~~~~~~
./include/linux/types.h:27:9: error: unknown type name ‘__kernel_clockid_t’
typedef __kernel_clockid_t clockid_t;
^~~~~~~~~~~~~~~~~~
./include/linux/types.h:32:9: error: unknown type name ‘__kernel_uid32_t’
typedef __kernel_uid32_t uid_t;
^~~~~~~~~~~~~~~~
./include/linux/types.h:33:9: error: unknown type name ‘__kernel_gid32_t’
typedef __kernel_gid32_t gid_t;
^~~~~~~~~~~~~~~~
./include/linux/types.h:34:9: error: unknown type name ‘__kernel_uid16_t’
typedef __kernel_uid16_t uid16_t;
^~~~~~~~~~~~~~~~
./include/linux/types.h:35:9: error: unknown type name ‘__kernel_gid16_t’
typedef __kernel_gid16_t gid16_t;
^~~~~~~~~~~~~~~~
./include/linux/types.h:41:9: error: unknown type name ‘__kernel_old_uid_t’
typedef __kernel_old_uid_t old_uid_t;
^~~~~~~~~~~~~~~~~~
./include/linux/types.h:42:9: error: unknown type name ‘__kernel_old_gid_t’
typedef __kernel_old_gid_t old_gid_t;
^~~~~~~~~~~~~~~~~~
./include/linux/types.h:46:9: error: unknown type name ‘__kernel_loff_t’
typedef __kernel_loff_t loff_t;
^~~~~~~~~~~~~~~
./include/linux/types.h:55:9: error: unknown type name ‘__kernel_size_t’
typedef __kernel_size_t size_t;
^~~~~~~~~~~~~~~
./include/linux/types.h:60:9: error: unknown type name ‘__kernel_ssize_t’
typedef __kernel_ssize_t ssize_t;
^~~~~~~~~~~~~~~~
./include/linux/types.h:65:9: error: unknown type name ‘__kernel_ptrdiff_t’
typedef __kernel_ptrdiff_t ptrdiff_t;
^~~~~~~~~~~~~~~~~~
./include/linux/types.h:70:9: error: unknown type name ‘__kernel_time_t’
typedef __kernel_time_t time_t;
^~~~~~~~~~~~~~~
./include/linux/types.h:75:9: error: unknown type name ‘__kernel_clock_t’
typedef __kernel_clock_t clock_t;
^~~~~~~~~~~~~~~~
./include/linux/types.h:80:9: error: unknown type name ‘__kernel_caddr_t’
typedef __kernel_caddr_t caddr_t;
^~~~~~~~~~~~~~~~
./include/linux/types.h:199:2: error: unknown type name ‘__kernel_daddr_t’
__kernel_daddr_t f_tfree;
^~~~~~~~~~~~~~~~
./include/linux/types.h:200:2: error: unknown type name ‘__kernel_ino_t’
__kernel_ino_t f_tinode;
^~~~~~~~~~~~~~
In file included from ./include/linux/list.h:9:0,
from ./include/linux/module.h:9,
from /home/sean/gslx680-acpi/gslx680_ts_acpi.c:19:
./include/linux/kernel.h:6:10: fatal error: stdarg.h: No such file or directory
#include <stdarg.h>
^~~~~~~~~~
compilation terminated.
scripts/Makefile.build:339: recipe for target '/home/sean/gslx680-acpi/gslx680_ts_acpi.o' failed
make[2]: *** [/home/sean/gslx680-acpi/gslx680_ts_acpi.o] Error 1
Makefile:1558: recipe for target 'module/home/sean/gslx680-acpi' failed
make[1]: *** [module/home/sean/gslx680-acpi] Error 2
make[1]: Leaving directory '/usr/src/linux-headers-4.15.0-33-generic'
Makefile:18: recipe for target 'modules' failed
make: *** [modules] Error 2

I am building from the source downloaded via git from this repository. Is there something that I am doing wrong, or missing? It seems like a GCC issue but I dont know how to fix it.

New flipping code causes dead zones

Commit f715b99 causes dead zones for some users (see the commit comment from @barni2000.

If x_max and/or y_max is too small, negative coordinates can occur. I thought this was going to be a problem with the input layer, but apparently it's not.

Reverting the commit for now, I hope introducing x_min and y_min parameters will be a better fix.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.