Firefly开源社区

标题: IPC-M10R800-A3399C 六核工业级行业平板 触摸屏在一些情况下失效 [打印本页]

作者: brpk    时间: 2019-6-12 09:30
标题: IPC-M10R800-A3399C 六核工业级行业平板 触摸屏在一些情况下失效
本帖最后由 brpk 于 2019-6-12 10:42 编辑

IPC-M10R800-A3399C 六核工业级行业平板, 刷了官方 Ubuntu 18.04 LVDS 固件

发现一些情况下, 触摸屏会失效:

1. 通过 xrandr 旋转屏幕方向

    1. 刚开机时, 触摸屏有效

    2. 旋转屏幕方向, 触摸屏失效
  1. xrandr --output DSI-1 --rotate right
复制代码

    3. 恢复原始旋转方向, 触摸屏可能恢复有效
  1. xrandr --output DSI-1 --rotate normal
复制代码

    4. 旋转屏幕, 然后恢复, 重复若干次后, 触摸屏彻底失效, 只有重新上电才能恢复.

2. 重启 lightdm

    1. 刚开机时, 触摸屏有效

    2. 重启 lightdm, 触摸屏有几率出现短暂的失效, 时间不定, 10 秒以内
  1. sudo systemctl restart lightdm
复制代码

    3. 多次重启 lightdm, 若干次后触摸屏彻底失效, 只有重新上电才能恢复.
  1. while true; sudo systemctl restart lightdm; sleep 10; done
复制代码

---

尝试了修改驱动, 发现触摸屏失效后:

1. 查看中断信息, 触摸屏的中断计数不再增加.
  1. firefly@firefly:~$ cat /proc/interrupts | grep gsl
  2. 223:        267          0          0          0          0          0     gpio4  28 Level     gslX680
复制代码

2. 触摸屏的 Interrupt Handler 不再被调用.

3. 有很小几率出现另一个情况, 不触碰触摸屏, 重启 lightdm 时, 触摸屏的中断计数会增加一些, 触摸屏的 Interrupt Handler 也会被调用

4. rockchip-linux/kernel 中, 对 gslx680 的驱动有更新, 但参考进行修改后, 并没有解决问题.
History for drivers/input/touchscreen/gslx680.c - rockchip-linux/kernel

请教如何解决这个问题?


作者: penguin    时间: 2019-6-12 10:08
请发一下使用的固件版本是什么,另外你所说的触摸失效是指不能用吗,lvds你所用的命令是显示旋转但是触摸也需要旋转的,详细请看wiki ubuntu应用层一节
作者: brpk    时间: 2019-6-12 10:21
感谢回复!

固件从百度云下载的: AIO-3399C-LVDS-UBUNTU18.04-GPT-20190304-1222.img
Android Tool v2.58 中显示的固件版本:  8.1.276

我说的触摸失效是指点击屏幕没有任何反应, 不是指定位不准确. 同时可以从驱动中打印的信息看到, 根本没有调用 Interrupt Handler.

触摸也需要旋转我配置成功了, 没有问题, 不过与这里的失效没有关系.

作者: penguin    时间: 2019-6-12 10:26
旋转后必失效吗
作者: brpk    时间: 2019-6-12 10:47
旋转多次以后, 才会完全失效.  我刚测试约 20 次后失效.

每次旋转后, 有个短暂的临时失效, 几秒后恢复正常.

像是显示屏的复位, 干扰到触摸.
作者: penguin    时间: 2019-6-12 10:50
查一下你的板的配置是2+16 还是2+8
作者: brpk    时间: 2019-6-12 10:54
我的测试环境, 两个 SSH,  一个用 dmesg -w 打印内核消息.  另一个用 xrandr 旋转屏幕方向



失效以后的现象:

1. 手指点触摸屏没有任何反应 (鼠标指针不动), 也没有任何内核消息输出
2. 旋转屏幕方向, 居然输出上图所示消息, 可以看到进了中断处理


作者: brpk    时间: 2019-6-12 10:57
penguin 发表于 2019-6-12 10:50
查一下你的板的配置是2+16 还是2+8

