Torizon Weston Touch Calibrator issue: Known "DPI-1 was not found" error

Dear ladies and gentlemen,
dear @jeremias.tx .

We are using Torizon with Apalis iMX6 1GB V1.1B and Customized Carrier Board and we are facing issue while running touch-calibrator container, so that we are unable to calibrate the touch screen. After running touch calibrator container, we are getting weston-touch-calibrator error: “DPI-1” was not found error. We have stopped all the container before running calibrator as was requested by your Touch Screen Calibration (Torizon) article.

Faced with similar imx7-torizon-weston-touch-post Torizon Weston Touch Calibrator issue, we are running in the same issue for imx6: weston-touch-calibrator error: "DPI-1" was not found error. Our setting refers to two different LVDS displays, only having touch on LVDS1.

As you have requested at the former post, we have prepared the same outputs in the following. So, we use the following Torizon version:

# cat /etc/issue

Torizoncore Upstream 5.1.0-devel-202011+build.4 \n \l

Event 2 refers to relevant touch and seems to be recognized correctly:

# udevadm info /dev/input/event2 

P: /devices/soc0/soc/2100000.aips-bus/21a8000.i2c/i2c-1/1-005d/input/input2/event2
N: input/event2
L: 0
S: input/by-path/platform-21a8000.i2c-event
E: DEVPATH=/devices/soc0/soc/2100000.aips-bus/21a8000.i2c/i2c-1/1-005d/input/input2/event2
E: DEVNAME=/dev/input/event2
E: MAJOR=13
E: MINOR=66
E: SUBSYSTEM=input
E: USEC_INITIALIZED=12588259
E: ID_INPUT=1
E: ID_INPUT_TOUCHSCREEN=1
E: ID_INPUT_KEY=1
E: ID_PATH=platform-21a8000.i2c
E: ID_PATH_TAG=platform-21a8000_i2c
E: UDISKS_FILESYSTEM_SHARED=1
E: DEVLINKS=/dev/input/by-path/platform-21a8000.i2c-event

Event 1 refer to gpio-keys and seems to be work properly:

# udevadm info /dev/input/event1

P: /devices/soc0/gpio-keys/input/input1/event1
N: input/event1
L: 0
S: input/by-path/platform-gpio-keys-event
E: DEVPATH=/devices/soc0/gpio-keys/input/input1/event1
E: DEVNAME=/dev/input/event1
E: MAJOR=13
E: MINOR=65
E: SUBSYSTEM=input
E: USEC_INITIALIZED=9162730
E: ID_INPUT=1
E: ID_INPUT_KEY=1
E: ID_PATH=platform-gpio-keys
E: ID_PATH_TAG=platform-gpio-keys
E: UDISKS_FILESYSTEM_SHARED=1
E: DEVLINKS=/dev/input/by-path/platform-gpio-keys-event
E: TAGS=:power-switch:

And Event 0 seems to be not relevant:

# udevadm info /dev/input/event0

P: /devices/soc0/soc/2100000.aips-bus/21a4000.i2c/i2c-2/2-0041/stmpe-ts/input/input0/event0
N: input/event0
L: 0
S: input/by-path/platform-21a4000.i2c-platform-stmpe-ts-event
S: input/touchscreen0
E: DEVPATH=/devices/soc0/soc/2100000.aips-bus/21a4000.i2c/i2c-2/2-0041/stmpe-ts/input/input0/event0
E: DEVNAME=/dev/input/event0
E: MAJOR=13
E: MINOR=64
E: SUBSYSTEM=input
E: USEC_INITIALIZED=10524289
E: ID_INPUT=1
E: ID_INPUT_TOUCHSCREEN=1
E: ID_PATH=platform-21a4000.i2c-platform-stmpe-ts
E: ID_PATH_TAG=platform-21a4000_i2c-platform-stmpe-ts
E: UDISKS_FILESYSTEM_SHARED=1
E: DEVLINKS=/dev/input/by-path/platform-21a4000.i2c-platform-stmpe-ts-event /dev/input/touchscreen0

Available input devices seem to be identified, too:

# ls -al /dev/input

total 0
drwxr-xr-x  3 root root     140 Jan 23 16:09 .
drwxr-xr-x 14 root root   14820 Jan 23 16:15 ..
drwxr-xr-x  2 root root     100 Jan 23 16:09 by-path
crw-rw----  1 root input 13, 64 Jan 23 16:09 event0
crw-rw----  1 root input 13, 65 Jan 23 16:09 event1
crw-rw----  1 root input 13, 66 Jan 23 16:09 event2
lrwxrwxrwx  1 root root       6 Jan 23 16:09 touchscreen0 -> event0

Both devices seem to work correctly:

# ls -al /dev/dri

total 0
drwxr-xr-x  3 root root        120 Jan 23 16:09 .
drwxr-xr-x 14 root root      14820 Jan 23 16:15 ..
drwxr-xr-x  2 root root        100 Jan 23 16:09 by-path
crw-rw----  1 root video  226,   0 Jan 23 16:09 card0
crw-rw----  1 root video  226,   1 Jan 23 16:09 card1
crw-rw-rw-  1 root render 226, 128 Jan 23 16:09 renderD128

It seems that both LVDS displays are associated with card 1:

# ls -al  /sys/class/drm

total 0
drwxr-xr-x  2 root root    0 Jan 23 16:27 .
drwxr-xr-x 59 root root    0 Jan 23 16:15 ..
lrwxrwxrwx  1 root root    0 Jan 23 16:27 card0 -> ../../devices/platform/etnaviv/drm/card0
lrwxrwxrwx  1 root root    0 Jan 23 16:27 card1 -> ../../devices/soc0/display-subsystem/drm/card1
lrwxrwxrwx  1 root root    0 Jan 23 16:27 card1-LVDS-1 -> ../../devices/soc0/display-subsystem/drm/card1/card1-LVDS-1
lrwxrwxrwx  1 root root    0 Jan 23 16:27 card1-LVDS-2 -> ../../devices/soc0/display-subsystem/drm/card1/card1-LVDS-2
lrwxrwxrwx  1 root root    0 Jan 23 16:27 renderD128 -> ../../devices/platform/etnaviv/drm/renderD128
-r--r--r--  1 root root 4096 Jan 23 16:27 version

When starting the configuration container with docker run -ti --rm --privileged -v /dev:/dev -v /run/udev/:/run/udev/ -v /etc/udev/rules.d:/etc/udev/rules.d torizon/weston-touch-calibrator:2, both displays show typical gray weston surface, a calibration app is not displayed, and we are running in the weston-touch-calibrator error: "DPI-1" was not found. on console as follows:

# docker run -ti --rm --privileged -v /dev:/dev -v /run/udev/:/run/udev/ -v /etc/udev/rules.d:/etc/udev/rules.d torizon/weston-touch-calibrator:2

[16:28:05.030] weston 8.0.0
               https://wayland.freedesktop.org
               Bug reports to: https://gitlab.freedesktop.org/wayland/weston/issues/
               Build: 8.0.0
[16:28:05.031] Command line: /usr/bin/weston
[16:28:05.031] OS: Linux, 5.4.61-5.1.0-devel+git.26abb5b86e17, #1-TorizonCore SMP Wed Sep 23 16:54:17 UTC 2020, armv7l
[16:28:05.031] warning: XDG_RUNTIME_DIR "/tmp/weston-xdg" is not configured
correctly.  Unix access mode must be 0700 (current mode is 755),
and must be owned by the user (current owner is UID 0).
Refer to your distribution on how to get it, or
http://www.freedesktop.org/wiki/Specifications/basedir-spec
on how to implement it.
[16:28:05.032] Using config file '/etc/xdg/weston/weston.ini'
[16:28:05.033] Output repaint window is 7 ms maximum.
[16:28:05.033] Loading module '/usr/lib/arm-linux-gnueabihf/libweston-8/drm-backend.so'
[16:28:05.053] initializing drm backend
[16:28:05.054] logind: not running in a systemd session
[16:28:05.054] logind: cannot setup systemd-logind helper (-61), using legacy fallback
[16:28:05.077] using /dev/dri/card1
[16:28:05.077] DRM: supports universal planes
[16:28:05.077] DRM: supports atomic modesetting
[16:28:05.077] DRM: supports picture aspect ratio
[16:28:05.077] Loading module '/usr/lib/arm-linux-gnueabihf/libweston-8/gl-renderer.so'
[16:28:05.436] EGL client extensions: EGL_EXT_device_base
               EGL_EXT_device_enumeration EGL_EXT_device_query
               EGL_EXT_platform_base EGL_KHR_client_get_all_proc_addresses
               EGL_EXT_client_extensions EGL_KHR_debug EGL_EXT_platform_device
               EGL_EXT_platform_wayland EGL_KHR_platform_wayland
               EGL_EXT_platform_x11 EGL_KHR_platform_x11 EGL_MESA_platform_gbm
               EGL_KHR_platform_gbm EGL_MESA_platform_surfaceless
[16:28:05.442] EGL version: 1.4
[16:28:05.442] EGL vendor: Mesa Project
[16:28:05.442] EGL client APIs: OpenGL OpenGL_ES 
[16:28:05.442] EGL extensions: EGL_ANDROID_blob_cache
               EGL_ANDROID_native_fence_sync EGL_EXT_buffer_age
               EGL_EXT_image_dma_buf_import
               EGL_EXT_image_dma_buf_import_modifiers EGL_KHR_cl_event2
               EGL_KHR_config_attribs EGL_KHR_create_context
               EGL_KHR_create_context_no_error EGL_KHR_fence_sync
               EGL_KHR_get_all_proc_addresses EGL_KHR_gl_renderbuffer_image
               EGL_KHR_gl_texture_2D_image EGL_KHR_gl_texture_3D_image
               EGL_KHR_gl_texture_cubemap_image EGL_KHR_image
               EGL_KHR_image_base EGL_KHR_image_pixmap
               EGL_KHR_no_config_context EGL_KHR_reusable_sync
               EGL_KHR_surfaceless_context EGL_EXT_pixel_format_float
               EGL_KHR_wait_sync EGL_MESA_configless_context
               EGL_MESA_drm_image EGL_MESA_image_dma_buf_export
               EGL_MESA_query_driver EGL_WL_bind_wayland_display
[16:28:05.444] EGL_KHR_surfaceless_context available
[16:28:05.458] GL version: OpenGL ES 2.0 Mesa 20.1.5
[16:28:05.458] GLSL version: OpenGL ES GLSL ES 1.0.16
[16:28:05.458] GL vendor: etnaviv
[16:28:05.458] GL renderer: Vivante GC2000 rev 5108
[16:28:05.458] GL extensions: GL_EXT_blend_minmax GL_EXT_multi_draw_arrays
               GL_EXT_texture_filter_anisotropic
               GL_EXT_texture_compression_s3tc GL_EXT_texture_compression_dxt1
               GL_EXT_texture_format_BGRA8888
               GL_OES_compressed_ETC1_RGB8_texture GL_OES_depth24
               GL_OES_element_index_uint GL_OES_fbo_render_mipmap
               GL_OES_mapbuffer GL_OES_rgb8_rgba8 GL_OES_standard_derivatives
               GL_OES_stencil8 GL_OES_texture_3D GL_OES_texture_npot
               GL_OES_vertex_half_float GL_OES_EGL_image GL_OES_depth_texture
               GL_AMD_performance_monitor GL_OES_packed_depth_stencil
               GL_EXT_texture_type_2_10_10_10_REV GL_OES_get_program_binary
               GL_APPLE_texture_max_level GL_EXT_discard_framebuffer
               GL_EXT_read_format_bgra GL_EXT_frag_depth
               GL_NV_fbo_color_attachments GL_OES_EGL_image_external
               GL_OES_EGL_sync GL_OES_vertex_array_object
               GL_ANGLE_texture_compression_dxt3
               GL_ANGLE_texture_compression_dxt5
               GL_EXT_occlusion_query_boolean GL_EXT_unpack_subimage
               GL_NV_draw_buffers GL_NV_read_buffer GL_NV_read_depth
               GL_NV_read_depth_stencil GL_NV_read_stencil GL_EXT_draw_buffers
               GL_EXT_map_buffer_range GL_KHR_debug
               GL_KHR_texture_compression_astc_ldr GL_NV_pixel_buffer_object
               GL_OES_required_internalformat GL_OES_surfaceless_context
               GL_EXT_separate_shader_objects
               GL_EXT_compressed_ETC1_RGB8_sub_texture
               GL_EXT_draw_elements_base_vertex GL_EXT_texture_border_clamp
               GL_KHR_context_flush_control GL_OES_draw_elements_base_vertex
               GL_OES_texture_border_clamp GL_KHR_no_error
               GL_KHR_texture_compression_astc_sliced_3d
               GL_EXT_disjoint_timer_query
               GL_EXT_texture_compression_s3tc_srgb
               GL_KHR_parallel_shader_compile
[16:28:05.461] GL ES 2 renderer features:
               read-back format: BGRA
               wl_shm sub-image to texture: yes
               EGL Wayland extension: yes
[16:28:05.478] event1  - gpio-keys: is tagged by udev as: Keyboard
[16:28:05.478] event1  - gpio-keys: device is a keyboard
[16:28:05.490] event0  - stmpe-ts: is tagged by udev as: Touchscreen
[16:28:05.491] event0  - stmpe-ts: device is a touch device
[16:28:05.498] event2  - Goodix Capacitive TouchScreen: is tagged by udev as: Keyboard Touchscreen
[16:28:05.499] event2  - Goodix Capacitive TouchScreen: device is a keyboard
[16:28:05.500] event2  - Goodix Capacitive TouchScreen: device is a touch device
[16:28:05.528] libinput: configuring device "gpio-keys".
[16:28:05.528] Touchscreen - stmpe-ts - /sys/devices/soc0/soc/2100000.aips-bus/21a4000.i2c/i2c-2/2-0041/stmpe-ts/input/input0/event0
[16:28:05.528] libinput: configuring device "stmpe-ts".
[16:28:05.528] input device event0 has no enabled output associated (none named), skipping calibration for now.
[16:28:05.529] Touchscreen - Goodix Capacitive TouchScreen - /sys/devices/soc0/soc/2100000.aips-bus/21a8000.i2c/i2c-1/1-005d/input/input2/event2
[16:28:05.529] libinput: configuring device "Goodix Capacitive TouchScreen".
[16:28:05.529] input device event2 has no enabled output associated (none named), skipping calibration for now.
[16:28:05.529] DRM: head 'LVDS-1' found, connector 54 is connected, EDID make 'unknown', model 'unknown', serial 'unknown'
[16:28:05.530] DRM: head 'LVDS-2' found, connector 56 is connected, EDID make 'unknown', model 'unknown', serial 'unknown'
[16:28:05.530] Registered plugin API 'weston_drm_output_api_v1' of size 12
[16:28:05.531] Registered plugin API 'weston_drm_virtual_output_api_v1' of size 24
[16:28:05.532] Chosen EGL config details: id:  21 rgba: 8 8 8 0 buf: 24 dep:  0 stcl: 0 int: 1-1 type: win vis_id: XRGB8888 (0x34325258)
[16:28:05.532] Output LVDS-1 (crtc 34) video modes:
               1280x320@62.0, preferred, current, 36.0 MHz
[16:28:05.532] associating input device event1 with output LVDS-1 (none by udev)
[16:28:05.532] associating input device event0 with output LVDS-1 (none by udev)
[16:28:05.533] associating input device event2 with output LVDS-1 (none by udev)
[16:28:05.534] Output 'LVDS-1' enabled with head(s) LVDS-1
[16:28:05.535] Chosen EGL config details: id:  21 rgba: 8 8 8 0 buf: 24 dep:  0 stcl: 0 int: 1-1 type: win vis_id: XRGB8888 (0x34325258)
[16:28:05.535] Output LVDS-2 (crtc 41) video modes:
               256x1920@61.1, preferred, current, 75.5 MHz
