Re: [PATCH 1/2] Introduces Plantronics driver to fix errant mouse events.

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

 



On Fri, Oct 31, 2014 at 05:34:42PM -0700, JD Cole wrote:
> Dmitry,
> 
> On Oct 31, 2014, at 4:53 PM, dmitry.torokhov@xxxxxxxxx wrote:
> 
> > Hi JD,
> > 
> > On Fri, Oct 31, 2014 at 07:20:13PM +0000, Cole, JD wrote:
> >> This version of the driver prevents Telephony pages which are not
> >> mapped as Consumer Control applications AND are not on the Consumer Page
> >> from being registered by the hid-input driver.
> >> 
> >> Signed-off-by: JD Cole <jd.cole@xxxxxxxxxxxxxxx>
> >> ---
> >> drivers/hid/Kconfig           |    7 ++++
> >> drivers/hid/Makefile          |    1 +
> > It looks like your MUA or MTA converted all TABs into spaces. Could you
> > please try resending?
> 
> I’ll update the second patch once the formatting is known good.
> 
> 
> This version of the driver prevents Telephony pages which are not
> mapped as Consumer Control applications AND are not on the Consumer Page
> from being registered by the hid-input driver.
> 
> Signed-off-by: JD Cole <jd.cole@xxxxxxxxxxxxxxx>

This looks good to me.

Reviewed-by: Dmitry Torokhov <dmitry.torokhov@xxxxxxxxx>

