Re: [PATCH] HID: add support for PenMount HID TouchScreen Driver v2

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

 



2014-08-27 10:20 GMT+02:00 Christian Gmeiner <christian.gmeiner@xxxxxxxxx>:
> This patch adds a seperate hid-penmount driver to work
> around an issue with the HID report descriptor. The
> descriptor does not contain the ContactID usage and as
> result the touchscreen is represented as normal mouse
> to the system.
>
> This driver maps the button 0 emitted by the touchscreen
> to BTN_TOUCH. This makes it possible to use touch events
> in userspace.
>
> changes from v1 to v2
>  - incorporated feedback from Benjamin Tissoires
>
> Signed-off-by: Christian Gmeiner <christian.gmeiner@xxxxxxxxx>
> ---
>  drivers/hid/Kconfig        |  6 ++++++
>  drivers/hid/Makefile       |  1 +
>  drivers/hid/hid-penmount.c | 51 ++++++++++++++++++++++++++++++++++++++++++++++
>  3 files changed, 58 insertions(+)
>  create mode 100644 drivers/hid/hid-penmount.c
>
> diff --git a/drivers/hid/Kconfig b/drivers/hid/Kconfig
> index c18d5d7..0351b66 100644
> --- a/drivers/hid/Kconfig
> +++ b/drivers/hid/Kconfig
> @@ -530,6 +530,12 @@ config PANTHERLORD_FF
>           Say Y here if you have a PantherLord/GreenAsia based game controller
>           or adapter and want to enable force feedback support for it.
>
> +config HID_PENMOUNT
> +       tristate "Penmount touch device"
> +       depends on USB_HID
> +       ---help---
> +         Say Y here if you have a Penmount based touch controller.
> +
>  config HID_PETALYNX
>         tristate "Petalynx Maxter remote control"
>         depends on HID
> diff --git a/drivers/hid/Makefile b/drivers/hid/Makefile
> index 4dbac7f..e2850d8 100644
> --- a/drivers/hid/Makefile
> +++ b/drivers/hid/Makefile
> @@ -71,6 +71,7 @@ obj-$(CONFIG_HID_NTRIG)               += hid-ntrig.o
>  obj-$(CONFIG_HID_ORTEK)                += hid-ortek.o
>  obj-$(CONFIG_HID_PRODIKEYS)    += hid-prodikeys.o
>  obj-$(CONFIG_HID_PANTHERLORD)  += hid-pl.o
> +obj-$(CONFIG_HID_PENMOUNT)     += hid-penmount.o
>  obj-$(CONFIG_HID_PETALYNX)     += hid-petalynx.o
>  obj-$(CONFIG_HID_PICOLCD)      += hid-picolcd.o
>  hid-picolcd-y                  += hid-picolcd_core.o
> diff --git a/drivers/hid/hid-penmount.c b/drivers/hid/hid-penmount.c
> new file mode 100644
> index 0000000..02de4b8
> --- /dev/null
> +++ b/drivers/hid/hid-penmount.c
> @@ -0,0 +1,51 @@
> +/*
> + *  HID driver for PenMount touchscreens
> + *
> + *  Copyright (c) 2014 Christian Gmeiner <christian.gmeiner@xxxxxxxxx>
> + *
> + *  based on hid-penmount copyrighted by
> + *    PenMount Touch Solutions <penmount@xxxxxxxxxxx>
> + */
> +
> +/*
> + * This program is free software; you can redistribute it and/or modify it
> + * under the terms of the GNU General Public License as published by the Free
> + * Software Foundation; either version 2 of the License, or (at your option)
> + * any later version.
> + */
> +
> +#include <linux/module.h>
> +#include <linux/hid.h>
> +#include "hid-ids.h"
> +
> +static int penmount_input_mapping(struct hid_device *hdev,
> +               struct hid_input *hi, struct hid_field *field,
> +               struct hid_usage *usage, unsigned long **bit, int *max)
> +{
> +       int mapped = 0;
> +
> +       if ((usage->hid & HID_USAGE_PAGE) == HID_UP_BUTTON) {
> +               hid_map_usage(hi, usage, bit, max, EV_KEY, BTN_TOUCH);
> +               mapped = 1;
> +       }
> +
> +       return mapped;
> +}
> +
> +static const struct hid_device_id penmount_devices[] = {
> +       { HID_USB_DEVICE(USB_VENDOR_ID_PENMOUNT, USB_DEVICE_ID_PENMOUNT_6000) },
> +       { }
> +};
> +MODULE_DEVICE_TABLE(hid, penmount_devices);
> +
> +static struct hid_driver penmount_driver = {
> +       .name = "hid-penmount",
> +       .id_table = penmount_devices,
> +       .input_mapping = penmount_input_mapping,
> +};
> +
> +module_hid_driver(penmount_driver);
> +
> +MODULE_AUTHOR("Christian Gmeiner <christian.gmeiner@xxxxxxxxx>");
> +MODULE_DESCRIPTION("PenMount HID TouchScreen driver");
> +MODULE_LICENSE("GPL");
> --
> 1.9.3
>

Please ignore...

--
Christian Gmeiner, MSc

https://soundcloud.com/christian-gmeiner
--
To unsubscribe from this list: send the line "unsubscribe linux-input" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html




[Index of Archives]     [Linux Media Devel]     [Linux USB Devel]     [Video for Linux]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]     [Linux Wireless Networking]     [Linux Omap]

  Powered by Linux