[16:28:05.536] Output 'LVDS-2' enabled with head(s) LVDS-2
[16:28:05.536] Compositor capabilities:
               arbitrary surface rotation: yes
               screen capture uses y-flip: yes
               presentation clock: CLOCK_MONOTONIC, id 1
               presentation clock resolution: 0.000000001 s
[16:28:05.537] Loading module '/usr/lib/arm-linux-gnueabihf/weston/desktop-shell.so'
[16:28:05.539] launching '/usr/lib/arm-linux-gnueabihf/weston-keyboard'
[16:28:05.544] Loading module '/usr/lib/arm-linux-gnueabihf/libweston-8/xwayland.so'
[16:28:05.598] Registered plugin API 'weston_xwayland_v1' of size 16
[16:28:05.598] Registered plugin API 'weston_xwayland_surface_v1' of size 8
[16:28:05.599] xserver listening on display :0
[16:28:05.599] launching '/usr/lib/arm-linux-gnueabihf/weston-desktop-shell'
could not load cursor 'dnd-move'
could not load cursor 'dnd-move'
could not load cursor 'dnd-copy'
could not load cursor 'dnd-copy'
could not load cursor 'dnd-none'
could not load cursor 'dnd-none'
could not load cursor 'dnd-move'
could not load cursor 'dnd-copy'
could not load cursor 'dnd-none'
weston-touch-calibrator error: "DPI-1" was not found.

Having tried to start weston-touch-calibrator with $CT_TAG_WESTON_TOUCH_CALIBRATOR=1, or starting weston-touch-calibrator with the workaround container you have suggested at the referenced post (docker run -ti --rm --privileged -v /dev:/dev -v /run/udev/:/run/udev/ -v /etc/udev/rules.d:/etc/udev/rules.d torizon/arm32v7-debian-weston-touch-calibrator:1.0.0-20201105), the same error log is displayed.

We assume, this is the reason for not having the current touch information at

# cat /etc/udev/rules.d/touchscreen.rules

# There are a number of modifiers that are allowed to be used in some
# of the different fields. They provide the following subsitutions:
#
# %n the "kernel number" of the device.
#    For example, 'sda3' has a "kernel number" of '3'
# %e the smallest number for that name which does not matches an existing node
# %k the kernel name for the device
# %M the kernel major number for the device
# %m the kernel minor number for the device
# %b the bus id for the device
# %c the string returned by the PROGRAM
# %s{filename} the content of a sysfs attribute
# %% the '%' char itself
#

# Create a symlink to any touchscreen input device
SUBSYSTEM=="input", KERNEL=="event[0-9]*", ATTRS{modalias}=="input:*-e0*,3,*a0,1,*18,*", SYMLINK+="input/touchscreen0"
SUBSYSTEM=="input", KERNEL=="event[0-9]*", ATTRS{modalias}=="ads7846", SYMLINK+="input/touchscreen0"

Here, we would expect something like SUBSYSTEM=="input", KERNEL=="event[0-9]*", ENV{ID_INPUT_TOUCHSCREEN}=="1", ENV{LIBINPUT_CALIBRATION_MATRIX}="1.039948 0.011494 -0.031650 0.009743 -1.089353 1.047852" in the last line.

Since the touch is recognized once, we assume the Goodix GT928 touch driver is working correctly. Do we need to use an workaround, too?

Please let us know, if you need any further information.

Thank you for your help.

Best,

Marcus

Greetings @Marcus

I guess this is intended by “design” more or less. To explain the touch calibration container is meant to calibrate touch on the DPI-1 display interface for modules with GPUs or the Unknown-1 interface for modules without GPUs. However in your case you have an LVDS display connected not a DPI type display connected. Which causes the tool to error out as you’ve seen.

However the touch calibration tool is only meant to tune/calibrate resistive touch devices. Capacitive touch devices like the Goodix GT928 that you have usually don’t require such calibration. Is your touch screen really off? Or is there another reason you’re trying to perform calibration here?

Best Regards,
Jeremias

Greetings @jeremias.tx

The purpose for using the calibration container has been debugging. I or rather we wanted to see touch information at # cat /etc/udev/rules.d/touchscreen.rules at its last line, which is here: SUBSYSTEM=="input", KERNEL=="event[0-9]*", ENV{ID_INPUT_TOUCHSCREEN}=="1", ENV{LIBINPUT_CALIBRATION_MATRIX}="1.039948 0.011494 -0.031650 0.009743 -1.089353 1.047852".
Maybe, this line is not generated because we do not connect a DPI type display - makes sense, great point, thank you. If these values had updated continuously, that would have been a proof of working touch…

But how to debug capacitive touch when logs look nice as shown above?

Let’s make it simple… Assuming to have two lvds displays of the same type - these have capacative touch and are connected with a custom carrier board. When starting your weston wayland compositor according to your Debian Containers for Torizon article with docker run -d --rm --name=weston --net=host --cap-add CAP_SYS_TTY_CONFIG -v /dev:/dev -v /tmp:/tmp -v /run/udev/:/run/udev/ --device-cgroup-rule='c 4:* rmw' --device-cgroup-rule='c 13:* rmw' --device-cgroup-rule='c 199:* rmw' --device-cgroup-rule='c 226:* rmw' torizon/weston:$CT_TAG_WESTON --developer weston-launch --tty=/dev/tty7 --user=torizon, weston’s gray background shows up at both screens. Only the first display accepts touch on terminal item, and shows terminal window on the first screen after 4 seconds. Although that’s very very slow from my perspective and I wonder if imx6 is to weak for two displays, I am surprised that display 1 only accepts touch at the very left top corner. The rest seems to disregard touches.
Display 2 does not accept any touch at all although it is driven by the same driver…
The reason why I belief in this configuration is that it has already worked with non-Torizon recipes (e.g. linux-toradex-4.9-1.0.x).

Do you know advice?

Thank you for your support on Toradex side.

Best regards,

Marcus

Relevant information, you can see below… Please let me know if you need further information.

Torizon image is customized in accordance with your Device Tree Overlays on Torizon article by

  1. custom command torizoncore-builder dt custom --devicetree-source ./imx6q-test-next.dts
  2. union command torizoncore-builder union --union-branch lvdsBranch and
  3. deploy command.

Files are attached here: Overlays.

Here, you can see weston logs:

# docker logs weston

SoC is: 'i.MX6Q'
SoC has GPU: true
SoC has DPU: false
g2d implementation: viv
Date: 2021-02-01 UTC
[17:41:38.136] weston 8.0.0
Date: 2021-02-01 UTC
[17:41:38.136] weston 8.0.0
               https://wayland.freedesktop.org
               https://wayland.freedesktop.org
               Bug reports to: https://gitlab.freedesktop.org/wayland/weston/issues/
               Bug reports to: https://gitlab.freedesktop.org/wayland/weston/issues/
               Build: 8.0.0
[17:41:38.137] Command line: /usr/bin/weston
               Build: 8.0.0
[17:41:38.137] Command line: /usr/bin/weston
[17:41:38.137] OS: Linux, 5.4.61-5.1.0-devel+git.26abb5b86e17, #1-TorizonCore SMP Wed Sep 23 16:54:17 UTC 2020, armv7l
[17:41:38.137] OS: Linux, 5.4.61-5.1.0-devel+git.26abb5b86e17, #1-TorizonCore SMP Wed Sep 23 16:54:17 UTC 2020, armv7l
[17:41:38.141] Using config file '/etc/xdg/weston-dev//weston.ini'
[17:41:38.143] Output repaint window is 7 ms maximum.
[17:41:38.141] Using config file '/etc/xdg/weston-dev//weston.ini'
[17:41:38.143] Output repaint window is 7 ms maximum.
[17:41:38.145] Loading module '/usr/lib/arm-linux-gnueabihf/libweston-8/drm-backend.so'
[17:41:38.145] Loading module '/usr/lib/arm-linux-gnueabihf/libweston-8/drm-backend.so'
[17:41:38.182] initializing drm backend
[17:41:38.182] initializing drm backend
[17:41:38.187] logind: not running in a systemd session
[17:41:38.187] logind: not running in a systemd session
[17:41:38.187] logind: cannot setup systemd-logind helper (-61), using legacy fallback
[17:41:38.187] logind: cannot setup systemd-logind helper (-61), using legacy fallback
[17:41:38.220] using /dev/dri/card1
[17:41:38.220] DRM: supports universal planes
[17:41:38.220] using /dev/dri/card1
[17:41:38.220] DRM: supports atomic modesetting
[17:41:38.220] DRM: supports picture aspect ratio
[17:41:38.222] Loading module '/usr/lib/arm-linux-gnueabihf/libweston-8/gl-renderer.so'
[17:41:38.220] DRM: supports universal planes
[17:41:38.220] DRM: supports atomic modesetting
[17:41:38.220] DRM: supports picture aspect ratio
[17:41:38.222] Loading module '/usr/lib/arm-linux-gnueabihf/libweston-8/gl-renderer.so'
[17:41:39.219] EGL client extensions: EGL_EXT_device_base
               EGL_EXT_device_enumeration EGL_EXT_device_query
               EGL_EXT_platform_base EGL_KHR_client_get_all_proc_addresses
               EGL_EXT_client_extensions EGL_KHR_debug EGL_EXT_platform_device
               EGL_EXT_platform_wayland EGL_KHR_platform_wayland
               EGL_EXT_platform_x11 EGL_KHR_platform_x11 EGL_MESA_platform_gbm
               EGL_KHR_platform_gbm EGL_MESA_platform_surfaceless
[17:41:39.219] EGL client extensions: EGL_EXT_device_base
               EGL_EXT_device_enumeration EGL_EXT_device_query
               EGL_EXT_platform_base EGL_KHR_client_get_all_proc_addresses
               EGL_EXT_client_extensions EGL_KHR_debug EGL_EXT_platform_device
               EGL_EXT_platform_wayland EGL_KHR_platform_wayland
               EGL_EXT_platform_x11 EGL_KHR_platform_x11 EGL_MESA_platform_gbm
               EGL_KHR_platform_gbm EGL_MESA_platform_surfaceless
[17:41:39.225] EGL version: 1.4
[17:41:39.225] EGL vendor: Mesa Project
[17:41:39.225] EGL client APIs: OpenGL OpenGL_ES 
[17:41:39.225] EGL extensions: EGL_ANDROID_blob_cache
               EGL_ANDROID_native_fence_sync EGL_EXT_buffer_age
               EGL_EXT_image_dma_buf_import
               EGL_EXT_image_dma_buf_import_modifiers EGL_KHR_cl_event2
               EGL_KHR_config_attribs EGL_KHR_create_context
               EGL_KHR_create_context_no_error EGL_KHR_fence_sync
               EGL_KHR_get_all_proc_addresses EGL_KHR_gl_renderbuffer_image
[17:41:39.225] EGL version: 1.4
               EGL_KHR_gl_texture_2D_image EGL_KHR_gl_texture_3D_image
               EGL_KHR_gl_texture_cubemap_image EGL_KHR_image
[17:41:39.225] EGL vendor: Mesa Project
[17:41:39.225] EGL client APIs: OpenGL OpenGL_ES 
               EGL_KHR_image_base EGL_KHR_image_pixmap
               EGL_KHR_no_config_context EGL_KHR_reusable_sync
[17:41:39.225] EGL extensions: EGL_ANDROID_blob_cache
               EGL_KHR_surfaceless_context EGL_EXT_pixel_format_float
               EGL_KHR_wait_sync EGL_MESA_configless_context
               EGL_ANDROID_native_fence_sync EGL_EXT_buffer_age
               EGL_MESA_drm_image EGL_MESA_image_dma_buf_export
               EGL_MESA_query_driver EGL_WL_bind_wayland_display
               EGL_EXT_image_dma_buf_import
[17:41:39.226] EGL_KHR_surfaceless_context available
               EGL_EXT_image_dma_buf_import_modifiers EGL_KHR_cl_event2
               EGL_KHR_config_attribs EGL_KHR_create_context
               EGL_KHR_create_context_no_error EGL_KHR_fence_sync
               EGL_KHR_get_all_proc_addresses EGL_KHR_gl_renderbuffer_image
               EGL_KHR_gl_texture_2D_image EGL_KHR_gl_texture_3D_image
               EGL_KHR_gl_texture_cubemap_image EGL_KHR_image
               EGL_KHR_image_base EGL_KHR_image_pixmap
               EGL_KHR_no_config_context EGL_KHR_reusable_sync
               EGL_KHR_surfaceless_context EGL_EXT_pixel_format_float
               EGL_KHR_wait_sync EGL_MESA_configless_context
               EGL_MESA_drm_image EGL_MESA_image_dma_buf_export
               EGL_MESA_query_driver EGL_WL_bind_wayland_display
[17:41:39.226] EGL_KHR_surfaceless_context available
[17:41:39.267] GL version: OpenGL ES 2.0 Mesa 20.1.5
[17:41:39.267] GLSL version: OpenGL ES GLSL ES 1.0.16
[17:41:39.267] GL version: OpenGL ES 2.0 Mesa 20.1.5
[17:41:39.267] GL vendor: etnaviv
[17:41:39.267] GLSL version: OpenGL ES GLSL ES 1.0.16
[17:41:39.267] GL renderer: Vivante GC2000 rev 5108
[17:41:39.267] GL vendor: etnaviv
[17:41:39.267] GL renderer: Vivante GC2000 rev 5108
[17:41:39.267] GL extensions: GL_EXT_blend_minmax GL_EXT_multi_draw_arrays
               GL_EXT_texture_filter_anisotropic
               GL_EXT_texture_compression_s3tc GL_EXT_texture_compression_dxt1
[17:41:39.267] GL extensions: GL_EXT_blend_minmax GL_EXT_multi_draw_arrays
               GL_EXT_texture_filter_anisotropic
               GL_EXT_texture_format_BGRA8888
               GL_EXT_texture_compression_s3tc GL_EXT_texture_compression_dxt1
               GL_OES_compressed_ETC1_RGB8_texture GL_OES_depth24
               GL_EXT_texture_format_BGRA8888
               GL_OES_element_index_uint GL_OES_fbo_render_mipmap
               GL_OES_compressed_ETC1_RGB8_texture GL_OES_depth24
               GL_OES_mapbuffer GL_OES_rgb8_rgba8 GL_OES_standard_derivatives
               GL_OES_element_index_uint GL_OES_fbo_render_mipmap
               GL_OES_stencil8 GL_OES_texture_3D GL_OES_texture_npot
               GL_OES_mapbuffer GL_OES_rgb8_rgba8 GL_OES_standard_derivatives
               GL_OES_stencil8 GL_OES_texture_3D GL_OES_texture_npot
               GL_OES_vertex_half_float GL_OES_EGL_image GL_OES_depth_texture
               GL_OES_vertex_half_float GL_OES_EGL_image GL_OES_depth_texture
               GL_AMD_performance_monitor GL_OES_packed_depth_stencil
               GL_AMD_performance_monitor GL_OES_packed_depth_stencil
               GL_EXT_texture_type_2_10_10_10_REV GL_OES_get_program_binary
               GL_EXT_texture_type_2_10_10_10_REV GL_OES_get_program_binary
               GL_APPLE_texture_max_level GL_EXT_discard_framebuffer
               GL_APPLE_texture_max_level GL_EXT_discard_framebuffer
               GL_EXT_read_format_bgra GL_EXT_frag_depth
               GL_EXT_read_format_bgra GL_EXT_frag_depth
               GL_NV_fbo_color_attachments GL_OES_EGL_image_external
               GL_NV_fbo_color_attachments GL_OES_EGL_image_external
               GL_OES_EGL_sync GL_OES_vertex_array_object
               GL_OES_EGL_sync GL_OES_vertex_array_object
               GL_ANGLE_texture_compression_dxt3
               GL_ANGLE_texture_compression_dxt3
               GL_ANGLE_texture_compression_dxt5
               GL_ANGLE_texture_compression_dxt5
               GL_EXT_occlusion_query_boolean GL_EXT_unpack_subimage
               GL_NV_draw_buffers GL_NV_read_buffer GL_NV_read_depth
               GL_EXT_occlusion_query_boolean GL_EXT_unpack_subimage
               GL_NV_read_depth_stencil GL_NV_read_stencil GL_EXT_draw_buffers
               GL_NV_draw_buffers GL_NV_read_buffer GL_NV_read_depth
               GL_EXT_map_buffer_range GL_KHR_debug
               GL_NV_read_depth_stencil GL_NV_read_stencil GL_EXT_draw_buffers
               GL_KHR_texture_compression_astc_ldr GL_NV_pixel_buffer_object
               GL_OES_required_internalformat GL_OES_surfaceless_context
               GL_EXT_map_buffer_range GL_KHR_debug
               GL_EXT_separate_shader_objects
               GL_EXT_compressed_ETC1_RGB8_sub_texture
               GL_EXT_draw_elements_base_vertex GL_EXT_texture_border_clamp
               GL_KHR_context_flush_control GL_OES_draw_elements_base_vertex
               GL_OES_texture_border_clamp GL_KHR_no_error
               GL_KHR_texture_compression_astc_ldr GL_NV_pixel_buffer_object
               GL_KHR_texture_compression_astc_sliced_3d
               GL_EXT_disjoint_timer_query
               GL_EXT_texture_compression_s3tc_srgb
               GL_KHR_parallel_shader_compile