2+16
作者: penguin    时间: 2019-6-12 11:13
cat /proc/version 看一下内核版本,你自己有自己单独升级过内核吗?
作者: brpk    时间: 2019-6-12 11:20
  1. firefly@firefly:~$ cat /proc/version
  2. Linux version 4.4.167 (root@acd251779aff) ((no: 55359a0f2f3880d7ea33292715e81ae82f96c6d8) (gcc version 6.3.1 20170404 (Linaro GCC 6.3-2017.05) ) #18 SMP Wed Jun 12 02:30:14 UTC 2019
复制代码

现在是自己编译的内核, 为了看驱动调试信息.

我再恢复原始固件确认一下这个问题.


作者: penguin    时间: 2019-6-12 11:39
确认一下吧,我找了块2+16的旋转了好多次也没有出现你所说的问题,如果你那边问题是旋转后必现的话试一下重烧固件,如果题还是存在的话,建议试一下升一下android的lvds确认一下是不是硬件问题
作者: brpk    时间: 2019-6-12 11:42
本帖最后由 brpk 于 2019-6-12 11:44 编辑

恢复原始官方固件后再试了, 旋转屏幕方向多次后, 触摸屏完全失效.
  1. firefly@firefly:~$ cat /proc/version
  2. Linux version 4.4.154 (daijh@tchip14) (gcc version 6.3.1 20170404 (Linaro GCC 6.3-2017.05) ) #28 SMP Mon Mar 4 12:21:30 CST 2019
复制代码

旋转屏幕时, 内核有错误信息如下:
  1. [  490.333807] rockchip-vop ff900000.vop: [drm:vop_crtc_enable] Update mode to 800x1280p0, type: 16
  2. [  490.336429] target_mbps = 800
  3. [  490.336514] dw-mipi-dsi ff960000.dsi: final DSI-Link bandwidth: 800 x 4 Mbps
  4. [  490.348614] dw-mipi-dsi ff960000.dsi: failed to wait for phy clk lane stop state
  5. [  490.492731] dw-mipi-dsi ff960000.dsi: lane module is not in stop state
  6. [  504.961730] rockchip-vop ff900000.vop: [drm:vop_crtc_enable] Update mode to 800x1280p0, type: 16
  7. [  504.962658] target_mbps = 800
  8. [  504.962674] dw-mipi-dsi ff960000.dsi: final DSI-Link bandwidth: 800 x 4 Mbps
  9. [  504.974573] dw-mipi-dsi ff960000.dsi: failed to wait for phy clk lane stop state
  10. [  505.113938] dw-mipi-dsi ff960000.dsi: lane module is not in stop state
复制代码

另外, 旋转屏幕几次后, 遇到另一个现象, 屏幕上只有边缘的一小块区域触摸有效, 其他区域触摸无效.  随后再旋转几次, 就完全失效了.


作者: brpk    时间: 2019-6-12 12:18
本帖最后由 brpk 于 2019-6-12 12:21 编辑
penguin 发表于 2019-6-12 11:39
确认一下吧,我找了块2+16的旋转了好多次也没有出现你所说的问题,如果你那边问题是旋转后必现的话试一下重 ...

请问你那边也是工业平板吗?  是不是 ubuntu 18.04 系统?

方便的话, 麻烦你帮我试下旋转屏幕和重启 lightdm, 20 次应该够了
  1. while true; do xrandr --output DSI-1 --rotate right; sleep 3; xrandr --output DSI-1 --rotate normal; sleep 3; done
  2. while true; do sudo systemctl restart lightdm; sleep 10; done
复制代码

我试下 Android, 不过 Android 的旋转屏幕跟 xrandr 可能不一样.


作者: penguin    时间: 2019-6-12 12:43
我这边没有整机,但是用的底板AIO-3399C和屏幕应该跟你的已经是一样的了,测试次数也已经远远超过了20次.如果实在不行就寄回来我们这边检测一下




欢迎光临 Firefly开源社区 (https://dev.t-firefly.com/) Powered by Discuz! X3.1