Re: [PATCH RESEND v2] virtio-input: add multi-touch support

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Hi, Dmitry,

Thanks for you suggestion. I have sent v3 version of the patch where I have applied it.

Kind regards,
Vasyl

On 09.12.20 00:05, Dmitry Torokhov wrote:
CAUTION: This email originated from outside of the organization.
Do not click links or open attachments unless you recognize the sender and know the content is safe.


Hi Vasyl,

On Tue, Dec 08, 2020 at 11:01:50PM +0200, Vasyl Vavrychuk wrote:
From: Mathias Crombez <mathias.crombez@xxxxxxxxxxxx>

Without multi-touch slots allocated, ABS_MT_SLOT events will be lost by
input_handle_abs_event.

Signed-off-by: Mathias Crombez <mathias.crombez@xxxxxxxxxxxx>
Signed-off-by: Vasyl Vavrychuk <vasyl.vavrychuk@xxxxxxxxxxxxxxx>
Tested-by: Vasyl Vavrychuk <vasyl.vavrychuk@xxxxxxxxxxxxxxx>
---
v2: fix patch corrupted by corporate email server

  drivers/virtio/Kconfig        | 11 +++++++++++
  drivers/virtio/virtio_input.c |  8 ++++++++
  2 files changed, 19 insertions(+)

diff --git a/drivers/virtio/Kconfig b/drivers/virtio/Kconfig
index 7b41130d3f35..2cfd5b01d96d 100644
--- a/drivers/virtio/Kconfig
+++ b/drivers/virtio/Kconfig
@@ -111,6 +111,17 @@ config VIRTIO_INPUT

        If unsure, say M.

+config VIRTIO_INPUT_MULTITOUCH_SLOTS
+     depends on VIRTIO_INPUT
+     int "Number of multitouch slots"
+     range 0 64
+     default 10
+     help
+      Define the number of multitouch slots used. Default to 10.
+      This parameter is unused if there is no multitouch capability.

I believe the number of slots should be communicated to the guest by
the host, similarly to how the rest of input device capabilities is
transferred, instead of having static compile-time option.

+
+      0 will disable the feature.
+
  config VIRTIO_MMIO
       tristate "Platform bus driver for memory mapped virtio devices"
       depends on HAS_IOMEM && HAS_DMA
diff --git a/drivers/virtio/virtio_input.c b/drivers/virtio/virtio_input.c
index f1f6208edcf5..13f3d90e6c30 100644
--- a/drivers/virtio/virtio_input.c
+++ b/drivers/virtio/virtio_input.c
@@ -7,6 +7,7 @@

  #include <uapi/linux/virtio_ids.h>
  #include <uapi/linux/virtio_input.h>
+#include <linux/input/mt.h>

  struct virtio_input {
       struct virtio_device       *vdev;
@@ -205,6 +206,7 @@ static int virtinput_probe(struct virtio_device *vdev)
       unsigned long flags;
       size_t size;
       int abs, err;
+     bool is_mt = false;

       if (!virtio_has_feature(vdev, VIRTIO_F_VERSION_1))
               return -ENODEV;
@@ -287,9 +289,15 @@ static int virtinput_probe(struct virtio_device *vdev)
               for (abs = 0; abs < ABS_CNT; abs++) {
                       if (!test_bit(abs, vi->idev->absbit))
                               continue;
+                     if (input_is_mt_value(abs))
+                             is_mt = true;
                       virtinput_cfg_abs(vi, abs);
               }
       }
+     if (is_mt)
+             input_mt_init_slots(vi->idev,
+                                 CONFIG_VIRTIO_INPUT_MULTITOUCH_SLOTS,
+                                 INPUT_MT_DIRECT);

Here errors need to be handled.


       virtio_device_ready(vdev);
       vi->ready = true;
--
2.23.0


Thanks.

--
Dmitry

_______________________________________________
Virtualization mailing list
Virtualization@xxxxxxxxxxxxxxxxxxxxxxxxxx
https://lists.linuxfoundation.org/mailman/listinfo/virtualization



[Index of Archives]     [KVM Development]     [Libvirt Development]     [Libvirt Users]     [CentOS Virtualization]     [Netdev]     [Ethernet Bridging]     [Linux Wireless]     [Kernel Newbies]     [Security]     [Linux for Hams]     [Netfilter]     [Bugtraq]     [Yosemite Forum]     [MIPS Linux]     [ARM Linux]     [Linux RAID]     [Linux Admin]     [Samba]

  Powered by Linux