[17:41:39.269] GL ES 2 renderer features:
               read-back format: BGRA
               wl_shm sub-image to texture: yes
               EGL Wayland extension: yes
               GL_OES_required_internalformat GL_OES_surfaceless_context
               GL_EXT_separate_shader_objects
               GL_EXT_compressed_ETC1_RGB8_sub_texture
               GL_EXT_draw_elements_base_vertex GL_EXT_texture_border_clamp
               GL_KHR_context_flush_control GL_OES_draw_elements_base_vertex
               GL_OES_texture_border_clamp GL_KHR_no_error
               GL_KHR_texture_compression_astc_sliced_3d
               GL_EXT_disjoint_timer_query
               GL_EXT_texture_compression_s3tc_srgb
               GL_KHR_parallel_shader_compile
[17:41:39.269] GL ES 2 renderer features:
               read-back format: BGRA
               wl_shm sub-image to texture: yes
               EGL Wayland extension: yes
[17:41:39.312] event1  - gpio-keys: is tagged by udev as: Keyboard
[17:41:39.313] event1  - gpio-keys: device is a keyboard
[17:41:39.312] event1  - gpio-keys: is tagged by udev as: Keyboard
[17:41:39.313] event1  - gpio-keys: device is a keyboard
[17:41:39.328] event0  - stmpe-ts: is tagged by udev as: Touchscreen
[17:41:39.328] event0  - stmpe-ts: is tagged by udev as: Touchscreen
[17:41:39.329] event0  - stmpe-ts: device is a touch device
[17:41:39.329] event0  - stmpe-ts: device is a touch device
[17:41:39.339] event2  - Goodix Capacitive TouchScreen: is tagged by udev as: Keyboard Touchscreen
[17:41:39.339] event2  - Goodix Capacitive TouchScreen: is tagged by udev as: Keyboard Touchscreen
[17:41:39.340] event2  - Goodix Capacitive TouchScreen: device is a keyboard
[17:41:39.340] event2  - Goodix Capacitive TouchScreen: device is a touch device
[17:41:39.340] event2  - Goodix Capacitive TouchScreen: device is a keyboard
[17:41:39.340] event2  - Goodix Capacitive TouchScreen: device is a touch device
[17:41:39.395] libinput: configuring device "gpio-keys".
[17:41:39.396] Touchscreen - stmpe-ts - /sys/devices/soc0/soc/2100000.aips-bus/21a4000.i2c/i2c-1/1-0041/stmpe-ts/input/input0/event0
[17:41:39.396] libinput: configuring device "stmpe-ts".
[17:41:39.396] input device event0 has no enabled output associated (none named), skipping calibration for now.
[17:41:39.395] libinput: configuring device "gpio-keys".
[17:41:39.396] Touchscreen - Goodix Capacitive TouchScreen - /sys/devices/soc0/soc/2100000.aips-bus/21a8000.i2c/i2c-2/2-005d/input/input2/event2
[17:41:39.396] libinput: configuring device "Goodix Capacitive TouchScreen".
[17:41:39.396] Touchscreen - stmpe-ts - /sys/devices/soc0/soc/2100000.aips-bus/21a4000.i2c/i2c-1/1-0041/stmpe-ts/input/input0/event0
[17:41:39.396] input device event2 has no enabled output associated (none named), skipping calibration for now.
[17:41:39.396] libinput: configuring device "stmpe-ts".
[17:41:39.396] input device event0 has no enabled output associated (none named), skipping calibration for now.
[17:41:39.397] DRM: head 'LVDS-1' found, connector 54 is connected, EDID make 'unknown', model 'unknown', serial 'unknown'
[17:41:39.396] Touchscreen - Goodix Capacitive TouchScreen - /sys/devices/soc0/soc/2100000.aips-bus/21a8000.i2c/i2c-2/2-005d/input/input2/event2
[17:41:39.396] libinput: configuring device "Goodix Capacitive TouchScreen".
[17:41:39.396] input device event2 has no enabled output associated (none named), skipping calibration for now.
[17:41:39.397] DRM: head 'LVDS-1' found, connector 54 is connected, EDID make 'unknown', model 'unknown', serial 'unknown'
[17:41:39.398] DRM: head 'LVDS-2' found, connector 56 is connected, EDID make 'unknown', model 'unknown', serial 'unknown'
[17:41:39.398] DRM: head 'LVDS-2' found, connector 56 is connected, EDID make 'unknown', model 'unknown', serial 'unknown'
[17:41:39.399] Registered plugin API 'weston_drm_output_api_v1' of size 12
[17:41:39.399] Registered plugin API 'weston_drm_virtual_output_api_v1' of size 24
[17:41:39.399] Registered plugin API 'weston_drm_output_api_v1' of size 12
[17:41:39.399] Registered plugin API 'weston_drm_virtual_output_api_v1' of size 24
[17:41:39.401] Chosen EGL config details: id:  21 rgba: 8 8 8 0 buf: 24 dep:  0 stcl: 0 int: 1-1 type: win vis_id: XRGB8888 (0x34325258)
[17:41:39.401] Chosen EGL config details: id:  21 rgba: 8 8 8 0 buf: 24 dep:  0 stcl: 0 int: 1-1 type: win vis_id: XRGB8888 (0x34325258)
[17:41:39.401] Output LVDS-1 (crtc 34) video modes:
[17:41:39.401] Output LVDS-1 (crtc 34) video modes:
               1280x320@62.0, preferred, current, 36.0 MHz
               1280x320@62.0, preferred, current, 36.0 MHz
[17:41:39.402] associating input device event1 with output LVDS-1 (none by udev)
[17:41:39.402] associating input device event1 with output LVDS-1 (none by udev)
[17:41:39.402] associating input device event0 with output LVDS-1 (none by udev)
[17:41:39.402] associating input device event0 with output LVDS-1 (none by udev)
[17:41:39.404] associating input device event2 with output LVDS-1 (none by udev)
[17:41:39.404] associating input device event2 with output LVDS-1 (none by udev)
[17:41:39.406] Output 'LVDS-1' enabled with head(s) LVDS-1
[17:41:39.406] Output 'LVDS-1' enabled with head(s) LVDS-1
[17:41:39.406] Chosen EGL config details: id:  21 rgba: 8 8 8 0 buf: 24 dep:  0 stcl: 0 int: 1-1 type: win vis_id: XRGB8888 (0x34325258)
[17:41:39.406] Output LVDS-2 (crtc 41) video modes:
               1280x320@62.0, preferred, current, 36.0 MHz
[17:41:39.406] Output 'LVDS-2' enabled with head(s) LVDS-2
[17:41:39.406] Chosen EGL config details: id:  21 rgba: 8 8 8 0 buf: 24 dep:  0 stcl: 0 int: 1-1 type: win vis_id: XRGB8888 (0x34325258)
[17:41:39.407] Compositor capabilities:
[17:41:39.406] Output LVDS-2 (crtc 41) video modes:
               arbitrary surface rotation: yes
               1280x320@62.0, preferred, current, 36.0 MHz
               screen capture uses y-flip: yes
               presentation clock: CLOCK_MONOTONIC, id 1
[17:41:39.406] Output 'LVDS-2' enabled with head(s) LVDS-2
               presentation clock resolution: 0.000000001 s
[17:41:39.407] Compositor capabilities:
               arbitrary surface rotation: yes
               screen capture uses y-flip: yes
               presentation clock: CLOCK_MONOTONIC, id 1
               presentation clock resolution: 0.000000001 s
[17:41:39.409] Loading module '/usr/lib/arm-linux-gnueabihf/weston/desktop-shell.so'
[17:41:39.409] Loading module '/usr/lib/arm-linux-gnueabihf/weston/desktop-shell.so'
[17:41:39.414] launching '/usr/lib/arm-linux-gnueabihf/weston-keyboard'
[17:41:39.414] launching '/usr/lib/arm-linux-gnueabihf/weston-keyboard'
[17:41:39.420] Loading module '/usr/lib/arm-linux-gnueabihf/libweston-8/xwayland.so'
[17:41:39.420] Loading module '/usr/lib/arm-linux-gnueabihf/libweston-8/xwayland.so'
[17:41:39.583] Registered plugin API 'weston_xwayland_v1' of size 16
[17:41:39.583] Registered plugin API 'weston_xwayland_surface_v1' of size 8
[17:41:39.583] Registered plugin API 'weston_xwayland_v1' of size 16
[17:41:39.583] Registered plugin API 'weston_xwayland_surface_v1' of size 8
[17:41:39.584] xserver listening on display :0
[17:41:39.584] xserver listening on display :0
[17:41:39.585] launching '/usr/lib/arm-linux-gnueabihf/weston-desktop-shell'
[17:41:39.585] launching '/usr/lib/arm-linux-gnueabihf/weston-desktop-shell'
could not load cursor 'dnd-move'
could not load cursor 'dnd-move'
could not load cursor 'dnd-copy'
could not load cursor 'dnd-copy'
could not load cursor 'dnd-move'
could not load cursor 'dnd-move'
could not load cursor 'dnd-none'
could not load cursor 'dnd-none'
could not load cursor 'dnd-copy'
could not load cursor 'dnd-copy'
could not load cursor 'dnd-none'
could not load cursor 'dnd-none'
could not load cursor 'dnd-move'
could not load cursor 'dnd-copy'
could not load cursor 'dnd-none'
could not load cursor 'dnd-move'
could not load cursor 'dnd-copy'
could not load cursor 'dnd-none'

Ah okay that makes sense then. Well I don’t know for sure at the moment why you’re seeing strange behavior with touch.

But let’s see if we can learn more. So in a weston environment touch input should be going through libinput. This should have a debug tool as shown here: libinput-debug-events(1) — libinput-tools — Debian testing — Debian Manpages

Perhaps this would be a good place to start. I assume libinput/weston isn’t scaling the touch properly for dual screens or something similar. Though this is just a theory.

Best Regards,
Jeremias

Greetings @jeremias.tx .

Thank you for your tip of libinput.

It’s a bit surprising that both lvds displays are associated with card1.

# ls /sys/class/drm/
card0  card1  card1-LVDS-1  card1-LVDS-2  renderD128  version

Nevertheless, both show the status as connected.

Weston’s logs seem nice, too:

# docker logs weston

SoC is: 'i.MX6Q'
SoC has GPU: true
SoC has DPU: false
g2d implementation: viv
Date: 2021-02-13 UTC
Date: 2021-02-13 UTC
[17:02:58.898] weston 8.0.0
[17:02:58.898] weston 8.0.0
               https://wayland.freedesktop.org
               https://wayland.freedesktop.org
               Bug reports to: https://gitlab.freedesktop.org/wayland/weston/issues/
               Build: 8.0.0
               Bug reports to: https://gitlab.freedesktop.org/wayland/weston/issues/
[17:02:58.899] Command line: /usr/bin/weston
               Build: 8.0.0
[17:02:58.899] Command line: /usr/bin/weston
[17:02:58.899] OS: Linux, 5.4.61-5.1.0-devel+git.26abb5b86e17, #1-TorizonCore SMP Wed Sep 23 16:54:17 UTC 2020, armv7l
[17:02:58.899] OS: Linux, 5.4.61-5.1.0-devel+git.26abb5b86e17, #1-TorizonCore SMP Wed Sep 23 16:54:17 UTC 2020, armv7l
[17:02:58.912] Using config file '/etc/xdg/weston-dev//weston.ini'
[17:02:58.912] Using config file '/etc/xdg/weston-dev//weston.ini'
[17:02:58.914] Output repaint window is 7 ms maximum.
[17:02:58.914] Output repaint window is 7 ms maximum.
[17:02:58.916] Loading module '/usr/lib/arm-linux-gnueabihf/libweston-8/drm-backend.so'
[17:02:58.916] Loading module '/usr/lib/arm-linux-gnueabihf/libweston-8/drm-backend.so'
[17:02:58.947] initializing drm backend
[17:02:58.947] initializing drm backend
[17:02:58.952] logind: not running in a systemd session
[17:02:58.952] logind: not running in a systemd session
[17:02:58.953] logind: cannot setup systemd-logind helper (-61), using legacy fallback
[17:02:58.953] logind: cannot setup systemd-logind helper (-61), using legacy fallback
[17:02:58.987] using /dev/dri/card1
[17:02:58.987] DRM: supports universal planes
[17:02:58.987] DRM: supports atomic modesetting
[17:02:58.987] DRM: supports picture aspect ratio
[17:02:58.987] using /dev/dri/card1
[17:02:58.987] DRM: supports universal planes
[17:02:58.990] Loading module '/usr/lib/arm-linux-gnueabihf/libweston-8/gl-renderer.so'
[17:02:58.987] DRM: supports atomic modesetting
[17:02:58.987] DRM: supports picture aspect ratio
[17:02:58.990] Loading module '/usr/lib/arm-linux-gnueabihf/libweston-8/gl-renderer.so'
[17:02:59.964] EGL client extensions: EGL_EXT_device_base
               EGL_EXT_device_enumeration EGL_EXT_device_query
               EGL_EXT_platform_base EGL_KHR_client_get_all_proc_addresses
[17:02:59.964] EGL client extensions: EGL_EXT_device_base
               EGL_EXT_client_extensions EGL_KHR_debug EGL_EXT_platform_device
               EGL_EXT_platform_wayland EGL_KHR_platform_wayland
               EGL_EXT_device_enumeration EGL_EXT_device_query
               EGL_EXT_platform_x11 EGL_KHR_platform_x11 EGL_MESA_platform_gbm
               EGL_EXT_platform_base EGL_KHR_client_get_all_proc_addresses
               EGL_KHR_platform_gbm EGL_MESA_platform_surfaceless
               EGL_EXT_client_extensions EGL_KHR_debug EGL_EXT_platform_device
               EGL_EXT_platform_wayland EGL_KHR_platform_wayland
               EGL_EXT_platform_x11 EGL_KHR_platform_x11 EGL_MESA_platform_gbm
               EGL_KHR_platform_gbm EGL_MESA_platform_surfaceless