> ---
>  drivers/hid/Kconfig           |    7 ++++
>  drivers/hid/Makefile          |    1 +
>  drivers/hid/hid-core.c        |    1 +
>  drivers/hid/hid-ids.h         |    2 ++
>  drivers/hid/hid-plantronics.c |   78 +++++++++++++++++++++++++++++++++++++++++
>  include/linux/hid.h           |    3 ++
>  6 files changed, 92 insertions(+)
>  create mode 100644 drivers/hid/hid-plantronics.c
> 
> diff --git a/drivers/hid/Kconfig b/drivers/hid/Kconfig
> index f42df4d..bf1c74e 100644
> --- a/drivers/hid/Kconfig
> +++ b/drivers/hid/Kconfig
> @@ -613,6 +613,13 @@ config HID_PICOLCD_CIR
>  	---help---
>  	  Provide access to PicoLCD's CIR interface via remote control (LIRC).
>  
> +config HID_PLANTRONICS
> +	tristate "Plantronics USB HID Driver"
> +	default !EXPERT
> +	depends on HID
> +	---help---
> +	Provides HID support for Plantronics telephony devices.
> +
>  config HID_PRIMAX
>  	tristate "Primax non-fully HID-compliant devices"
>  	depends on HID
> diff --git a/drivers/hid/Makefile b/drivers/hid/Makefile
> index e2850d8..5e7ac59 100644
> --- a/drivers/hid/Makefile
> +++ b/drivers/hid/Makefile
> @@ -94,6 +94,7 @@ ifdef CONFIG_DEBUG_FS
>  hid-picolcd-y			+= hid-picolcd_debugfs.o
>  endif
>  
> +obj-$(CONFIG_HID_PLANTRONICS)	+= hid-plantronics.o
>  obj-$(CONFIG_HID_PRIMAX)	+= hid-primax.o
>  obj-$(CONFIG_HID_ROCCAT)	+= hid-roccat.o hid-roccat-common.o \
>  	hid-roccat-arvo.o hid-roccat-isku.o hid-roccat-kone.o \
> diff --git a/drivers/hid/hid-core.c b/drivers/hid/hid-core.c
> index 73bd9e2..d50313c 100644
> --- a/drivers/hid/hid-core.c
> +++ b/drivers/hid/hid-core.c
> @@ -1886,6 +1886,7 @@ static const struct hid_device_id hid_have_special_driver[] = {
>  	{ HID_USB_DEVICE(USB_VENDOR_ID_ORTEK, USB_DEVICE_ID_ORTEK_WKB2000) },
>  	{ HID_USB_DEVICE(USB_VENDOR_ID_PENMOUNT, USB_DEVICE_ID_PENMOUNT_6000) },
>  	{ HID_USB_DEVICE(USB_VENDOR_ID_PETALYNX, USB_DEVICE_ID_PETALYNX_MAXTER_REMOTE) },
> +	{ HID_USB_DEVICE(USB_VENDOR_ID_PLANTRONICS, HID_ANY_ID) },
>  	{ HID_USB_DEVICE(USB_VENDOR_ID_PRIMAX, USB_DEVICE_ID_PRIMAX_KEYBOARD) },
>  #if IS_ENABLED(CONFIG_HID_ROCCAT)
>  	{ HID_USB_DEVICE(USB_VENDOR_ID_ROCCAT, USB_DEVICE_ID_ROCCAT_ARVO) },
> diff --git a/drivers/hid/hid-ids.h b/drivers/hid/hid-ids.h
> index e23ab8b..f9f476d 100644
> --- a/drivers/hid/hid-ids.h
> +++ b/drivers/hid/hid-ids.h
> @@ -715,6 +715,8 @@
>  #define USB_DEVICE_ID_ORTEK_PKB1700	0x1700
>  #define USB_DEVICE_ID_ORTEK_WKB2000	0x2000
>  
> +#define USB_VENDOR_ID_PLANTRONICS	0x047f
> +
>  #define USB_VENDOR_ID_PANASONIC		0x04da
>  #define USB_DEVICE_ID_PANABOARD_UBT780	0x1044
>  #define USB_DEVICE_ID_PANABOARD_UBT880	0x104d
> diff --git a/drivers/hid/hid-plantronics.c b/drivers/hid/hid-plantronics.c
> new file mode 100644
> index 0000000..215cdbd
> --- /dev/null
> +++ b/drivers/hid/hid-plantronics.c
> @@ -0,0 +1,78 @@
> +/*
> + *  Plantronics USB HID Driver
> + *
> + *  Copyright (c) 2014 JD Cole <jd.cole@xxxxxxxxxxxxxxx>
> + *  Copyright (c) 2014 Terry Junge <terry.junge@xxxxxxxxxxxxxxx>
> + */
> +
> +/*
> + * 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 "hid-ids.h"
> +
> +#include <linux/hid.h>
> +#include <linux/module.h>
> +
> +static int plantronics_input_mapping(struct hid_device *hdev,
> +				     struct hid_input *hi,
> +				     struct hid_field *field,
> +				     struct hid_usage *usage,
> +				     unsigned long **bit, int *max)
> +{
> +	if (field->application == HID_CP_CONSUMERCONTROL
> +	    && (usage->hid & HID_USAGE_PAGE) == HID_UP_CONSUMER) {
> +		hid_dbg(hdev, "usage: %08x (appl: %08x) - defaulted\n",
> +			 usage->hid, field->application);
> +		return 0;
> +	}
> +
> +	hid_dbg(hdev, "usage: %08x (appl: %08x) - ignored\n",
> +		usage->hid, field->application);
> +
> +	return -1;
> +}
> +
> +static int plantronics_probe(struct hid_device *hdev,
> +			     const struct hid_device_id *id)
> +{
> +	int ret;
> +
> +	ret = hid_parse(hdev);
> +	if (ret) {
> +		hid_err(hdev, "parse failed\n");
> +		goto err;
> +	}
> +
> +	ret = hid_hw_start(hdev, HID_CONNECT_DEFAULT);
> +	if (ret) {
> +		hid_err(hdev, "hw start failed\n");
> +		goto err;
> +	}
> +
> +	return 0;
> + err:
> +	return ret;
> +}
> +
> +static const struct hid_device_id plantronics_devices[] = {
> +	{ HID_USB_DEVICE(USB_VENDOR_ID_PLANTRONICS, HID_ANY_ID) },
> +	{ }
> +};
> +MODULE_DEVICE_TABLE(hid, plantronics_devices);
> +
> +static struct hid_driver plantronics_driver = {
> +	.name = "plantronics",
> +	.id_table = plantronics_devices,
> +	.input_mapping = plantronics_input_mapping,
> +	.probe = plantronics_probe,
> +};
> +module_hid_driver(plantronics_driver);
> +
> +MODULE_AUTHOR("JD Cole <jd.cole@xxxxxxxxxxxxxxx>");
> +MODULE_AUTHOR("Terry Junge <terry.junge@xxxxxxxxxxxxxxx>");
> +MODULE_DESCRIPTION("Plantronics USB HID Driver");
> +MODULE_LICENSE("GPL");
> diff --git a/include/linux/hid.h b/include/linux/hid.h
> index 78ea9bf..a63f2aa 100644
> --- a/include/linux/hid.h
> +++ b/include/linux/hid.h
> @@ -234,6 +234,9 @@ struct hid_item {
>  #define HID_DG_BARRELSWITCH	0x000d0044
>  #define HID_DG_ERASER		0x000d0045
>  #define HID_DG_TABLETPICK	0x000d0046
> +
> +#define HID_CP_CONSUMERCONTROL	0x000c0001
> +
>  #define HID_DG_CONFIDENCE	0x000d0047
>  #define HID_DG_WIDTH		0x000d0048
>  #define HID_DG_HEIGHT		0x000d0049
> -- 
> 1.7.9.5
> 

-- 
Dmitry
--
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