onitake / gsl-firmware

Firmware repository for Silead touchscreen controllers
323 stars 201 forks source link

Touchscreen fails to resume after suspend #145

Open pseudotheist opened 4 years ago

pseudotheist commented 4 years ago

With the help of this project I've been running a Jumper 6 (pro?) 2-in-1 on linux for the past 6 months or so. I've got it working w/ touchscreen on Ubuntu Disco Dingo, Ubuntu & Kubuntu Focused Fossa, and even KaOS linux. But in all of these builds I've run into the issue that eventually the touchscreen fails to resume after a suspend. A particular oddity of note is that the device usually requires not just a restart, but a hard reboot (the problem even followed me once through a reboot to a different OS).

When the touchscreen dies I can still see it in xinput, but if I attempt to restart it (sudo rmmod silead; sudo modprobe silead) it disappears. I can see the resume failures in dmesg, but not sure what I can do w/ that info: [May21 18:36] silead_ts i2c-MSSL1680:00: Resume error, status: 0x00 [ +0.000019] PM: dpm_run_callback(): silead_ts_resume+0x0/0xd0 [silead] returns -19 [ +0.000006] PM: Device i2c-MSSL1680:00 failed to resume: error -19

The only other lead I've found so far is here: https://unix.stackexchange.com/questions/563326/goodix-touchscreen-not-working-after-suspend But I can't make enough of the ACPI info to figure out here to point the call, assuming that even is the right track...

Any chance someone might be able to give me a pointer toward getting this resolved?

onitake commented 4 years ago

Nice that it's working so successfully!

I can see two potential sources of the problem:

  1. Incorrect startup pin control - hard to say. The driver should be able to cope with most chips, but I'm not certain. linux-input or @jwrdegoede may be able to help you out there.
  2. It could be a problem with the voltage regulator. The vregs in Baytrail tablets were a constant source of grief when the platform was new, I don't know how much the situation has improved in the now.

As for knowlede about ACPI, the decompiled source shouldn't be too hard to read. You might be able to find something about the initialisation routine that's not addressed by the driver.