[17:02:59.971] EGL version: 1.4
[17:02:59.971] EGL version: 1.4
[17:02:59.971] EGL vendor: Mesa Project
[17:02:59.971] EGL vendor: Mesa Project
[17:02:59.972] EGL client APIs: OpenGL OpenGL_ES 
[17:02:59.972] EGL client APIs: OpenGL OpenGL_ES 
[17:02:59.972] EGL extensions: EGL_ANDROID_blob_cache
               EGL_ANDROID_native_fence_sync EGL_EXT_buffer_age
               EGL_EXT_image_dma_buf_import
               EGL_EXT_image_dma_buf_import_modifiers EGL_KHR_cl_event2
               EGL_KHR_config_attribs EGL_KHR_create_context
               EGL_KHR_create_context_no_error EGL_KHR_fence_sync
               EGL_KHR_get_all_proc_addresses EGL_KHR_gl_renderbuffer_image
               EGL_KHR_gl_texture_2D_image EGL_KHR_gl_texture_3D_image
               EGL_KHR_gl_texture_cubemap_image EGL_KHR_image
               EGL_KHR_image_base EGL_KHR_image_pixmap
               EGL_KHR_no_config_context EGL_KHR_reusable_sync
               EGL_KHR_surfaceless_context EGL_EXT_pixel_format_float
               EGL_KHR_wait_sync EGL_MESA_configless_context
               EGL_MESA_drm_image EGL_MESA_image_dma_buf_export
               EGL_MESA_query_driver EGL_WL_bind_wayland_display
[17:02:59.974] EGL_KHR_surfaceless_context available
[17:02:59.972] EGL extensions: EGL_ANDROID_blob_cache
               EGL_ANDROID_native_fence_sync EGL_EXT_buffer_age
               EGL_EXT_image_dma_buf_import
               EGL_EXT_image_dma_buf_import_modifiers EGL_KHR_cl_event2
               EGL_KHR_config_attribs EGL_KHR_create_context
               EGL_KHR_create_context_no_error EGL_KHR_fence_sync
               EGL_KHR_get_all_proc_addresses EGL_KHR_gl_renderbuffer_image
               EGL_KHR_gl_texture_2D_image EGL_KHR_gl_texture_3D_image
               EGL_KHR_gl_texture_cubemap_image EGL_KHR_image
               EGL_KHR_image_base EGL_KHR_image_pixmap
               EGL_KHR_no_config_context EGL_KHR_reusable_sync
               EGL_KHR_surfaceless_context EGL_EXT_pixel_format_float
               EGL_KHR_wait_sync EGL_MESA_configless_context
               EGL_MESA_drm_image EGL_MESA_image_dma_buf_export
               EGL_MESA_query_driver EGL_WL_bind_wayland_display
[17:02:59.974] EGL_KHR_surfaceless_context available
[17:03:00.017] GL version: OpenGL ES 2.0 Mesa 20.1.5
[17:03:00.018] GLSL version: OpenGL ES GLSL ES 1.0.16
[17:03:00.018] GL vendor: etnaviv
[17:03:00.018] GL renderer: Vivante GC2000 rev 5108
[17:03:00.018] GL extensions: GL_EXT_blend_minmax GL_EXT_multi_draw_arrays
               GL_EXT_texture_filter_anisotropic
               GL_EXT_texture_compression_s3tc GL_EXT_texture_compression_dxt1
               GL_EXT_texture_format_BGRA8888
               GL_OES_compressed_ETC1_RGB8_texture GL_OES_depth24
               GL_OES_element_index_uint GL_OES_fbo_render_mipmap
               GL_OES_mapbuffer GL_OES_rgb8_rgba8 GL_OES_standard_derivatives
               GL_OES_stencil8 GL_OES_texture_3D GL_OES_texture_npot
               GL_OES_vertex_half_float GL_OES_EGL_image GL_OES_depth_texture
               GL_AMD_performance_monitor GL_OES_packed_depth_stencil
               GL_EXT_texture_type_2_10_10_10_REV GL_OES_get_program_binary
               GL_APPLE_texture_max_level GL_EXT_discard_framebuffer
               GL_EXT_read_format_bgra GL_EXT_frag_depth
               GL_NV_fbo_color_attachments GL_OES_EGL_image_external
               GL_OES_EGL_sync GL_OES_vertex_array_object
               GL_ANGLE_texture_compression_dxt3
               GL_ANGLE_texture_compression_dxt5
               GL_EXT_occlusion_query_boolean GL_EXT_unpack_subimage
               GL_NV_draw_buffers GL_NV_read_buffer GL_NV_read_depth
[17:03:00.017] GL version: OpenGL ES 2.0 Mesa 20.1.5
               GL_NV_read_depth_stencil GL_NV_read_stencil GL_EXT_draw_buffers
               GL_EXT_map_buffer_range GL_KHR_debug
               GL_KHR_texture_compression_astc_ldr GL_NV_pixel_buffer_object
[17:03:00.018] GLSL version: OpenGL ES GLSL ES 1.0.16
               GL_OES_required_internalformat GL_OES_surfaceless_context
               GL_EXT_separate_shader_objects
               GL_EXT_compressed_ETC1_RGB8_sub_texture
               GL_EXT_draw_elements_base_vertex GL_EXT_texture_border_clamp
               GL_KHR_context_flush_control GL_OES_draw_elements_base_vertex
[17:03:00.018] GL vendor: etnaviv
               GL_OES_texture_border_clamp GL_KHR_no_error
               GL_KHR_texture_compression_astc_sliced_3d
               GL_EXT_disjoint_timer_query
[17:03:00.018] GL renderer: Vivante GC2000 rev 5108
               GL_EXT_texture_compression_s3tc_srgb
               GL_KHR_parallel_shader_compile
[17:03:00.019] GL ES 2 renderer features:
[17:03:00.018] GL extensions: GL_EXT_blend_minmax GL_EXT_multi_draw_arrays
               read-back format: BGRA
               wl_shm sub-image to texture: yes
               EGL Wayland extension: yes
               GL_EXT_texture_filter_anisotropic
               GL_EXT_texture_compression_s3tc GL_EXT_texture_compression_dxt1
               GL_EXT_texture_format_BGRA8888
               GL_OES_compressed_ETC1_RGB8_texture GL_OES_depth24
               GL_OES_element_index_uint GL_OES_fbo_render_mipmap
               GL_OES_mapbuffer GL_OES_rgb8_rgba8 GL_OES_standard_derivatives
               GL_OES_stencil8 GL_OES_texture_3D GL_OES_texture_npot
               GL_OES_vertex_half_float GL_OES_EGL_image GL_OES_depth_texture
               GL_AMD_performance_monitor GL_OES_packed_depth_stencil
               GL_EXT_texture_type_2_10_10_10_REV GL_OES_get_program_binary
               GL_APPLE_texture_max_level GL_EXT_discard_framebuffer
               GL_EXT_read_format_bgra GL_EXT_frag_depth
               GL_NV_fbo_color_attachments GL_OES_EGL_image_external
               GL_OES_EGL_sync GL_OES_vertex_array_object
               GL_ANGLE_texture_compression_dxt3
               GL_ANGLE_texture_compression_dxt5
               GL_EXT_occlusion_query_boolean GL_EXT_unpack_subimage
               GL_NV_draw_buffers GL_NV_read_buffer GL_NV_read_depth
               GL_NV_read_depth_stencil GL_NV_read_stencil GL_EXT_draw_buffers
               GL_EXT_map_buffer_range GL_KHR_debug
               GL_KHR_texture_compression_astc_ldr GL_NV_pixel_buffer_object
               GL_OES_required_internalformat GL_OES_surfaceless_context
               GL_EXT_separate_shader_objects
               GL_EXT_compressed_ETC1_RGB8_sub_texture
               GL_EXT_draw_elements_base_vertex GL_EXT_texture_border_clamp
               GL_KHR_context_flush_control GL_OES_draw_elements_base_vertex
               GL_OES_texture_border_clamp GL_KHR_no_error
               GL_KHR_texture_compression_astc_sliced_3d
               GL_EXT_disjoint_timer_query
               GL_EXT_texture_compression_s3tc_srgb
               GL_KHR_parallel_shader_compile
[17:03:00.019] GL ES 2 renderer features:
               read-back format: BGRA
               wl_shm sub-image to texture: yes
               EGL Wayland extension: yes
[17:03:00.064] event1  - gpio-keys: is tagged by udev as: Keyboard
[17:03:00.064] event1  - gpio-keys: is tagged by udev as: Keyboard
[17:03:00.065] event1  - gpio-keys: device is a keyboard
[17:03:00.065] event1  - gpio-keys: device is a keyboard
[17:03:00.079] event0  - stmpe-ts: is tagged by udev as: Touchscreen
[17:03:00.079] event0  - stmpe-ts: is tagged by udev as: Touchscreen
[17:03:00.080] event0  - stmpe-ts: device is a touch device
[17:03:00.080] event0  - stmpe-ts: device is a touch device
[17:03:00.090] event2  - Goodix Capacitive TouchScreen: is tagged by udev as: Keyboard Touchscreen
[17:03:00.090] event2  - Goodix Capacitive TouchScreen: is tagged by udev as: Keyboard Touchscreen
[17:03:00.091] event2  - Goodix Capacitive TouchScreen: device is a keyboard
[17:03:00.091] event2  - Goodix Capacitive TouchScreen: device is a keyboard
[17:03:00.091] event2  - Goodix Capacitive TouchScreen: device is a touch device
[17:03:00.091] event2  - Goodix Capacitive TouchScreen: device is a touch device
[17:03:00.150] libinput: configuring device "gpio-keys".
[17:03:00.150] libinput: configuring device "gpio-keys".
[17:03:00.151] Touchscreen - stmpe-ts - /sys/devices/soc0/soc/2100000.aips-bus/21a4000.i2c/i2c-1/1-0041/stmpe-ts/input/input0/event0
[17:03:00.151] Touchscreen - stmpe-ts - /sys/devices/soc0/soc/2100000.aips-bus/21a4000.i2c/i2c-1/1-0041/stmpe-ts/input/input0/event0
[17:03:00.151] libinput: configuring device "stmpe-ts".
[17:03:00.152] input device event0 has no enabled output associated (none named), skipping calibration for now.
[17:03:00.151] libinput: configuring device "stmpe-ts".
[17:03:00.152] input device event0 has no enabled output associated (none named), skipping calibration for now.
[17:03:00.152] Touchscreen - Goodix Capacitive TouchScreen - /sys/devices/soc0/soc/2100000.aips-bus/21a8000.i2c/i2c-2/2-005d/input/input2/event2
[17:03:00.153] libinput: configuring device "Goodix Capacitive TouchScreen".
[17:03:00.153] input device event2 has no enabled output associated (none named), skipping calibration for now.
[17:03:00.152] Touchscreen - Goodix Capacitive TouchScreen - /sys/devices/soc0/soc/2100000.aips-bus/21a8000.i2c/i2c-2/2-005d/input/input2/event2
[17:03:00.153] libinput: configuring device "Goodix Capacitive TouchScreen".
[17:03:00.153] input device event2 has no enabled output associated (none named), skipping calibration for now.
[17:03:00.155] DRM: head 'LVDS-1' found, connector 54 is connected, EDID make 'unknown', model 'unknown', serial 'unknown'
[17:03:00.155] DRM: head 'LVDS-1' found, connector 54 is connected, EDID make 'unknown', model 'unknown', serial 'unknown'
[17:03:00.156] DRM: head 'LVDS-2' found, connector 56 is connected, EDID make 'unknown', model 'unknown', serial 'unknown'
[17:03:00.156] Registered plugin API 'weston_drm_output_api_v1' of size 12
[17:03:00.157] Registered plugin API 'weston_drm_virtual_output_api_v1' of size 24
[17:03:00.156] DRM: head 'LVDS-2' found, connector 56 is connected, EDID make 'unknown', model 'unknown', serial 'unknown'
[17:03:00.156] Registered plugin API 'weston_drm_output_api_v1' of size 12
[17:03:00.157] Registered plugin API 'weston_drm_virtual_output_api_v1' of size 24
[17:03:00.158] Chosen EGL config details: id:  21 rgba: 8 8 8 0 buf: 24 dep:  0 stcl: 0 int: 1-1 type: win vis_id: XRGB8888 (0x34325258)
[17:03:00.158] Output LVDS-1 (crtc 34) video modes:
               1280x320@62.0, preferred, current, 36.0 MHz
[17:03:00.159] associating input device event1 with output LVDS-1 (none by udev)
[17:03:00.159] associating input device event0 with output LVDS-1 (none by udev)
[17:03:00.158] Chosen EGL config details: id:  21 rgba: 8 8 8 0 buf: 24 dep:  0 stcl: 0 int: 1-1 type: win vis_id: XRGB8888 (0x34325258)
[17:03:00.158] Output LVDS-1 (crtc 34) video modes:
               1280x320@62.0, preferred, current, 36.0 MHz
[17:03:00.160] associating input device event2 with output LVDS-1 (none by udev)
[17:03:00.159] associating input device event1 with output LVDS-1 (none by udev)
[17:03:00.159] associating input device event0 with output LVDS-1 (none by udev)
[17:03:00.160] associating input device event2 with output LVDS-1 (none by udev)
[17:03:00.162] Output 'LVDS-1' enabled with head(s) LVDS-1
[17:03:00.162] Output 'LVDS-1' enabled with head(s) LVDS-1
[17:03:00.163] Chosen EGL config details: id:  21 rgba: 8 8 8 0 buf: 24 dep:  0 stcl: 0 int: 1-1 type: win vis_id: XRGB8888 (0x34325258)
[17:03:00.163] Output LVDS-2 (crtc 41) video modes:
               1280x320@62.0, preferred, current, 36.0 MHz
[17:03:00.163] Output 'LVDS-2' enabled with head(s) LVDS-2
[17:03:00.164] Compositor capabilities:
               arbitrary surface rotation: yes
               screen capture uses y-flip: yes
               presentation clock: CLOCK_MONOTONIC, id 1
               presentation clock resolution: 0.000000001 s
[17:03:00.163] Chosen EGL config details: id:  21 rgba: 8 8 8 0 buf: 24 dep:  0 stcl: 0 int: 1-1 type: win vis_id: XRGB8888 (0x34325258)
[17:03:00.163] Output LVDS-2 (crtc 41) video modes:
               1280x320@62.0, preferred, current, 36.0 MHz
[17:03:00.163] Output 'LVDS-2' enabled with head(s) LVDS-2
[17:03:00.164] Compositor capabilities:
               arbitrary surface rotation: yes
               screen capture uses y-flip: yes
               presentation clock: CLOCK_MONOTONIC, id 1
[17:03:00.166] Loading module '/usr/lib/arm-linux-gnueabihf/weston/desktop-shell.so'
               presentation clock resolution: 0.000000001 s
[17:03:00.166] Loading module '/usr/lib/arm-linux-gnueabihf/weston/desktop-shell.so'
[17:03:00.172] launching '/usr/lib/arm-linux-gnueabihf/weston-keyboard'
[17:03:00.172] launching '/usr/lib/arm-linux-gnueabihf/weston-keyboard'
[17:03:00.180] Loading module '/usr/lib/arm-linux-gnueabihf/libweston-8/xwayland.so'
[17:03:00.180] Loading module '/usr/lib/arm-linux-gnueabihf/libweston-8/xwayland.so'
[17:03:00.336] Registered plugin API 'weston_xwayland_v1' of size 16
[17:03:00.336] Registered plugin API 'weston_xwayland_surface_v1' of size 8
[17:03:00.336] Registered plugin API 'weston_xwayland_v1' of size 16
[17:03:00.336] Registered plugin API 'weston_xwayland_surface_v1' of size 8
[17:03:00.337] xserver listening on display :0
[17:03:00.337] xserver listening on display :0
[17:03:00.338] launching '/usr/lib/arm-linux-gnueabihf/weston-desktop-shell'
[17:03:00.338] launching '/usr/lib/arm-linux-gnueabihf/weston-desktop-shell'
could not load cursor 'dnd-move'
could not load cursor 'dnd-move'
could not load cursor 'dnd-copy'
could not load cursor 'dnd-move'
could not load cursor 'dnd-none'
could not load cursor 'dnd-copy'
could not load cursor 'dnd-none'
could not load cursor 'dnd-copy'
could not load cursor 'dnd-move'
could not load cursor 'dnd-none'
could not load cursor 'dnd-copy'
could not load cursor 'dnd-none'

