[Letux-kernel] no interrupts from touchscreen
H. Nikolaus Schaller
hns at goldelico.com
Thu Aug 23 12:08:08 CEST 2018
> Am 23.08.2018 um 09:33 schrieb H. Nikolaus Schaller <hns at goldelico.com>:
>
> Hi,
>
>> Am 23.08.2018 um 07:22 schrieb Andreas Kemnade <andreas at kemnade.info>:
>>
>> Hi,
>>
>> On Wed, 22 Aug 2018 23:31:29 +0200
>> "H. Nikolaus Schaller" <hns at goldelico.com> wrote:
>>
>>> Hi,
>>>
>>>> Am 20.08.2018 um 20:05 schrieb Andreas Kemnade <andreas at kemnade.info>:
>>>>
>>>> Hi,
>>>>
>>>> at the moment I do not get interrupts from touchscreen.
>>>> I am working with 4.17. It seems to have stopped working after suspend.
>>>> This happens randomly, seen it with different kernels. At this time I have
>>>> a working usb connection and investigated.
>>>> via iio I could read out x/y and pressure. They seem to behave same.
>>>> Pressure can go up to > 1000
>>>>
>>>> But I do not get interrupts.
>>>> Nothing happens in /proc/interrupts.
>>>
>>> strange. I have just tested with 4.18.4 on a GTA04A4:
>>>
>>> root at letux:~# cat /proc/interrupts |fgrep tsc2007
>>> 168: 2369 49058000.gpio 0 Edge tsc2007
>>> root at letux:~# cat /proc/interrupts |fgrep tsc2007
>>> 168: 2369 49058000.gpio 0 Edge tsc2007
>>> root at letux:~# cat /proc/interrupts |fgrep tsc2007
>>> 168: 2369 49058000.gpio 0 Edge tsc2007
>>> root at letux:~# cat /proc/interrupts |fgrep tsc2007
>>> 168: 2383 49058000.gpio 0 Edge tsc2007
>>> root at letux:~# cat /proc/interrupts |fgrep tsc2007
>>> 168: 2383 49058000.gpio 0 Edge tsc2007
>>> root at letux:~# cat /proc/interrupts |fgrep tsc2007
>>> 168: 2397 49058000.gpio 0 Edge tsc2007
>>> root at letux:~# cat /proc/interrupts |fgrep tsc2007
>>> 168: 2408 49058000.gpio 0 Edge tsc2007
>>> root at letux:~#
>>>
>> Well, most of the time it works, I did not find a clear pattern
>> for this problem. It usually only happens when I am not in a situation
>> so that I can debug that or want to debug something else.
>> Suspend seems to be involved.
>
> Hm. Ok.
>
> Well, AFAIR the tsc2007 has no special suspend/resume code.
> It also does not need it since it is powered from 1.8V which
> is always on.
>
> So the chip should not change state with suspend/no suspend.
>
> The only thing is that it is still active to some extent.
> It may react on touch pressures while suspended. And collect
> data. This may wake up the device if the interrupt is an
> active wakeup source.
>
>> I have seen it running the weather monitor for long times.
>>
>> What puzzles me is that I can get the raw values using iio,
>> so i2c seems not to be stuck.
>
> This means the interrupt mechanism gets stuck.
>
>>
>> [...]
>>>>
>>>>
>>>> This stays the same regards if I touch or not
>>>
>>> same for me
>>>
>>>> root at gta04:~# devmem2 0x49058038 w
>>>> /dev/mem opened.
>>>> Memory mapped at address 0xb6f4b000.
>>>> Value at address 0x49058038 (0xb6f4b038): 0xB001
>>>
>> So GPIO_DATAIN does not change for you?
>
> I have not seen it at this address.
Now trying again I can see it:
on a GTA04A5 board
root at letux:~# /usr/bin/arm-linux-gnueabihf/devmem2 0x49058038 w
/dev/mem opened.
Memory mapped at address 0xb6fda000.
Value at address 0x49058038 (0xb6fda038): 0xF001
root at letux:~# /usr/bin/arm-linux-gnueabihf/devmem2 0x49058038 w
/dev/mem opened.
Memory mapped at address 0xb6f83000.
Value at address 0x49058038 (0xb6f83038): 0xF000
root at letux:~# /usr/bin/arm-linux-gnueabihf/devmem2 0x49058038 w
/dev/mem opened.
Memory mapped at address 0xb6f2e000.
Value at address 0x49058038 (0xb6f2e038): 0xF000
root at letux:~# /usr/bin/arm-linux-gnueabihf/devmem2 0x49058038 w
/dev/mem opened.
Memory mapped at address 0xb6fec000.
Value at address 0x49058038 (0xb6fec038): 0xF001
root at letux:~#
root at letux:~# /usr/bin/arm-linux-gnueabihf/devmem2 0x49058038 w
/dev/mem opened.
Memory mapped at address 0xb6f1a000.
Value at address 0x49058038 (0xb6f1a038): 0xF001
root at letux:~#
And I can also see interrupts
root at letux:~# cat /proc/interrupts |fgrep tsc2007
164: 302 49058000.gpio 0 Edge tsc2007
root at letux:~# cat /proc/interrupts |fgrep tsc2007
164: 302 49058000.gpio 0 Edge tsc2007
root at letux:~# cat /proc/interrupts |fgrep tsc2007
164: 507 49058000.gpio 0 Edge tsc2007
root at letux:~# cat /proc/interrupts |fgrep tsc2007
164: 507 49058000.gpio 0 Edge tsc2007
root at letux:~# cat /proc/interrupts |fgrep tsc2007
164: 507 49058000.gpio 0 Edge tsc2007
root at letux:~#
>
>>
>>>> root at gta04:~# devmem2 0x49058034 w
>>>> /dev/mem opened.
>>>> Memory mapped at address 0xb6f77000.
>>>> Value at address 0x49058034 (0xb6f77034): 0xFBFFBFFF
>>>
>>> root at letux:~# /usr/bin/arm-linux-gnueabihf/devmem2 devmem2 0x49058034 w
>>> /dev/mem opened.
>>> Memory mapped at address 0xb6fd6000.
>>> Illegal data type '0'.
>>> root at letux:~#
>>>
>> devmem2 is duplicated in your commandline.
>
> Ah yes. I have to repeat
root at letux:~# /usr/bin/arm-linux-gnueabihf/devmem2 0x49058034 w
/dev/mem opened.
Memory mapped at address 0xb6fd7000.
Value at address 0x49058034 (0xb6fd7034): 0xFBFFBF7F
root at letux:~#
>
>>
>>>>
>>>> Any hints? reboot doen not help.
>>>> Power cycle helps.
>>>
>>> Maybe you can add some printk to tsc2007.c?
>>>
>> Hmm, just sending
>> /* Prepare for touch readings - power down ADC and enable PENIRQ */
>> err = tsc2007_xfer(ts, PWRDOWN);
>>
>> should be enough to get interrupts (or at least changing values in GPIO_DATAIN), shouldn't it?
>
> Yes. The chip should wake up on first touch pressureand send an interrupt.
>
>> So in doubt an i2cset should be enough.
>> Just another strange thing: Why is TSC2007_SETUP never used?
>
> Because 50 kOhm vs. 90 kOhm makes 16 µA difference and only if
> interrupt is active. And we use the onchip MAV filter which
> is enabled by default. So there is no big need to send an
> TSC2007_SETUP command to set the defaults.
>
> BR,
> Nikolaus
>
> _______________________________________________
> http://projects.goldelico.com/p/gta04-kernel/
> Letux-kernel mailing list
> Letux-kernel at openphoenux.org
> http://lists.goldelico.com/mailman/listinfo.cgi/letux-kernel
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 801 bytes
Desc: Message signed with OpenPGP using GPGMail
URL: <http://lists.goldelico.com/pipermail/letux-kernel/attachments/20180823/5836ea72/attachment.asc>
More information about the Letux-kernel
mailing list