From 201834107c10c283787d0a0dd008340215e27ecd Mon Sep 17 00:00:00 2001 From: Vasyl Vavrychuk Date: Wed, 16 Dec 2020 20:03:37 +0200 Subject: virtualization/linux-yocto: Fix multitouch with virtio-input. Multitouch support with virtio-input was broken which can be observed: * by running weston-simple-touch with weston compositor ( weston-simple-touch does not work with AGL compositor due to XDG shell issues) * by doing pinch to zoom in/out on navigation app map Change-Id: I3ec2a989a4217ebe22cee9cf1640190ca8e2bb81 Bug-AGL: SPEC-3893 Signed-off-by: Vasyl Vavrychuk Reviewed-on: https://gerrit.automotivelinux.org/gerrit/c/AGL/meta-agl/+/26289 Reviewed-by: Jan-Simon Moeller Tested-by: Jan-Simon Moeller --- .../virtio-input-add-multi-touch-support.patch | 66 ++++++++++++++++++++++ .../linux-yocto/virtio-kmeta/bsp/virtio/virtio.scc | 1 + 2 files changed, 67 insertions(+) create mode 100644 meta-agl-bsp/virtualization-layer/recipes-kernel/linux/linux-yocto/virtio-kmeta/bsp/virtio/virtio-input-add-multi-touch-support.patch diff --git a/meta-agl-bsp/virtualization-layer/recipes-kernel/linux/linux-yocto/virtio-kmeta/bsp/virtio/virtio-input-add-multi-touch-support.patch b/meta-agl-bsp/virtualization-layer/recipes-kernel/linux/linux-yocto/virtio-kmeta/bsp/virtio/virtio-input-add-multi-touch-support.patch new file mode 100644 index 000000000..59a9f9b5d --- /dev/null +++ b/meta-agl-bsp/virtualization-layer/recipes-kernel/linux/linux-yocto/virtio-kmeta/bsp/virtio/virtio-input-add-multi-touch-support.patch @@ -0,0 +1,66 @@ +From 16c10bede8b3d8594279752bf53153491f3f944f Mon Sep 17 00:00:00 2001 +From: Mathias Crombez +Date: Fri, 15 Jan 2021 02:26:23 +0200 +Subject: [PATCH] virtio-input: add multi-touch support + +Without multi-touch slots allocated, ABS_MT_SLOT events will be lost by +input_handle_abs_event. + +Implementation is based on uinput_create_device. + +Signed-off-by: Mathias Crombez +Co-developed-by: Vasyl Vavrychuk +Signed-off-by: Vasyl Vavrychuk +Link: https://lore.kernel.org/r/20210115002623.8576-1-vasyl.vavrychuk@opensynergy.com +Signed-off-by: Michael S. Tsirkin +Reviewed-by: Gerd Hoffmann +--- + drivers/virtio/virtio_input.c | 11 ++++++++++- + 1 file changed, 10 insertions(+), 1 deletion(-) + +diff --git a/drivers/virtio/virtio_input.c b/drivers/virtio/virtio_input.c +index 244965c20d9b..ce51ae165943 100644 +--- a/drivers/virtio/virtio_input.c ++++ b/drivers/virtio/virtio_input.c +@@ -7,6 +7,7 @@ + + #include + #include ++#include + + struct virtio_input { + struct virtio_device *vdev; +@@ -219,7 +220,7 @@ static int virtinput_probe(struct virtio_device *vdev) + struct virtio_input *vi; + unsigned long flags; + size_t size; +- int abs, err; ++ int abs, err, nslots; + + if (!virtio_has_feature(vdev, VIRTIO_F_VERSION_1)) + return -ENODEV; +@@ -304,6 +305,13 @@ static int virtinput_probe(struct virtio_device *vdev) + continue; + virtinput_cfg_abs(vi, abs); + } ++ ++ if (test_bit(ABS_MT_SLOT, vi->idev->absbit)) { ++ nslots = input_abs_get_max(vi->idev, ABS_MT_SLOT) + 1; ++ err = input_mt_init_slots(vi->idev, nslots, 0); ++ if (err) ++ goto err_mt_init_slots; ++ } + } + + virtio_device_ready(vdev); +@@ -319,6 +327,7 @@ static int virtinput_probe(struct virtio_device *vdev) + spin_lock_irqsave(&vi->lock, flags); + vi->ready = false; + spin_unlock_irqrestore(&vi->lock, flags); ++err_mt_init_slots: + input_free_device(vi->idev); + err_input_alloc: + vdev->config->del_vqs(vdev); +-- +2.31.1 + diff --git a/meta-agl-bsp/virtualization-layer/recipes-kernel/linux/linux-yocto/virtio-kmeta/bsp/virtio/virtio.scc b/meta-agl-bsp/virtualization-layer/recipes-kernel/linux/linux-yocto/virtio-kmeta/bsp/virtio/virtio.scc index 333ac42b8..9dfca5c94 100644 --- a/meta-agl-bsp/virtualization-layer/recipes-kernel/linux/linux-yocto/virtio-kmeta/bsp/virtio/virtio.scc +++ b/meta-agl-bsp/virtualization-layer/recipes-kernel/linux/linux-yocto/virtio-kmeta/bsp/virtio/virtio.scc @@ -1,2 +1,3 @@ # SPDX-License-Identifier: MIT kconf hardware virtio.cfg +patch virtio-input-add-multi-touch-support.patch -- cgit 1.2.3-korg