Obviously, the Goodix initialization of both displays shows different errors.
As the first lvds is associated with &i2c3, it shows Goodix-TS 2-005d: Direct firmware load for goodix_928_cfg.bin failed with error -2. As the second lvds is associated with &i2c1, it shows Goodix-TS 0-005d: I2C communication failure: -6.

# dmesg | grep Goodix

[   10.044658] Goodix-TS 0-005d: 0-005d supply AVDD28 not found, using dummy regulator
[   10.044791] Goodix-TS 0-005d: 0-005d supply VDDIO not found, using dummy regulator
[   10.169193] Goodix-TS 0-005d: i2c test failed attempt 1: -6
[   10.214278] Goodix-TS 0-005d: i2c test failed attempt 2: -6
[   10.253780] Goodix-TS 0-005d: I2C communication failure: -6
[   10.264791] Goodix-TS 2-005d: 2-005d supply AVDD28 not found, using dummy regulator
[   10.264993] Goodix-TS 2-005d: 2-005d supply VDDIO not found, using dummy regulator
[   10.389812] Goodix-TS 2-005d: ID 928, version: 1040
[   10.389939] Goodix-TS 2-005d: Direct firmware load for goodix_928_cfg.bin failed with error -2
[   11.433727] Goodix-TS 2-005d: Invalid config (0, 0, 0), using defaults
[   11.440473] input: Goodix Capacitive TouchScreen as /devices/soc0/soc/2100000.aips-bus/21a8000.i2c/i2c-2/2-005d/input/input2
[   11.953703] Goodix-TS 2-005d: I2C write end_cmd error

Nevertheless, the first lvds seems to initialize anyhow as the following libinput test shows. Here, I was clicking on the first lvds display four times at the corners top-left, top-right, bottom-right and bottom-left. This seems to be recognized as click event (although the TOUCH_UP has a responding time of about one second and sliding has no different output):

# libinput debug-events --device /dev/input/event2
-event2   DEVICE_ADDED     Goodix Capacitive TouchScreen     seat0 default group1  cap:kt ntouches 10 calib
 event2   TOUCH_DOWN       +0.000s	0 (0)  0.51/ 0.12 (21.00/ 5.00mm)
 event2   TOUCH_FRAME      +0.000s	
 event2   TOUCH_UP         +1.030s	
 event2   TOUCH_FRAME      +1.030s	
 event2   TOUCH_DOWN       +12.386s	0 (0) 30.98/ 0.00 (1269.00/ 0.00mm)
 event2   TOUCH_FRAME      +12.386s	
 event2   TOUCH_UP         +14.420s	
 event2   TOUCH_FRAME      +14.420s	
 event2   TOUCH_DOWN       +20.212s	0 (0) 30.71/ 7.45 (1258.00/305.00mm)
 event2   TOUCH_FRAME      +20.212s	
 event2   TOUCH_UP         +21.240s	
 event2   TOUCH_FRAME      +21.240s	
 event2   TOUCH_DOWN       +26.413s	0 (0)  0.17/ 7.71 ( 7.00/316.00mm)
 event2   TOUCH_FRAME      +26.413s	
 event2   TOUCH_UP         +27.440s	
 event2   TOUCH_FRAME      +27.440s

The corresponding entries of journalctl of the four clicks are:

# sudo journalctl -f

-- Logs begin at Thu 1970-01-01 00:00:07 UTC. --
Feb 13 17:16:40 apalis-imx6-5341 systemd-tmpfiles[978]: [/usr/lib/tmpfiles.d/tmp.conf:12] Duplicate line for path "/var/tmp", ignoring.
Feb 13 17:16:40 apalis-imx6-5341 systemd-tmpfiles[978]: [/usr/lib/tmpfiles.d/var.conf:14] Duplicate line for path "/var/log", ignoring.
Feb 13 17:16:40 apalis-imx6-5341 systemd[1]: systemd-tmpfiles-clean.service: Succeeded.
Feb 13 17:16:40 apalis-imx6-5341 systemd[1]: Started Cleanup of Temporary Directories.
Feb 13 17:19:52 apalis-imx6-5341 systemd[1]: Started OpenSSH Per-Connection Daemon (xx.xx.xx.xx:42036).
Feb 13 17:19:54 apalis-imx6-5341 sshd[1595]: Accepted password for torizon from 192.168.178.43 port 42036 ssh2
Feb 13 17:19:54 apalis-imx6-5341 sshd[1595]: pam_unix(sshd:session): session opened for user torizon by (uid=0)
Feb 13 17:19:54 apalis-imx6-5341 systemd-logind[535]: New session c2 of user torizon.
Feb 13 17:19:54 apalis-imx6-5341 systemd[1]: Started Session c2 of user torizon.
Feb 13 17:20:01 apalis-imx6-5341 sudo[1602]:  torizon : TTY=pts/2 ; PWD=/var/rootdirs/home/torizon ; USER=root ; COMMAND=/usr/bin/journalctl -f
Feb 13 17:20:13 apalis-imx6-5341 db0feabf4eeb[587]: could not load cursor 'dnd-move'
Feb 13 17:20:13 apalis-imx6-5341 db0feabf4eeb[587]: could not load cursor 'dnd-copy'
Feb 13 17:20:13 apalis-imx6-5341 db0feabf4eeb[587]: could not load cursor 'dnd-none'
Feb 13 17:20:14 apalis-imx6-5341 db0feabf4eeb[587]: could not load cursor 'dnd-move'
Feb 13 17:20:14 apalis-imx6-5341 db0feabf4eeb[587]: could not load cursor 'dnd-copy'
Feb 13 17:20:14 apalis-imx6-5341 db0feabf4eeb[587]: could not load cursor 'dnd-none'
Feb 13 17:20:25 apalis-imx6-5341 kernel: Goodix-TS 2-005d: I2C write end_cmd error
Feb 13 17:20:26 apalis-imx6-5341 kernel: Goodix-TS 2-005d: I2C write end_cmd error
Feb 13 17:20:40 apalis-imx6-5341 db0feabf4eeb[587]: could not load cursor 'dnd-move'
Feb 13 17:20:40 apalis-imx6-5341 db0feabf4eeb[587]: could not load cursor 'dnd-copy'
Feb 13 17:20:40 apalis-imx6-5341 db0feabf4eeb[587]: could not load cursor 'dnd-none'
Feb 13 17:20:40 apalis-imx6-5341 db0feabf4eeb[587]: could not load cursor 'dnd-move'
Feb 13 17:20:40 apalis-imx6-5341 db0feabf4eeb[587]: could not load cursor 'dnd-copy'
Feb 13 17:20:40 apalis-imx6-5341 db0feabf4eeb[587]: could not load cursor 'dnd-none'

Clicking on the second lvds display has not an effect. It does not show any output at libinput or journalctl.

So, all in all, touch at the first lvds display seems to be recognized very, very slowly and only at a click basis. Although this is a bad performance, it’s good news up to here because it demonstrates touch. Touch at the second lvds display seems to be death.

Testing on having only the first lvds display show the following results.
# dmesg | grep Goodix

[   10.070212] Goodix-TS 2-005d: 2-005d supply AVDD28 not found, using dummy regulator
[   10.070359] Goodix-TS 2-005d: 2-005d supply VDDIO not found, using dummy regulator
[   10.693733] Goodix-TS 2-005d: read version failed: -110
[   10.698990] Goodix-TS 2-005d: Read version failed.
[   10.706320] Goodix-TS: probe of 2-005d failed with error -110

Here, event2 is not initialized (shown by docker logs weston). Hence, touch is not working.
When having only the second display enabled, the same kind of error shows up than having both lvds displays connected:

# dmesg | grep Goodix

[   10.095841] Goodix-TS 0-005d: 0-005d supply AVDD28 not found, using dummy regulator
[   10.095964] Goodix-TS 0-005d: 0-005d supply VDDIO not found, using dummy regulator
[   10.219413] Goodix-TS 0-005d: i2c test failed attempt 1: -6
[   10.263549] Goodix-TS 0-005d: i2c test failed attempt 2: -6
[   10.304770] Goodix-TS 0-005d: I2C communication failure: -6

Here, event2 is not initialized (shown by docker logs weston). Hence, touch is not working.

What is the reason for this? Which next steps would you go?

Thank you for advice.

Best regards,

Marcus

Let’s take a step back then. Since you pointed out the dmesg i2c errors it makes me think that perhaps this is a kernel/driver related issue.

I assume you’re using the goodix driver that is part of the Linux kernel?

I recall from previous questions that you’ve done some device tree changes. Have you added goodix touchscreen nodes to both of the i2c nodes in the device tree? There’s some documentation in the kernel about this for reference: goodix.txt « touchscreen « input « bindings « devicetree « Documentation - linux-toradex.git - Linux kernel for Apalis, Colibri and Verdin modules

I’m not sure how to explain the issue when only one display is being used, but it all seems to be on the driver’s side of things.

Best Regards,
Jeremias

Greetings @jeremias.tx .

Thank you for your ideas on this issue.

Because of your comment, I have had a look on i2c channels as this post intends to show. Because of the strange behavior of touches of my recent post, I tested both displays (the same model) and having touches of them enabled.

As I noticed in my initial post, stmpe touch was kind of enabled (event0), although it was disabled by the default imx6qdl-apalis.dtsi. However, I came up with an own version of imx6qdl-apalis-next.dtsi and removed it here. It might be because of this touch has set the variable blocks to 0x5, which is the same register as was selected for the Goodix driver. However, now, there is one event of each touch, which I assume is nice. The following shows relevant console tests.

# dmesg | grep Goodix
[   10.066194] Goodix-TS 0-0014: 0-0014 supply AVDD28 not found, using dummy regulator
[   10.066327] Goodix-TS 0-0014: 0-0014 supply VDDIO not found, using dummy regulator
[   10.189333] Goodix-TS 0-0014: ID 928, version: 1040
[   10.189472] Goodix-TS 0-0014: Direct firmware load for goodix_928_cfg.bin failed with error -2
[   10.190186] Goodix-TS 2-0014: 2-0014 supply AVDD28 not found, using dummy regulator
[   10.190285] Goodix-TS 2-0014: 2-0014 supply VDDIO not found, using dummy regulator
[   11.224343] Goodix-TS 0-0014: Invalid config (0, 0, 0), using defaults
[   11.231092] input: Goodix Capacitive TouchScreen as /devices/soc0/soc/2100000.aips-bus/21a0000.i2c/i2c-0/0-0014/input/input1
[   11.356724] Goodix-TS 2-0014: ID 4097, version: 0000
[   11.356844] Goodix-TS 2-0014: Direct firmware load for goodix_4097_cfg.bin failed with error -2
[   11.389633] input: Goodix Capacitive TouchScreen as /devices/soc0/soc/2100000.aips-bus/21a8000.i2c/i2c-2/2-0014/input/input2

# ls /dev/input/
by-path  event0  event1  event2

# ls -al /dev/dri
total 0
drwxr-xr-x  3 root root        120 Feb 20 12:57 .
drwxr-xr-x 14 root root      14680 Feb 20 12:57 ..
drwxr-xr-x  2 root root        100 Feb 20 12:57 by-path
crw-rw----  1 root video  226,   0 Feb 20 12:57 card0
crw-rw----  1 root video  226,   1 Feb 20 12:57 card1
crw-rw-rw-  1 root render 226, 128 Feb 20 12:57 renderD128

# ls -al  /sys/class/drm
total 0
drwxr-xr-x  2 root root    0 Feb 20 12:57 .
drwxr-xr-x 59 root root    0 Feb 20 12:57 ..
lrwxrwxrwx  1 root root    0 Feb 20 12:57 card0 -> ../../devices/platform/etnaviv/drm/card0
lrwxrwxrwx  1 root root    0 Feb 20 12:57 card1 -> ../../devices/soc0/display-subsystem/drm/card1
lrwxrwxrwx  1 root root    0 Feb 20 12:57 card1-LVDS-1 -> ../../devices/soc0/display-subsystem/drm/card1/card1-LVDS-1
lrwxrwxrwx  1 root root    0 Feb 20 12:57 card1-LVDS-2 -> ../../devices/soc0/display-subsystem/drm/card1/card1-LVDS-2
lrwxrwxrwx  1 root root    0 Feb 20 12:57 renderD128 -> ../../devices/platform/etnaviv/drm/renderD128
-r--r--r--  1 root root 4096 Feb 20 12:57 version

# sudo i2cdetect -l
i2c-1	i2c       	21a4000.i2c                     	I2C adapter
i2c-2	i2c       	21a8000.i2c                     	I2C adapter
i2c-0	i2c       	21a0000.i2c                     	I2C adapter

sudo i2cdetect -y 0
     0  1  2  3  4  5  6  7  8  9  a  b  c  d  e  f
00:          -- -- -- -- -- -- -- -- -- -- -- -- -- 
10: -- -- -- -- UU -- -- -- -- -- -- -- -- -- -- -- 
20: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 
30: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 
40: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 
50: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 
60: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 
70: -- -- -- -- -- -- -- --                         
root@apalis-imx6-5341:/home/torizon# sudo i2cdetect -y 1
     0  1  2  3  4  5  6  7  8  9  a  b  c  d  e  f
00:          -- -- -- -- -- UU -- UU -- -- -- -- -- 
10: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 
20: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 
30: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 
40: -- 41 -- -- -- -- -- -- -- -- -- -- -- -- -- -- 
50: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 
60: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 
70: -- -- -- -- -- -- -- --                         
root@apalis-imx6-5341:/home/torizon# sudo i2cdetect -y 2
     0  1  2  3  4  5  6  7  8  9  a  b  c  d  e  f
00:          -- -- -- -- -- -- -- -- -- -- -- -- -- 
10: -- -- -- -- UU -- -- -- -- -- -- -- -- -- -- -- 
20: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 
30: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 
40: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 
50: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 
60: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 
70: -- -- -- -- -- -- -- --  

# udevadm info /dev/input/event0
P: /devices/soc0/gpio-keys/input/input0/event0
N: input/event0
L: 0
S: input/by-path/platform-gpio-keys-event
E: DEVPATH=/devices/soc0/gpio-keys/input/input0/event0
E: DEVNAME=/dev/input/event0
E: MAJOR=13
E: MINOR=64
E: SUBSYSTEM=input
E: USEC_INITIALIZED=9402468
E: ID_INPUT=1
E: ID_INPUT_KEY=1
E: ID_PATH=platform-gpio-keys
E: ID_PATH_TAG=platform-gpio-keys
E: UDISKS_FILESYSTEM_SHARED=1
E: DEVLINKS=/dev/input/by-path/platform-gpio-keys-event
E: TAGS=:power-switch:

