Re: вопрос по suspend/resume в goodix
From: Hans de Goede <hidden>
Date: 2019-12-20 10:45:23
Possibly related (same subject, not in this thread)
- 2019-12-19 · Re: вопрос по suspend/resume в goodix · Bastien Nocera <hadess@hadess.net>
- 2019-12-18 · Re: вопрос по suspend/resume в goodix · Hans de Goede <hidden>
- 2019-12-18 · Re: вопрос по suspend/resume в goodix · Dmitry Mastykin <hidden>
- 2019-12-18 · Re: вопрос по suspend/resume в goodix · Hans de Goede <hidden>
- 2019-12-12 · Re: вопрос по suspend/resume в goodix · Hans de Goede <hidden>
Hi, On 19-12-2019 10:10, Dmitry Mastykin wrote:
Hi,quoted
quoted
I discovered what was with my device. After suspend/resume I2C address often changes to 0x5d (and ACPI table has 0x14).Often but not always?Yes, I think this is because INT from chipset side is tri-stated. I'm attaching the acpidump.
Thanks, hmm, so looking at the acpidump, your device is using an Apollo
Lake and thus definitely is NOT the fieldbook-k122 as that is using
a Cherry Trail SoC and not an Apollo Lake SoC.
It is also using a GPIO pin configured in direct-irq mode pin for the IRQ line:
Name (RBUF, ResourceTemplate ()
{
I2cSerialBusV2 (0x0014, ControllerInitiated, 0x00061A80,
AddressingMode7Bit, "\\_SB.PCI0.I2C3",
0x00, ResourceConsumer, , Exclusive,
)
Interrupt (ResourceConsumer, Edge, ActiveHigh, Exclusive, ,, )
{
0x00000032,
}
GpioIo (Shared, PullDefault, 0x0000, 0x0000, IoRestrictionOutputOnly,
"\\_SB.GPO0", 0x00, ResourceConsumer, ,
)
{ // Pin list
0x0019
}
GpioIo (Shared, PullDefault, 0x0000, 0x0000, IoRestrictionOutputOnly,
"\\_SB.GPO0", 0x00, ResourceConsumer, ,
)
{ // Pin list
0x0005
}
})
And both GPIOs are listed as output-only which certainly does not match the
IRQ pin. So this setup is a bit foobar and the plan I have to allow the touchscreen
to properly power-down on suspend on Cherry Trail devices, will not work here :|
For reference here are the ACPI resources for a GDIX touchscreen on Cherry Trail:
Name (WBUF, ResourceTemplate ()
{
I2cSerialBusV2 (0x0014, ControllerInitiated, 0x00061A80,
AddressingMode7Bit, "\\_SB.PCI0.I2C6",
0x00, ResourceConsumer, , Exclusive,
)
GpioInt (Edge, ActiveLow, Shared, PullDefault, 0x0000,
"\\_SB.GPO3", 0x00, ResourceConsumer, ,
)
{ // Pin list
0x004D
}
GpioIo (Shared, PullDefault, 0x0000, 0x0000, IoRestrictionOutputOnly,
"\\_SB.GPO1", 0x00, ResourceConsumer, ,
)
{ // Pin list
0x0014
}
})
Notice how the Interrupt is specified as a GpioInt so we should be able
to use it as a GPIO during suspend so that we can wakeup the touchscreen on
resume...
I'm afraid I do not have any easy ideas / fixes for how to fix the issue
you are seeing on your device.
Regards,
Hans
On Wed, Dec 18, 2019 at 6:07 PM Hans de Goede [off-list ref] wrote:quoted
Hi, On 18-12-2019 15:50, Dmitry Mastykin wrote:quoted
Hi, I discovered what was with my device. After suspend/resume I2C address often changes to 0x5d (and ACPI table has 0x14).Often but not always?quoted
ACPI tables doesn't contain _DSD section, and GPIOs are not mapped to ts->gpiod_int/rst. They are NULL. So reset sequence is not called. That's why rmmod/insmod doesn't help. (As temporary solution i changed client->addr, and will wait for better ACPI tables. I tried also to map gpios by index and seems that RESET works but INT doesn't. I can't change I2C address by reset sequence. I've sent a question to tablet's manufacturer about that.)Interesting, can you provide an acpidump of the device: sudo acpidump -o acpidump And then attach the generated acpidump file to your next email ? Regards, Hansquoted
quoted
On most newer devices (such as the GPD) the IRQ pin is actually declared as a GpioInt in the ACPI tables, so we should be able to use it as a GPIO with some extra work.I will be glad to test this when it's ready provided I have new ACPI tables. Thank you! Kind regards, Dmitry Mastykin On Wed, Dec 18, 2019 at 9:16 AM Hans de Goede [off-list ref] wrote:quoted
Hi, On 13-12-2019 09:17, Dmitry Mastykin wrote:quoted
Hi guys! Thank you very much for your answers, it's always surprising how fast the community reacts!quoted
We have reports of the touchscreen no longer working after suspend/resume on some GPD pocket devices, but not combined with these errors.I copied my error messages precisely from gpd support site, because I have the same: https://gpdsupport.com/t/touchscreen-issue-resolved/132/84 But seems that rmmod/insmod helps in their case. I noticed that the problem is not repeatable. But happens very often.Interesting I did not realize the same errors are showing on the GPD pocket. I have the feeling this might have something todo with us not putting the touchscreen controller to sleep on ACPI devices because we cannot use the IRQ pin as GPIO which is necessary for wakeup. On most newer devices (such as the GPD) the IRQ pin is actually declared as a GpioInt in the ACPI tables, so we should be able to use it as a GPIO with some extra work. I plan to write a patch to make us do this sometime in the near future (no idea when I will get around to this though). I will put you (Dmitry Mastykin) in the Cc of the patch when I get around to writing it. Note I do not know if this patch will actually help. Regards, Hansquoted
quoted
When this happens, are these messages appear constantly, or only in response to actual touch? Can you still interact with the device?Constantly with 25Hz frequency.quoted
The fact that you can talk to the controller like that is interesting. Just to confirm, does it return sane data, or garbage?root@or212:/home/u# i2cset -y 6 0x5d 0x81 0x4e 0x00 i root@or212:/home/u# i2cset -y 6 0x5d 0x81 0x4e i root@or212:/home/u# i2cget -y 6 0x5d 0x83 root@or212:/home/u# i2cset -y 6 0x5d 0x81 0x4e 0x00 i root@or212:/home/u# i2cset -y 6 0x5d 0x81 0x4e i root@or212:/home/u# i2cget -y 6 0x5d 0x81 First I touch with 3 fingers, then with one.quoted
What is the model of the tablet?Not sure about model, seems that it's this one: http://logic-instrument.com/en/fieldbook-k122.php Dmesg is attached Thank you! Kind regards, Dmitry Mastykin On Thu, Dec 12, 2019 at 11:51 PM Hans de Goede [off-list ref] wrote:quoted
Hi, On 12-12-2019 20:20, Dmitry Torokhov wrote:quoted
Hi Dmitry, On Thu, Dec 12, 2019 at 06:34:46PM +0300, Dmitry Mastykin wrote:quoted
Здравствуйте, Дмитрий. Простите, что отвлекаю, если что - не отвечайте и в лучшем случае пошлите в mail-list) У меня есть планшет с x86, вариантом Debian с ядром 4.15 и контроллером тач-скрина gt928.What is the model of the tablet?quoted
После suspend/resume не всегда, но очень часто тачскрин перестает работать и постоянно выводит: [ 3276.729412] Goodix-TS i2c-GDIX1002:00: I2C write end_cmd error [ 3276.770153] Goodix-TS i2c-GDIX1002:00: I2C transfer error: -121When this happens, are these messages appear constantly, or only in response to actual touch? Can you still interact with the device? Could you please send the full dmesg so we know more about the device. Hans, Bastien, have you seen such issues with Goodix occasionally misbehaving on resume?We have reports of the touchscreen no longer working after suspend/resume on some GPD pocket devices, but not combined with these errors. Regards, Hansquoted
quoted
По i2cget/i2cset контроллер успешно отвечает.The fact that you can talk to the controller like that is interesting. Just to confirm, does it return sane data, or garbage? Thanks.