# udevadm info /dev/input/event1
P: /devices/soc0/soc/2100000.aips-bus/21a0000.i2c/i2c-0/0-0014/input/input1/event1
N: input/event1
L: 0
S: input/by-path/platform-21a0000.i2c-event
E: DEVPATH=/devices/soc0/soc/2100000.aips-bus/21a0000.i2c/i2c-0/0-0014/input/input1/event1
E: DEVNAME=/dev/input/event1
E: MAJOR=13
E: MINOR=65
E: SUBSYSTEM=input
E: USEC_INITIALIZED=12493894
E: ID_INPUT=1
E: ID_INPUT_TOUCHSCREEN=1
E: ID_INPUT_KEY=1
E: ID_PATH=platform-21a0000.i2c
E: ID_PATH_TAG=platform-21a0000_i2c
E: UDISKS_FILESYSTEM_SHARED=1
E: DEVLINKS=/dev/input/by-path/platform-21a0000.i2c-event
E: TAGS=:power-switch:

# udevadm info /dev/input/event2
P: /devices/soc0/soc/2100000.aips-bus/21a8000.i2c/i2c-2/2-0014/input/input2/event2
N: input/event2
L: 0
S: input/by-path/platform-21a8000.i2c-event
E: DEVPATH=/devices/soc0/soc/2100000.aips-bus/21a8000.i2c/i2c-2/2-0014/input/input2/event2
E: DEVNAME=/dev/input/event2
E: MAJOR=13
E: MINOR=66
E: SUBSYSTEM=input
E: USEC_INITIALIZED=12495397
E: ID_INPUT=1
E: ID_INPUT_TOUCHSCREEN=1
E: ID_INPUT_KEY=1
E: ID_PATH=platform-21a8000.i2c
E: ID_PATH_TAG=platform-21a8000_i2c
E: UDISKS_FILESYSTEM_SHARED=1
E: DEVLINKS=/dev/input/by-path/platform-21a8000.i2c-event
E: TAGS=:power-switch:

# evtest
No device specified, trying to scan all of /dev/input/event*
Available devices:
/dev/input/event0:	gpio-keys
/dev/input/event1:	Goodix Capacitive TouchScreen
/dev/input/event2:	Goodix Capacitive TouchScreen
Select the device event number [0-2]: 1
Input driver version is 1.0.1
Input device ID: bus 0x18 vendor 0x416 product 0x3a0 version 0x1040
Input device name: "Goodix Capacitive TouchScreen"
Supported events:
  Event type 0 (EV_SYN)
  Event type 1 (EV_KEY)
    Event code 125 (KEY_LEFTMETA)
    Event code 330 (BTN_TOUCH)
  Event type 3 (EV_ABS)
    Event code 0 (ABS_X)
      Value      0
      Min        0
      Max     4095
    Event code 1 (ABS_Y)
      Value      0
      Min        0
      Max     4095
    Event code 47 (ABS_MT_SLOT)
      Value      0
      Min        0
      Max        9
    Event code 48 (ABS_MT_TOUCH_MAJOR)
      Value      0
      Min        0
      Max      255
    Event code 50 (ABS_MT_WIDTH_MAJOR)
      Value      0
      Min        0
      Max      255
    Event code 53 (ABS_MT_POSITION_X)
      Value      0
      Min        0
      Max     4095
    Event code 54 (ABS_MT_POSITION_Y)
      Value      0
      Min        0
      Max     4095
    Event code 57 (ABS_MT_TRACKING_ID)
      Value      0
      Min        0
      Max    65535
Properties:
  Property type 1 (INPUT_PROP_DIRECT)
Testing ... (interrupt to exit)

As my touches at the second display (events1 at i2c1) are not detected, test touches show no effect and no output, here. Hence, I interrupted the test. When looking on the first display (events2 at i2c3), touches are recognized somehow:

# evtest
No device specified, trying to scan all of /dev/input/event*
Available devices:
/dev/input/event0:	gpio-keys
/dev/input/event1:	Goodix Capacitive TouchScreen
/dev/input/event2:	Goodix Capacitive TouchScreen
Select the device event number [0-2]: 2
Input driver version is 1.0.1
Input device ID: bus 0x18 vendor 0x416 product 0x1001 version 0x0
Input device name: "Goodix Capacitive TouchScreen"
Supported events:
  Event type 0 (EV_SYN)
  Event type 1 (EV_KEY)
    Event code 125 (KEY_LEFTMETA)
    Event code 330 (BTN_TOUCH)
  Event type 3 (EV_ABS)
    Event code 0 (ABS_X)
      Value    211
      Min        0
      Max     1279
    Event code 1 (ABS_Y)
      Value    245
      Min        0
      Max      319
    Event code 47 (ABS_MT_SLOT)
      Value      0
      Min        0
      Max        9
    Event code 48 (ABS_MT_TOUCH_MAJOR)
      Value      0
      Min        0
      Max      255
    Event code 50 (ABS_MT_WIDTH_MAJOR)
      Value      0
      Min        0
      Max      255
    Event code 53 (ABS_MT_POSITION_X)
      Value      0
      Min        0
      Max     1279
    Event code 54 (ABS_MT_POSITION_Y)
      Value      0
      Min        0
      Max      319
    Event code 57 (ABS_MT_TRACKING_ID)
      Value      0
      Min        0
      Max    65535
Properties:
  Property type 1 (INPUT_PROP_DIRECT)
Testing ... (interrupt to exit)
Event: time 1613827658.776537, type 3 (EV_ABS), code 57 (ABS_MT_TRACKING_ID), value 1
Event: time 1613827658.776537, type 3 (EV_ABS), code 53 (ABS_MT_POSITION_X), value 31
Event: time 1613827658.776537, type 3 (EV_ABS), code 54 (ABS_MT_POSITION_Y), value 18
Event: time 1613827658.776537, type 3 (EV_ABS), code 48 (ABS_MT_TOUCH_MAJOR), value 27
Event: time 1613827658.776537, type 3 (EV_ABS), code 50 (ABS_MT_WIDTH_MAJOR), value 27
Event: time 1613827658.776537, type 1 (EV_KEY), code 330 (BTN_TOUCH), value 1
Event: time 1613827658.776537, type 3 (EV_ABS), code 0 (ABS_X), value 31
Event: time 1613827658.776537, type 3 (EV_ABS), code 1 (ABS_Y), value 18
Event: time 1613827658.776537, -------------- SYN_REPORT ------------
Event: time 1613827659.804168, type 3 (EV_ABS), code 57 (ABS_MT_TRACKING_ID), value -1
Event: time 1613827659.804168, type 1 (EV_KEY), code 330 (BTN_TOUCH), value 0
Event: time 1613827659.804168, -------------- SYN_REPORT ------------

Here, only simple touches having a distance of about 1 seconds are recognized. Touch-drag-and-release combinations are not detected as the recent post shows (giving further information here).

Is it possible, that the touches (event1 and evnet2), both are wrongly associated with LVDS-1? The docker logs weston seem to do so (around [14:44:48.796]):

# docker logs weston
SoC is: 'i.MX6Q'
SoC has GPU: true
SoC has DPU: false
g2d implementation: viv
Date: 2021-02-20 UTC
[14:44:47.519] weston 8.0.0
               https://wayland.freedesktop.org
               Bug reports to: https://gitlab.freedesktop.org/wayland/weston/issues/
               Build: weston-8.0.0-1-2-g5126f983
[14:44:47.520] Command line: /usr/bin/weston
[14:44:47.520] OS: Linux, 5.4.61-5.1.0-devel+git.26abb5b86e17, #1-TorizonCore SMP Wed Sep 23 16:54:17 UTC 2020, armv7l
[14:44:47.520] warning: XDG_RUNTIME_DIR "/tmp/1000-runtime-dir" is not configured
correctly.  Unix access mode must be 0700 (current mode is 700),
and must be owned by the user (current owner is UID 1000).
Refer to your distribution on how to get it, or
http://www.freedesktop.org/wiki/Specifications/basedir-spec
on how to implement it.
Date: 2021-02-20 UTC
[14:44:47.519] weston 8.0.0
               https://wayland.freedesktop.org
               Bug reports to: https://gitlab.freedesktop.org/wayland/weston/issues/
               Build: weston-8.0.0-1-2-g5126f983
[14:44:47.520] Command line: /usr/bin/weston
[14:44:47.520] OS: Linux, 5.4.61-5.1.0-devel+git.26abb5b86e17, #1-TorizonCore SMP Wed Sep 23 16:54:17 UTC 2020, armv7l
[14:44:47.520] warning: XDG_RUNTIME_DIR "/tmp/1000-runtime-dir" is not configured
correctly.  Unix access mode must be 0700 (current mode is 700),
and must be owned by the user (current owner is UID 1000).
Refer to your distribution on how to get it, or
http://www.freedesktop.org/wiki/Specifications/basedir-spec
on how to implement it.
[14:44:47.534] Using config file '/etc/xdg/weston-dev//weston.ini'
[14:44:47.534] Using config file '/etc/xdg/weston-dev//weston.ini'
[14:44:47.536] Output repaint window is 7 ms maximum.
[14:44:47.536] Output repaint window is 7 ms maximum.
[14:44:47.538] Loading module '/usr/lib/arm-linux-gnueabihf/libweston-8/drm-backend.so'
[14:44:47.538] Loading module '/usr/lib/arm-linux-gnueabihf/libweston-8/drm-backend.so'
[14:44:47.568] initializing drm backend
[14:44:47.568] initializing drm backend
[14:44:47.573] logind: not running in a systemd session
[14:44:47.573] logind: not running in a systemd session
[14:44:47.574] logind: cannot setup systemd-logind helper (-61), using legacy fallback
[14:44:47.574] logind: cannot setup systemd-logind helper (-61), using legacy fallback
[14:44:47.605] using /dev/dri/card1
[14:44:47.605] DRM: supports universal planes
[14:44:47.605] using /dev/dri/card1
[14:44:47.605] DRM: supports atomic modesetting
[14:44:47.605] DRM: supports picture aspect ratio
[14:44:47.605] DRM: supports universal planes
[14:44:47.605] DRM: supports atomic modesetting
[14:44:47.605] DRM: supports picture aspect ratio
[14:44:47.607] Loading module '/usr/lib/arm-linux-gnueabihf/libweston-8/gl-renderer.so'
[14:44:47.607] Loading module '/usr/lib/arm-linux-gnueabihf/libweston-8/gl-renderer.so'
[14:44:48.599] EGL client extensions: EGL_EXT_device_base
               EGL_EXT_device_enumeration EGL_EXT_device_query
               EGL_EXT_platform_base EGL_KHR_client_get_all_proc_addresses
               EGL_EXT_client_extensions EGL_KHR_debug EGL_EXT_platform_device
               EGL_EXT_platform_wayland EGL_KHR_platform_wayland
               EGL_EXT_platform_x11 EGL_KHR_platform_x11 EGL_MESA_platform_gbm
               EGL_KHR_platform_gbm EGL_MESA_platform_surfaceless
[14:44:48.599] EGL client extensions: EGL_EXT_device_base
               EGL_EXT_device_enumeration EGL_EXT_device_query
[14:44:48.606] EGL version: 1.4
[14:44:48.606] EGL vendor: Mesa Project
[14:44:48.606] EGL client APIs: OpenGL OpenGL_ES 
[14:44:48.606] EGL extensions: EGL_ANDROID_blob_cache
               EGL_EXT_platform_base EGL_KHR_client_get_all_proc_addresses
               EGL_EXT_client_extensions EGL_KHR_debug EGL_EXT_platform_device
               EGL_EXT_platform_wayland EGL_KHR_platform_wayland
               EGL_EXT_platform_x11 EGL_KHR_platform_x11 EGL_MESA_platform_gbm
               EGL_KHR_platform_gbm EGL_MESA_platform_surfaceless
[14:44:48.606] EGL version: 1.4
[14:44:48.606] EGL vendor: Mesa Project
[14:44:48.606] EGL client APIs: OpenGL OpenGL_ES 
[14:44:48.606] EGL extensions: EGL_ANDROID_blob_cache
               EGL_ANDROID_native_fence_sync EGL_EXT_buffer_age
               EGL_EXT_image_dma_buf_import
               EGL_EXT_image_dma_buf_import_modifiers EGL_KHR_cl_event2
               EGL_KHR_config_attribs EGL_KHR_create_context
               EGL_KHR_create_context_no_error EGL_KHR_fence_sync
               EGL_KHR_get_all_proc_addresses EGL_KHR_gl_renderbuffer_image
               EGL_KHR_gl_texture_2D_image EGL_KHR_gl_texture_3D_image
               EGL_KHR_gl_texture_cubemap_image EGL_KHR_image
               EGL_KHR_image_base EGL_KHR_image_pixmap
               EGL_KHR_no_config_context EGL_KHR_reusable_sync
               EGL_KHR_surfaceless_context EGL_EXT_pixel_format_float
               EGL_KHR_wait_sync EGL_MESA_configless_context
               EGL_ANDROID_native_fence_sync EGL_EXT_buffer_age
               EGL_EXT_image_dma_buf_import
               EGL_EXT_image_dma_buf_import_modifiers EGL_KHR_cl_event2
               EGL_KHR_config_attribs EGL_KHR_create_context
               EGL_KHR_create_context_no_error EGL_KHR_fence_sync
               EGL_KHR_get_all_proc_addresses EGL_KHR_gl_renderbuffer_image
               EGL_KHR_gl_texture_2D_image EGL_KHR_gl_texture_3D_image
               EGL_KHR_gl_texture_cubemap_image EGL_KHR_image
               EGL_KHR_image_base EGL_KHR_image_pixmap
               EGL_KHR_no_config_context EGL_KHR_reusable_sync
               EGL_KHR_surfaceless_context EGL_EXT_pixel_format_float
               EGL_KHR_wait_sync EGL_MESA_configless_context
               EGL_MESA_drm_image EGL_MESA_image_dma_buf_export
               EGL_MESA_query_driver EGL_WL_bind_wayland_display
[14:44:48.609] EGL_KHR_surfaceless_context available
               EGL_MESA_drm_image EGL_MESA_image_dma_buf_export
               EGL_MESA_query_driver EGL_WL_bind_wayland_display
[14:44:48.609] EGL_KHR_surfaceless_context available
[14:44:48.652] GL version: OpenGL ES 2.0 Mesa 20.1.5
[14:44:48.652] GLSL version: OpenGL ES GLSL ES 1.0.16
[14:44:48.652] GL version: OpenGL ES 2.0 Mesa 20.1.5
[14:44:48.652] GLSL version: OpenGL ES GLSL ES 1.0.16
[14:44:48.652] GL vendor: etnaviv
[14:44:48.652] GL renderer: Vivante GC2000 rev 5108
[14:44:48.653] GL extensions: GL_EXT_blend_minmax GL_EXT_multi_draw_arrays
               GL_EXT_texture_filter_anisotropic
               GL_EXT_texture_compression_s3tc GL_EXT_texture_compression_dxt1
               GL_EXT_texture_format_BGRA8888
               GL_OES_compressed_ETC1_RGB8_texture GL_OES_depth24
               GL_OES_element_index_uint GL_OES_fbo_render_mipmap
               GL_OES_mapbuffer GL_OES_rgb8_rgba8 GL_OES_standard_derivatives
               GL_OES_stencil8 GL_OES_texture_3D GL_OES_texture_npot
               GL_OES_vertex_half_float GL_OES_EGL_image GL_OES_depth_texture
               GL_AMD_performance_monitor GL_OES_packed_depth_stencil
               GL_EXT_texture_type_2_10_10_10_REV GL_OES_get_program_binary
               GL_APPLE_texture_max_level GL_EXT_discard_framebuffer
               GL_EXT_read_format_bgra GL_EXT_frag_depth
               GL_NV_fbo_color_attachments GL_OES_EGL_image_external
               GL_OES_EGL_sync GL_OES_vertex_array_object
               GL_ANGLE_texture_compression_dxt3
               GL_ANGLE_texture_compression_dxt5
               GL_EXT_occlusion_query_boolean GL_EXT_unpack_subimage
               GL_NV_draw_buffers GL_NV_read_buffer GL_NV_read_depth
               GL_NV_read_depth_stencil GL_NV_read_stencil GL_EXT_draw_buffers
               GL_EXT_map_buffer_range GL_KHR_debug
[14:44:48.652] GL vendor: etnaviv
[14:44:48.652] GL renderer: Vivante GC2000 rev 5108
               GL_KHR_texture_compression_astc_ldr GL_NV_pixel_buffer_object
[14:44:48.653] GL extensions: GL_EXT_blend_minmax GL_EXT_multi_draw_arrays
               GL_EXT_texture_filter_anisotropic
               GL_OES_required_internalformat GL_OES_surfaceless_context
               GL_EXT_texture_compression_s3tc GL_EXT_texture_compression_dxt1
               GL_EXT_texture_format_BGRA8888
               GL_EXT_separate_shader_objects
               GL_OES_compressed_ETC1_RGB8_texture GL_OES_depth24
               GL_EXT_compressed_ETC1_RGB8_sub_texture
               GL_EXT_draw_elements_base_vertex GL_EXT_texture_border_clamp
               GL_OES_element_index_uint GL_OES_fbo_render_mipmap
               GL_KHR_context_flush_control GL_OES_draw_elements_base_vertex
               GL_OES_mapbuffer GL_OES_rgb8_rgba8 GL_OES_standard_derivatives
               GL_OES_texture_border_clamp GL_KHR_no_error
               GL_KHR_texture_compression_astc_sliced_3d
               GL_OES_stencil8 GL_OES_texture_3D GL_OES_texture_npot
               GL_OES_vertex_half_float GL_OES_EGL_image GL_OES_depth_texture
               GL_AMD_performance_monitor GL_OES_packed_depth_stencil
               GL_EXT_texture_type_2_10_10_10_REV GL_OES_get_program_binary
               GL_EXT_disjoint_timer_query
               GL_APPLE_texture_max_level GL_EXT_discard_framebuffer
               GL_EXT_texture_compression_s3tc_srgb
               GL_EXT_read_format_bgra GL_EXT_frag_depth
               GL_KHR_parallel_shader_compile
[14:44:48.653] GL ES 2 renderer features:
               GL_NV_fbo_color_attachments GL_OES_EGL_image_external
               read-back format: BGRA
               GL_OES_EGL_sync GL_OES_vertex_array_object
               wl_shm sub-image to texture: yes
               GL_ANGLE_texture_compression_dxt3
               EGL Wayland extension: yes
               GL_ANGLE_texture_compression_dxt5
               GL_EXT_occlusion_query_boolean GL_EXT_unpack_subimage
               GL_NV_draw_buffers GL_NV_read_buffer GL_NV_read_depth
               GL_NV_read_depth_stencil GL_NV_read_stencil GL_EXT_draw_buffers
               GL_EXT_map_buffer_range GL_KHR_debug
               GL_KHR_texture_compression_astc_ldr GL_NV_pixel_buffer_object
               GL_OES_required_internalformat GL_OES_surfaceless_context
               GL_EXT_separate_shader_objects
               GL_EXT_compressed_ETC1_RGB8_sub_texture
               GL_EXT_draw_elements_base_vertex GL_EXT_texture_border_clamp
               GL_KHR_context_flush_control GL_OES_draw_elements_base_vertex
               GL_OES_texture_border_clamp GL_KHR_no_error
               GL_KHR_texture_compression_astc_sliced_3d
               GL_EXT_disjoint_timer_query
               GL_EXT_texture_compression_s3tc_srgb
               GL_KHR_parallel_shader_compile
[14:44:48.653] GL ES 2 renderer features:
               read-back format: BGRA
               wl_shm sub-image to texture: yes
               EGL Wayland extension: yes
[14:44:48.709] event0  - gpio-keys: is tagged by udev as: Keyboard
[14:44:48.709] event0  - gpio-keys: device is a keyboard
[14:44:48.709] event0  - gpio-keys: is tagged by udev as: Keyboard
[14:44:48.709] event0  - gpio-keys: device is a keyboard
[14:44:48.716] event1  - Goodix Capacitive TouchScreen: is tagged by udev as: Keyboard Touchscreen
[14:44:48.716] event1  - Goodix Capacitive TouchScreen: is tagged by udev as: Keyboard Touchscreen
[14:44:48.718] event1  - Goodix Capacitive TouchScreen: device is a keyboard
[14:44:48.718] event1  - Goodix Capacitive TouchScreen: device is a touch device
[14:44:48.718] event1  - Goodix Capacitive TouchScreen: device is a keyboard
[14:44:48.718] event1  - Goodix Capacitive TouchScreen: device is a touch device
[14:44:48.725] event2  - Goodix Capacitive TouchScreen: is tagged by udev as: Keyboard Touchscreen
[14:44:48.725] event2  - Goodix Capacitive TouchScreen: is tagged by udev as: Keyboard Touchscreen
[14:44:48.726] event2  - Goodix Capacitive TouchScreen: device is a keyboard
[14:44:48.726] event2  - Goodix Capacitive TouchScreen: device is a touch device
[14:44:48.726] event2  - Goodix Capacitive TouchScreen: device is a keyboard
[14:44:48.726] event2  - Goodix Capacitive TouchScreen: device is a touch device
[14:44:48.792] libinput: configuring device "gpio-keys".
[14:44:48.792] Touchscreen - Goodix Capacitive TouchScreen - /sys/devices/soc0/soc/2100000.aips-bus/21a0000.i2c/i2c-0/0-0014/input/input1/event1
[14:44:48.792] libinput: configuring device "gpio-keys".
[14:44:48.792] libinput: configuring device "Goodix Capacitive TouchScreen".
[14:44:48.792] input device event1 has no enabled output associated (none named), skipping calibration for now.
[14:44:48.792] Touchscreen - Goodix Capacitive TouchScreen - /sys/devices/soc0/soc/2100000.aips-bus/21a0000.i2c/i2c-0/0-0014/input/input1/event1
[14:44:48.793] Touchscreen - Goodix Capacitive TouchScreen - /sys/devices/soc0/soc/2100000.aips-bus/21a8000.i2c/i2c-2/2-0014/input/input2/event2
[14:44:48.792] libinput: configuring device "Goodix Capacitive TouchScreen".
[14:44:48.793] libinput: configuring device "Goodix Capacitive TouchScreen".
[14:44:48.792] input device event1 has no enabled output associated (none named), skipping calibration for now.
[14:44:48.793] input device event2 has no enabled output associated (none named), skipping calibration for now.
[14:44:48.793] Touchscreen - Goodix Capacitive TouchScreen - /sys/devices/soc0/soc/2100000.aips-bus/21a8000.i2c/i2c-2/2-0014/input/input2/event2
[14:44:48.793] libinput: configuring device "Goodix Capacitive TouchScreen".
[14:44:48.793] input device event2 has no enabled output associated (none named), skipping calibration for now.
[14:44:48.793] DRM: head 'LVDS-1' found, connector 54 is connected, EDID make 'unknown', model 'unknown', serial 'unknown'
[14:44:48.794] DRM: head 'LVDS-2' found, connector 56 is connected, EDID make 'unknown', model 'unknown', serial 'unknown'
[14:44:48.794] Registered plugin API 'weston_drm_output_api_v1' of size 12
[14:44:48.795] Registered plugin API 'weston_drm_virtual_output_api_v1' of size 24
[14:44:48.795] Chosen EGL config details: id:  21 rgba: 8 8 8 0 buf: 24 dep:  0 stcl: 0 int: 1-1 type: win vis_id: XRGB8888 (0x34325258)
[14:44:48.796] Output LVDS-1 (crtc 34) video modes:
               1280x320@62.0, preferred, current, 36.0 MHz
[14:44:48.796] associating input device event0 with output LVDS-1 (none by udev)
[14:44:48.796] associating input device event1 with output LVDS-1 (none by udev)
[14:44:48.797] associating input device event2 with output LVDS-1 (none by udev)
[14:44:48.793] DRM: head 'LVDS-1' found, connector 54 is connected, EDID make 'unknown', model 'unknown', serial 'unknown'
[14:44:48.794] DRM: head 'LVDS-2' found, connector 56 is connected, EDID make 'unknown', model 'unknown', serial 'unknown'
[14:44:48.794] Registered plugin API 'weston_drm_output_api_v1' of size 12
[14:44:48.795] Registered plugin API 'weston_drm_virtual_output_api_v1' of size 24
[14:44:48.798] Output 'LVDS-1' enabled with head(s) LVDS-1
[14:44:48.798] Chosen EGL config details: id:  21 rgba: 8 8 8 0 buf: 24 dep:  0 stcl: 0 int: 1-1 type: win vis_id: XRGB8888 (0x34325258)
[14:44:48.799] Output LVDS-2 (crtc 41) video modes:
               1280x320@62.0, preferred, current, 36.0 MHz
[14:44:48.799] Output 'LVDS-2' enabled with head(s) LVDS-2
[14:44:48.795] Chosen EGL config details: id:  21 rgba: 8 8 8 0 buf: 24 dep:  0 stcl: 0 int: 1-1 type: win vis_id: XRGB8888 (0x34325258)
[14:44:48.799] Compositor capabilities:
               arbitrary surface rotation: yes
               screen capture uses y-flip: yes
[14:44:48.796] Output LVDS-1 (crtc 34) video modes:
               presentation clock: CLOCK_MONOTONIC, id 1
               presentation clock resolution: 0.000000001 s
               1280x320@62.0, preferred, current, 36.0 MHz
[14:44:48.796] associating input device event0 with output LVDS-1 (none by udev)
[14:44:48.796] associating input device event1 with output LVDS-1 (none by udev)
[14:44:48.797] associating input device event2 with output LVDS-1 (none by udev)
[14:44:48.798] Output 'LVDS-1' enabled with head(s) LVDS-1
[14:44:48.798] Chosen EGL config details: id:  21 rgba: 8 8 8 0 buf: 24 dep:  0 stcl: 0 int: 1-1 type: win vis_id: XRGB8888 (0x34325258)
[14:44:48.799] Output LVDS-2 (crtc 41) video modes:
               1280x320@62.0, preferred, current, 36.0 MHz
[14:44:48.799] Output 'LVDS-2' enabled with head(s) LVDS-2
[14:44:48.800] Loading module '/usr/lib/arm-linux-gnueabihf/weston/desktop-shell.so'
[14:44:48.799] Compositor capabilities:
               arbitrary surface rotation: yes
               screen capture uses y-flip: yes
               presentation clock: CLOCK_MONOTONIC, id 1
               presentation clock resolution: 0.000000001 s
[14:44:48.800] Loading module '/usr/lib/arm-linux-gnueabihf/weston/desktop-shell.so'
[14:44:48.806] launching '/usr/lib/arm-linux-gnueabihf/weston-keyboard'
[14:44:48.806] launching '/usr/lib/arm-linux-gnueabihf/weston-keyboard'
[14:44:48.812] Loading module '/usr/lib/arm-linux-gnueabihf/weston/screen-share.so'
[14:44:48.812] Loading module '/usr/lib/arm-linux-gnueabihf/weston/screen-share.so'
[14:44:48.834] Screen share failed: No wl_shm found
[14:44:48.834] Screen share failed: No wl_shm found
[14:44:48.836] Loading module '/usr/lib/arm-linux-gnueabihf/libweston-8/xwayland.so'
[14:44:48.836] Loading module '/usr/lib/arm-linux-gnueabihf/libweston-8/xwayland.so'
[14:44:48.972] Registered plugin API 'weston_xwayland_v1' of size 16
[14:44:48.972] Registered plugin API 'weston_xwayland_surface_v1' of size 8
[14:44:48.973] xserver listening on display :0
[14:44:48.972] Registered plugin API 'weston_xwayland_v1' of size 16
[14:44:48.972] Registered plugin API 'weston_xwayland_surface_v1' of size 8
[14:44:48.973] launching '/usr/lib/arm-linux-gnueabihf/weston-desktop-shell'
[14:44:48.973] xserver listening on display :0
[14:44:48.973] launching '/usr/lib/arm-linux-gnueabihf/weston-desktop-shell'
[14:44:49.124] unknown child process exited
[14:44:49.124] unknown child process exited
could not load cursor 'dnd-move'
could not load cursor 'dnd-move'
could not load cursor 'dnd-copy'
could not load cursor 'dnd-move'
could not load cursor 'dnd-none'
could not load cursor 'dnd-move'
could not load cursor 'dnd-copy'
could not load cursor 'dnd-none'
could not load cursor 'dnd-copy'
could not load cursor 'dnd-none'
could not load cursor 'dnd-copy'
could not load cursor 'dnd-none'

I would assume to have event 1 be associated with LVDS-1 and event2 be associated with LVDS-2… The relevant overlays for this, you can find here: Overlays.

I am looking forward to hear from you,
thanks for your support on Toradex side,

best,

Marcus

I did some more research on the topic and I believe I found something. In short this seems to be a bug with how Weston/udev associates input/output devices.

Please see the thread on the mailing list here: Set input device to the output

The user has an almost identical issue as you. 2 LVDS touchscreens but both touch events are associated with the first LVDS display. According to the response you’ll need to create a udev rule and use this WL_OUTPUT variable to force the correct association. Unfortunately the thread doesn’t have too many details on implementation and this is something I’m not too familiar with myself. You may need to do some research on how to create this udev rule.

Best Regards,
Jeremias

Greetings @jeremias.tx.

Thank you for your research on this topic. That is very interesting. It seems that dealing with udev rules is a good way to modify the LVDS-1 and LVDS-2 association. I am going to do some researches about it and test it on the devices. I will let you know the outcomes, of course.

Meanwhile, I have done some testings on the gpio recognition. Having a particular look on the pins of no 195, 197, 281 and 283, I noticed that these are recognized as reset and irq pins. Surprisingly, the ones show the flag “in lo” and the others show the flag “in high” although the same type of display is connected:

# sudo cat /sys/kernel/debug/gpio           
Password: 
gpiochip0: GPIOs 0-31, parent: platform/209c000.gpio, 209c000.gpio:
 gpio-0   (MXM3_84             |regulator-usb-host-v) out hi 
 gpio-1   (MXM3_4              )
 gpio-2   (MXM3_15/GPIO7       )
 gpio-3   (MXM3_96             )
 gpio-4   (MXM3_37             )
 gpio-5   (                    )
 gpio-6   (MXM3_17/GPIO8       )
 gpio-7   (MXM3_14             )
 gpio-8   (MXM3_12             )
 gpio-9   (MXM3_2              )
 gpio-10  (MXM3_184            )
 gpio-11  (MXM3_180            )
 gpio-12  (MXM3_178            )
 gpio-13  (MXM3_176            )
 gpio-14  (MXM3_188            )
 gpio-15  (MXM3_186            )
 gpio-16  (MXM3_160            )
 gpio-17  (MXM3_162            )
 gpio-18  (MXM3_150            )
 gpio-19  (MXM3_144            )
 gpio-20  (MXM3_154            )
 gpio-21  (MXM3_146            )
 gpio-22  (                    )
 gpio-23  (                    )
 gpio-24  (MXM3_72             )
 gpio-25  (                    |phy-reset           ) out hi 
 gpio-28  (                    |PCIe reset          ) out lo 

gpiochip1: GPIOs 32-63, parent: platform/20a0000.gpio, 20a0000.gpio:
 gpio-32  (MXM3_148            )
 gpio-33  (MXM3_152            )
 gpio-34  (MXM3_156            )
 gpio-35  (MXM3_158            )
 gpio-36  (MXM3_1/GPIO1        )
 gpio-37  (MXM3_3/GPIO2        )
 gpio-38  (MXM3_5/GPIO3        )
 gpio-39  (MXM3_7/GPIO4        )
 gpio-40  (MXM3_95             )
 gpio-41  (MXM3_6              )
 gpio-42  (MXM3_8              )
 gpio-43  (MXM3_123            )
 gpio-44  (MXM3_126            )
 gpio-45  (MXM3_128            )
 gpio-46  (MXM3_130            )
 gpio-47  (MXM3_132            )
 gpio-48  (MXM3_253            )
 gpio-49  (MXM3_251            )
 gpio-50  (MXM3_283            |reset               ) in  lo 
 gpio-51  (MXM3_281            |irq                 ) in  lo 
 gpio-52  (MXM3_279            )
 gpio-53  (MXM3_277            )
 gpio-54  (MXM3_243            )
 gpio-55  (MXM3_235            )
 gpio-56  (MXM3_231            )
 gpio-57  (MXM3_229            )
 gpio-58  (MXM3_233            |spi_imx             ) out hi 
 gpio-59  (MXM3_198            )
 gpio-60  (MXM3_275            )
 gpio-61  (MXM3_273            )
 gpio-62  (MXM3_207            )
 gpio-63  (MXM3_122            )

gpiochip2: GPIOs 64-95, parent: platform/20a4000.gpio, 20a4000.gpio:
 gpio-64  (MXM3_271            )
 gpio-65  (MXM3_269            )
 gpio-66  (MXM3_301            )
 gpio-67  (MXM3_299            )
 gpio-68  (MXM3_297            )
 gpio-69  (MXM3_295            )
 gpio-70  (MXM3_293            )
 gpio-71  (MXM3_291            )
 gpio-72  (MXM3_289            )
 gpio-73  (MXM3_287            )
 gpio-74  (MXM3_249            )
 gpio-75  (MXM3_247            )
 gpio-76  (MXM3_245            )
 gpio-77  (MXM3_286            )
 gpio-78  (MXM3_239            )
 gpio-79  (MXM3_35             )
 gpio-80  (MXM3_205            )
 gpio-81  (MXM3_203            )
 gpio-82  (MXM3_201            )
 gpio-83  (MXM3_116            )
 gpio-84  (MXM3_114            )
 gpio-85  (MXM3_262            )
 gpio-86  (MXM3_274            |regulator-usb-otg-vb) out lo 
 gpio-87  (MXM3_124            )
 gpio-88  (MXM3_110            )
 gpio-89  (MXM3_120            )
 gpio-90  (MXM3_263            )
 gpio-91  (MXM3_265            )
 gpio-92  (                    |regulator-usb-host-v) out hi 
 gpio-93  (MXM3_135            )
 gpio-94  (MXM3_261            )
 gpio-95  (MXM3_259            )
gpiochip3: GPIOs 96-127, parent: platform/20a8000.gpio, 20a8000.gpio:
 gpio-96  (                    )
 gpio-97  (                    )
 gpio-98  (                    )
 gpio-99  (                    )
 gpio-100 (                    )
 gpio-101 (MXM3_194            )
 gpio-102 (MXM3_136            )
 gpio-103 (MXM3_134            )
 gpio-104 (MXM3_140            )
 gpio-105 (MXM3_138            )
 gpio-106 (                    )
 gpio-107 (MXM3_220            )
 gpio-108 (                    )
 gpio-109 (                    )
 gpio-110 (MXM3_18             )
 gpio-111 (MXM3_16             )
 gpio-112 (                    )
 gpio-113 (                    )
 gpio-114 (MXM3_214            )
 gpio-115 (MXM3_216            )
 gpio-116 (MXM3_164            |cd                  ) in  lo ACTIVE LOW

gpiochip4: GPIOs 128-159, parent: platform/20ac000.gpio, 20ac000.gpio:
 gpio-128 (MXM3_159            )
 gpio-129 (                    )
 gpio-130 (                    )
 gpio-131 (                    )
 gpio-132 (MXM3_257            )
 gpio-133 (                    )
 gpio-134 (                    )
 gpio-135 (                    )
 gpio-136 (                    )
 gpio-137 (                    )
 gpio-138 (MXM3_200            )
 gpio-139 (MXM3_196            )
 gpio-140 (MXM3_204            )
 gpio-141 (MXM3_202            )
 gpio-142 (                    )
 gpio-143 (                    )
 gpio-144 (                    )
 gpio-145 (                    )
 gpio-146 (MXM3_191            )
 gpio-147 (MXM3_197            |reset               ) in  hi 
 gpio-148 (MXM3_77             )
 gpio-149 (MXM3_195            |irq                 ) in  hi 
 gpio-150 (MXM3_221            )
 gpio-151 (MXM3_225            )
 gpio-152 (MXM3_223            )
 gpio-153 (MXM3_227            |spi_imx             ) out hi 
 gpio-154 (MXM3_209            )
 gpio-155 (MXM3_211            )
 gpio-156 (MXM3_118            )
 gpio-157 (MXM3_112            )
 gpio-158 (MXM3_187            )
 gpio-159 (MXM3_185            )

gpiochip5: GPIOs 160-191, parent: platform/20b0000.gpio, 20b0000.gpio:
 gpio-160 (MXM3_183            )
 gpio-161 (MXM3_181            )
 gpio-162 (MXM3_179            )
 gpio-163 (MXM3_177            )
 gpio-164 (MXM3_175            )
 gpio-165 (MXM3_173            )
 gpio-166 (MXM3_255            )
 gpio-167 (MXM3_83             )
 gpio-168 (MXM3_91             )
 gpio-169 (MXM3_13/GPIO6       )
 gpio-170 (MXM3_11/GPIO5       )
 gpio-171 (MXM3_79             )
 gpio-172 (                    )
 gpio-173 (                    )
 gpio-174 (MXM3_190            )
 gpio-175 (MXM3_193            )
 gpio-176 (MXM3_89             )

gpiochip6: GPIOs 192-223, parent: platform/20b4000.gpio, 20b4000.gpio:
 gpio-192 (                    )
 gpio-193 (                    )
 gpio-194 (                    )
 gpio-195 (                    )
 gpio-196 (                    )
 gpio-197 (                    )
 gpio-198 (                    )
 gpio-199 (                    )
 gpio-200 (                    )
 gpio-201 (MXM3_99             )
 gpio-202 (MXM3_85             )
 gpio-203 (MXM3_217            )
 gpio-204 (MXM3_215            )

Having removed irrelevant overlay blocks, now all flags show “high”, which is good from my perspective because there are two displays of the same type showing the same flags.

As a kind of explanation, I detected that the removed blocks have held some pins being denominated under different name. In the following, I have summarized pins having the same Pin No at file imx6dl-pinfunc.h:

in file ./device-trees/dts-arm32/imx6dl-pinfunc.h, relevant X1 Pin No are:

LVDS-1-Plug -> I2C3 (working)
	195
	#define MX6QDL_PAD_CSI0_VSYNC__IPU1_CSI0_VSYNC      0x264 0x634 0x000 0x0 0x0
	#define MX6QDL_PAD_CSI0_VSYNC__EIM_DATA01           0x264 0x634 0x000 0x1 0x0
	#define MX6QDL_PAD_CSI0_VSYNC__GPIO5_IO21           0x264 0x634 0x000 0x5 0x0
	#define MX6QDL_PAD_CSI0_VSYNC__ARM_TRACE00          0x264 0x634 0x000 0x7 0x0
	197
	#define MX6QDL_PAD_CSI0_MCLK__IPU1_CSI0_HSYNC       0x25c 0x62c 0x000 0x0 0x0
	#define MX6QDL_PAD_CSI0_MCLK__CCM_CLKO1             0x25c 0x62c 0x000 0x3 0x0
	#define MX6QDL_PAD_CSI0_MCLK__GPIO5_IO19            0x25c 0x62c 0x000 0x5 0x0
	#define MX6QDL_PAD_CSI0_MCLK__ARM_TRACE_CTL         0x25c 0x62c 0x000 0x7 0x0

LVDS-2-Plug -> I2C1 (not working)
	281
	#define MX6QDL_PAD_EIM_A19__EIM_ADDR19              0x0e8 0x3fc 0x000 0x0 0x0
	#define MX6QDL_PAD_EIM_A19__IPU1_DISP1_DATA14       0x0e8 0x3fc 0x000 0x1 0x0
	#define MX6QDL_PAD_EIM_A19__IPU2_CSI1_DATA14        0x0e8 0x3fc 0x8c0 0x2 0x1
	#define MX6QDL_PAD_EIM_A19__GPIO2_IO19              0x0e8 0x3fc 0x000 0x5 0x0
	#define MX6QDL_PAD_EIM_A19__SRC_BOOT_CFG19          0x0e8 0x3fc 0x000 0x7 0x0
	283
	#define MX6QDL_PAD_EIM_A20__EIM_ADDR20              0x0e4 0x3f8 0x000 0x0 0x0
	#define MX6QDL_PAD_EIM_A20__IPU1_DISP1_DATA15       0x0e4 0x3f8 0x000 0x1 0x0
	#define MX6QDL_PAD_EIM_A20__IPU2_CSI1_DATA15        0x0e4 0x3f8 0x8c4 0x2 0x1
	#define MX6QDL_PAD_EIM_A20__GPIO2_IO18              0x0e4 0x3f8 0x000 0x5 0x0
	#define MX6QDL_PAD_EIM_A20__SRC_BOOT_CFG20          0x0e4 0x3f8 0x000 0x7 0x0

I assume, that the last kind of initialization is responsible for the corresponding mode of the pin. It so has overwritten the mode required for the touch. However, one touch event is recognized at the second display, which is a progress.

After the first touch on the first display, error messages result in “Goodix-TS 2-0014: I2C transfer error: -110”. After the first touch on the second display, error messages “Goodix-TS 0-0014: I2C write end_cmd error” loop. The following output shows this.

sudo journalctl -f
Password: 
-- Logs begin at Thu 2021-02-25 22:26:26 UTC. --
Feb 25 22:39:57 apalis-imx6-5341 sshd[1191]: pam_unix(sshd:session): session opened for user torizon by (uid=0)
Feb 25 22:39:57 apalis-imx6-5341 systemd-logind[528]: New session c2 of user torizon.
Feb 25 22:39:57 apalis-imx6-5341 systemd[1]: Started Session c2 of user torizon.
Feb 25 22:42:06 apalis-imx6-5341 systemd[1]: Starting Cleanup of Temporary Directories...
Feb 25 22:42:06 apalis-imx6-5341 systemd-tmpfiles[1212]: [/usr/lib/tmpfiles.d/tmp.conf:12] Duplicate line for path "/var/tmp", ignoring.
Feb 25 22:42:06 apalis-imx6-5341 systemd-tmpfiles[1212]: [/usr/lib/tmpfiles.d/var.conf:14] Duplicate line for path "/var/log", ignoring.
Feb 25 22:42:06 apalis-imx6-5341 systemd[1]: systemd-tmpfiles-clean.service: Succeeded.
Feb 25 22:42:06 apalis-imx6-5341 systemd[1]: Started Cleanup of Temporary Directories.
Feb 25 23:06:59 apalis-imx6-5341 sudo[1243]:  torizon : TTY=pts/1 ; PWD=/var/rootdirs/home/torizon ; USER=root ; COMMAND=/usr/bin/cat /sys/kernel/debug/gpio
Feb 25 23:13:21 apalis-imx6-5341 sudo[1247]:  torizon : TTY=pts/1 ; PWD=/var/rootdirs/home/torizon ; USER=root ; COMMAND=/usr/bin/journalctl -f
Feb 25 23:13:32 apalis-imx6-5341 kernel: Goodix-TS 2-0014: I2C write end_cmd error
Feb 25 23:13:32 apalis-imx6-5341 kernel: Goodix-TS 2-0014: I2C write end_cmd error
Feb 25 23:13:33 apalis-imx6-5341 kernel: Goodix-TS 2-0014: I2C transfer error: -110

Feb 25 23:13:41 apalis-imx6-5341 kernel: Goodix-TS 0-0014: I2C write end_cmd error
Feb 25 23:13:41 apalis-imx6-5341 kernel: Goodix-TS 0-0014: I2C write end_cmd error
Feb 25 23:13:42 apalis-imx6-5341 kernel: Goodix-TS 0-0014: I2C write end_cmd error
Feb 25 23:13:42 apalis-imx6-5341 kernel: Goodix-TS 0-0014: I2C write end_cmd error
Feb 25 23:13:43 apalis-imx6-5341 kernel: Goodix-TS 0-0014: I2C write end_cmd error
Feb 25 23:13:43 apalis-imx6-5341 kernel: Goodix-TS 0-0014: I2C write end_cmd error
Feb 25 23:13:44 apalis-imx6-5341 kernel: Goodix-TS 0-0014: I2C write end_cmd error
Feb 25 23:13:44 apalis-imx6-5341 kernel: Goodix-TS 0-0014: I2C write end_cmd error
Feb 25 23:13:45 apalis-imx6-5341 kernel: Goodix-TS 0-0014: I2C write end_cmd error
Feb 25 23:13:45 apalis-imx6-5341 kernel: Goodix-TS 0-0014: I2C write end_cmd error
Feb 25 23:13:46 apalis-imx6-5341 kernel: Goodix-TS 0-0014: I2C write end_cmd error
Feb 25 23:13:46 apalis-imx6-5341 kernel: Goodix-TS 0-0014: I2C write end_cmd error
Feb 25 23:13:47 apalis-imx6-5341 kernel: Goodix-TS 0-0014: I2C write end_cmd error
Feb 25 23:13:47 apalis-imx6-5341 kernel: Goodix-TS 0-0014: I2C write end_cmd error
Feb 25 23:13:48 apalis-imx6-5341 kernel: Goodix-TS 0-0014: I2C write end_cmd error
Feb 25 23:13:48 apalis-imx6-5341 kernel: Goodix-TS 0-0014: I2C write end_cmd error

Meanwhile, I assume that the LVDS assignment issue and the thing with WL_OUTPUT variable is only relevant for graphical weston containers. Of course, I would like to build on this graphical interface and I will have to face this issue as well. Since I even can generate these touch errors on console output before starting weston, I assume this is not the containers fault. The error is earlier in the boot sequence…

Here, you can find the most current overlays: Overlays

If you have further ideas, please let me know.

Thanks in advance,

Marcus

Was the Goodix driver always throwing these i2c errors or was this just recently?

As for the device tree I don’t see anything obviously amiss with those pins. Also just to clarify the pinfunc.h file just has definitions for each pin and their possible alternate functions it doesn’t actually set anything. Whichever definition gets used in the device tree is what the pin is set as.

I took a look at SODIMM 281/283 the ones you marked as not working. In the base device tree the only thing I notice is these pins are also used by the lcdif interface here: imx6qdl-apalis.dtsi « dts « boot « arm « arch - linux-toradex.git - Linux kernel for Apalis, Colibri and Verdin modules

However there shouldn’t be a conflict here since the lcdif is disabled by default.

Other than this the only thing I can think of is that the i2c1 interface has some slightly different settings than the i2c3 in the device tree.

&i2c3 {
	clock-frequency = <100000>;
	pinctrl-names = "default", "recovery";
	pinctrl-0 = <&pinctrl_i2c3>;
	pinctrl-1 = <&pinctrl_i2c3_recovery>;
	scl-gpios = <&gpio3 17 (GPIO_ACTIVE_HIGH | GPIO_OPEN_DRAIN)>;
	sda-gpios = <&gpio3 18 (GPIO_ACTIVE_HIGH | GPIO_OPEN_DRAIN)>;

&i2c1 {
	clock-frequency = <100000>;
	pinctrl-names = "default";
	pinctrl-0 = <&pinctrl_i2c1>;
	status = "disabled";

Though it appears you normalized this in your device tree. I guess we’d need to take it step by step and see what causes the behavior of these 2 i2c interfaces to diverge when connected to these LVDS displays.

Best Regards,
Jeremias