diff mbox

[KARMIC] SRU: HID: ignore all recent SoundGraph iMON devices

Message ID 1265141164-3329-1-git-send-email-surbhi.palande@canonical.com
State Accepted
Delegated to: Stefan Bader
Headers show

Commit Message

Surbhi Palande Feb. 2, 2010, 8:06 p.m. UTC
Justification: 

Impact:
The original lirc_imon driver did not support ranges of device ids, but a few specific ones.
New devices have been added and their device ids are not checked, without this patch.
Hence these devices are not supported.

Fix:
This patch adds a check for a range of device ids to the lirc_imon driver. 
The bug on launchpad requested support for device id 0x43 which is supported in this range,
checked by this patch. 
Its a simple quirk and is available in linus tree upstream. Do consider 
SRUing this for Karmic.


Test Case: 
Was tested with 2.6.32 kernel which has this same patch.


From 31f7fd795d17b264c3c05e4a976f963012c17c68 Mon Sep 17 00:00:00 2001
From: Jarod Wilson <jarod@redhat.com>
Date: Fri, 31 Jul 2009 10:56:36 -0400
Subject: [PATCH] HID: ignore all recent SoundGraph iMON devices

BugLink: http://bugs.launchpad.net/bugs/488443

After some inspection of the Windows iMON driver, several additional
device IDs were added to the lirc_imon driver. At least a few of these
have been seen in the wild, and require manual quirking to keep the
usbhid driver from binding to them. Rather than list out every single
device, ignore the entire device ID range, 0x0034 - 0x0046. Some of
these may not advertise themselves as HID devices, but no harm done to
such devices anyway. Does the right thing in brief testing w/my 0x0045
device.

Signed-off-by: Jarod Wilson <jarod@redhat.com>
Acked-by: Anssi Hannula <anssi.hannula@gmail.com>
Signed-off-by: Jiri Kosina <jkosina@suse.cz>

(cherry picked from upstream commit 31f7fd795d17b264c3c05e4a976f963012c17c68)

Signed-off-by: Surbhi Palande <surbhi.palande@canonical.com>
---
 drivers/hid/hid-core.c |   10 +++++-----
 drivers/hid/hid-ids.h  |    7 ++-----
 2 files changed, 7 insertions(+), 10 deletions(-)

Comments

Tim Gardner Feb. 3, 2010, 1:39 a.m. UTC | #1
Surbhi Palande wrote:
> Justification: 
> 
> Impact:
> The original lirc_imon driver did not support ranges of device ids, but a few specific ones.
> New devices have been added and their device ids are not checked, without this patch.
> Hence these devices are not supported.
> 
> Fix:
> This patch adds a check for a range of device ids to the lirc_imon driver. 
> The bug on launchpad requested support for device id 0x43 which is supported in this range,
> checked by this patch. 
> Its a simple quirk and is available in linus tree upstream. Do consider 
> SRUing this for Karmic.
> 
> 
> Test Case: 
> Was tested with 2.6.32 kernel which has this same patch.
> 
> 
> From 31f7fd795d17b264c3c05e4a976f963012c17c68 Mon Sep 17 00:00:00 2001
> From: Jarod Wilson <jarod@redhat.com>
> Date: Fri, 31 Jul 2009 10:56:36 -0400
> Subject: [PATCH] HID: ignore all recent SoundGraph iMON devices
> 
> BugLink: http://bugs.launchpad.net/bugs/488443
> 
> After some inspection of the Windows iMON driver, several additional
> device IDs were added to the lirc_imon driver. At least a few of these
> have been seen in the wild, and require manual quirking to keep the
> usbhid driver from binding to them. Rather than list out every single
> device, ignore the entire device ID range, 0x0034 - 0x0046. Some of
> these may not advertise themselves as HID devices, but no harm done to
> such devices anyway. Does the right thing in brief testing w/my 0x0045
> device.
> 
> Signed-off-by: Jarod Wilson <jarod@redhat.com>
> Acked-by: Anssi Hannula <anssi.hannula@gmail.com>
> Signed-off-by: Jiri Kosina <jkosina@suse.cz>
> 
> (cherry picked from upstream commit 31f7fd795d17b264c3c05e4a976f963012c17c68)
> 
> Signed-off-by: Surbhi Palande <surbhi.palande@canonical.com>
> ---
>  drivers/hid/hid-core.c |   10 +++++-----
>  drivers/hid/hid-ids.h  |    7 ++-----
>  2 files changed, 7 insertions(+), 10 deletions(-)
> 
> diff --git a/drivers/hid/hid-core.c b/drivers/hid/hid-core.c
> index 6164ed3..afb6a3b 100644
> --- a/drivers/hid/hid-core.c
> +++ b/drivers/hid/hid-core.c
> @@ -1627,11 +1627,6 @@ static const struct hid_device_id hid_ignore_list[] = {
>  	{ HID_USB_DEVICE(USB_VENDOR_ID_PANJIT, 0x0003) },
>  	{ HID_USB_DEVICE(USB_VENDOR_ID_PANJIT, 0x0004) },
>  	{ HID_USB_DEVICE(USB_VENDOR_ID_POWERCOM, USB_DEVICE_ID_POWERCOM_UPS) },
> -	{ HID_USB_DEVICE(USB_VENDOR_ID_SOUNDGRAPH, USB_DEVICE_ID_SOUNDGRAPH_IMON_LCD) },
> -	{ HID_USB_DEVICE(USB_VENDOR_ID_SOUNDGRAPH, USB_DEVICE_ID_SOUNDGRAPH_IMON_LCD2) },
> -	{ HID_USB_DEVICE(USB_VENDOR_ID_SOUNDGRAPH, USB_DEVICE_ID_SOUNDGRAPH_IMON_LCD3) },
> -	{ HID_USB_DEVICE(USB_VENDOR_ID_SOUNDGRAPH, USB_DEVICE_ID_SOUNDGRAPH_IMON_LCD4) },
> -	{ HID_USB_DEVICE(USB_VENDOR_ID_SOUNDGRAPH, USB_DEVICE_ID_SOUNDGRAPH_IMON_LCD5) },
>  	{ HID_USB_DEVICE(USB_VENDOR_ID_TENX, USB_DEVICE_ID_TENX_IBUDDY1) },
>  	{ HID_USB_DEVICE(USB_VENDOR_ID_TENX, USB_DEVICE_ID_TENX_IBUDDY2) },
>  	{ HID_USB_DEVICE(USB_VENDOR_ID_VERNIER, USB_DEVICE_ID_VERNIER_LABPRO) },
> @@ -1698,6 +1693,11 @@ static bool hid_ignore(struct hid_device *hdev)
>  				hdev->product <= USB_DEVICE_ID_LOGITECH_HARMONY_LAST)
>  			return true;
>  		break;
> +	case USB_VENDOR_ID_SOUNDGRAPH:
> +		if (hdev->product >= USB_DEVICE_ID_SOUNDGRAPH_IMON_FIRST &&
> +		    hdev->product <= USB_DEVICE_ID_SOUNDGRAPH_IMON_LAST)
> +			return true;
> +		break;
>  	}
>  
>  	if (hdev->type == HID_TYPE_USBMOUSE &&
> diff --git a/drivers/hid/hid-ids.h b/drivers/hid/hid-ids.h
> index 3058e47..35752fc 100644
> --- a/drivers/hid/hid-ids.h
> +++ b/drivers/hid/hid-ids.h
> @@ -377,11 +377,8 @@
>  #define USB_DEVICE_ID_SONY_PS3_CONTROLLER	0x0268
>  
>  #define USB_VENDOR_ID_SOUNDGRAPH	0x15c2
> -#define USB_DEVICE_ID_SOUNDGRAPH_IMON_LCD	0x0038
> -#define USB_DEVICE_ID_SOUNDGRAPH_IMON_LCD2	0x0036
> -#define USB_DEVICE_ID_SOUNDGRAPH_IMON_LCD3	0x0034
> -#define USB_DEVICE_ID_SOUNDGRAPH_IMON_LCD4	0x0044
> -#define USB_DEVICE_ID_SOUNDGRAPH_IMON_LCD5	0x0045
> +#define USB_DEVICE_ID_SOUNDGRAPH_IMON_FIRST	0x0034
> +#define USB_DEVICE_ID_SOUNDGRAPH_IMON_LAST	0x0046
>  
>  #define USB_VENDOR_ID_SUN		0x0430
>  #define USB_DEVICE_ID_RARITAN_KVM_DONGLE	0xcdab

Acked-by: Tim Gardner <tim.gardner@canonical.com>
Colin Ian King Feb. 3, 2010, 10:04 a.m. UTC | #2
On Tue, 2010-02-02 at 12:06 -0800, Surbhi Palande wrote:
> Justification: 
> 
> Impact:
> The original lirc_imon driver did not support ranges of device ids, but a few specific ones.
> New devices have been added and their device ids are not checked, without this patch.
> Hence these devices are not supported.
> 
> Fix:
> This patch adds a check for a range of device ids to the lirc_imon driver. 
> The bug on launchpad requested support for device id 0x43 which is supported in this range,
> checked by this patch. 
> Its a simple quirk and is available in linus tree upstream. Do consider 
> SRUing this for Karmic.
> 
> 
> Test Case: 
> Was tested with 2.6.32 kernel which has this same patch.
> 
> 
> From 31f7fd795d17b264c3c05e4a976f963012c17c68 Mon Sep 17 00:00:00 2001
> From: Jarod Wilson <jarod@redhat.com>
> Date: Fri, 31 Jul 2009 10:56:36 -0400
> Subject: [PATCH] HID: ignore all recent SoundGraph iMON devices
> 
> BugLink: http://bugs.launchpad.net/bugs/488443
> 
> After some inspection of the Windows iMON driver, several additional
> device IDs were added to the lirc_imon driver. At least a few of these
> have been seen in the wild, and require manual quirking to keep the
> usbhid driver from binding to them. Rather than list out every single
> device, ignore the entire device ID range, 0x0034 - 0x0046. Some of
> these may not advertise themselves as HID devices, but no harm done to
> such devices anyway. Does the right thing in brief testing w/my 0x0045
> device.
> 
> Signed-off-by: Jarod Wilson <jarod@redhat.com>
> Acked-by: Anssi Hannula <anssi.hannula@gmail.com>
> Signed-off-by: Jiri Kosina <jkosina@suse.cz>
> 
> (cherry picked from upstream commit 31f7fd795d17b264c3c05e4a976f963012c17c68)
> 
> Signed-off-by: Surbhi Palande <surbhi.palande@canonical.com>
> ---
>  drivers/hid/hid-core.c |   10 +++++-----
>  drivers/hid/hid-ids.h  |    7 ++-----
>  2 files changed, 7 insertions(+), 10 deletions(-)
> 
> diff --git a/drivers/hid/hid-core.c b/drivers/hid/hid-core.c
> index 6164ed3..afb6a3b 100644
> --- a/drivers/hid/hid-core.c
> +++ b/drivers/hid/hid-core.c
> @@ -1627,11 +1627,6 @@ static const struct hid_device_id hid_ignore_list[] = {
>  	{ HID_USB_DEVICE(USB_VENDOR_ID_PANJIT, 0x0003) },
>  	{ HID_USB_DEVICE(USB_VENDOR_ID_PANJIT, 0x0004) },
>  	{ HID_USB_DEVICE(USB_VENDOR_ID_POWERCOM, USB_DEVICE_ID_POWERCOM_UPS) },
> -	{ HID_USB_DEVICE(USB_VENDOR_ID_SOUNDGRAPH, USB_DEVICE_ID_SOUNDGRAPH_IMON_LCD) },
> -	{ HID_USB_DEVICE(USB_VENDOR_ID_SOUNDGRAPH, USB_DEVICE_ID_SOUNDGRAPH_IMON_LCD2) },
> -	{ HID_USB_DEVICE(USB_VENDOR_ID_SOUNDGRAPH, USB_DEVICE_ID_SOUNDGRAPH_IMON_LCD3) },
> -	{ HID_USB_DEVICE(USB_VENDOR_ID_SOUNDGRAPH, USB_DEVICE_ID_SOUNDGRAPH_IMON_LCD4) },
> -	{ HID_USB_DEVICE(USB_VENDOR_ID_SOUNDGRAPH, USB_DEVICE_ID_SOUNDGRAPH_IMON_LCD5) },
>  	{ HID_USB_DEVICE(USB_VENDOR_ID_TENX, USB_DEVICE_ID_TENX_IBUDDY1) },
>  	{ HID_USB_DEVICE(USB_VENDOR_ID_TENX, USB_DEVICE_ID_TENX_IBUDDY2) },
>  	{ HID_USB_DEVICE(USB_VENDOR_ID_VERNIER, USB_DEVICE_ID_VERNIER_LABPRO) },
> @@ -1698,6 +1693,11 @@ static bool hid_ignore(struct hid_device *hdev)
>  				hdev->product <= USB_DEVICE_ID_LOGITECH_HARMONY_LAST)
>  			return true;
>  		break;
> +	case USB_VENDOR_ID_SOUNDGRAPH:
> +		if (hdev->product >= USB_DEVICE_ID_SOUNDGRAPH_IMON_FIRST &&
> +		    hdev->product <= USB_DEVICE_ID_SOUNDGRAPH_IMON_LAST)
> +			return true;
> +		break;
>  	}
>  
>  	if (hdev->type == HID_TYPE_USBMOUSE &&
> diff --git a/drivers/hid/hid-ids.h b/drivers/hid/hid-ids.h
> index 3058e47..35752fc 100644
> --- a/drivers/hid/hid-ids.h
> +++ b/drivers/hid/hid-ids.h
> @@ -377,11 +377,8 @@
>  #define USB_DEVICE_ID_SONY_PS3_CONTROLLER	0x0268
>  
>  #define USB_VENDOR_ID_SOUNDGRAPH	0x15c2
> -#define USB_DEVICE_ID_SOUNDGRAPH_IMON_LCD	0x0038
> -#define USB_DEVICE_ID_SOUNDGRAPH_IMON_LCD2	0x0036
> -#define USB_DEVICE_ID_SOUNDGRAPH_IMON_LCD3	0x0034
> -#define USB_DEVICE_ID_SOUNDGRAPH_IMON_LCD4	0x0044
> -#define USB_DEVICE_ID_SOUNDGRAPH_IMON_LCD5	0x0045
> +#define USB_DEVICE_ID_SOUNDGRAPH_IMON_FIRST	0x0034
> +#define USB_DEVICE_ID_SOUNDGRAPH_IMON_LAST	0x0046
>  
>  #define USB_VENDOR_ID_SUN		0x0430
>  #define USB_DEVICE_ID_RARITAN_KVM_DONGLE	0xcdab
> -- 
> 1.6.3.3
> 
> 
Seems like a better generic solution that will catch more
devices than the original approach.

Acked-by: Colin King <colin.king@canonical.com>
Stefan Bader Feb. 9, 2010, 8:49 p.m. UTC | #3
Applied to Karmic
diff mbox

Patch

diff --git a/drivers/hid/hid-core.c b/drivers/hid/hid-core.c
index 6164ed3..afb6a3b 100644
--- a/drivers/hid/hid-core.c
+++ b/drivers/hid/hid-core.c
@@ -1627,11 +1627,6 @@  static const struct hid_device_id hid_ignore_list[] = {
 	{ HID_USB_DEVICE(USB_VENDOR_ID_PANJIT, 0x0003) },
 	{ HID_USB_DEVICE(USB_VENDOR_ID_PANJIT, 0x0004) },
 	{ HID_USB_DEVICE(USB_VENDOR_ID_POWERCOM, USB_DEVICE_ID_POWERCOM_UPS) },
-	{ HID_USB_DEVICE(USB_VENDOR_ID_SOUNDGRAPH, USB_DEVICE_ID_SOUNDGRAPH_IMON_LCD) },
-	{ HID_USB_DEVICE(USB_VENDOR_ID_SOUNDGRAPH, USB_DEVICE_ID_SOUNDGRAPH_IMON_LCD2) },
-	{ HID_USB_DEVICE(USB_VENDOR_ID_SOUNDGRAPH, USB_DEVICE_ID_SOUNDGRAPH_IMON_LCD3) },
-	{ HID_USB_DEVICE(USB_VENDOR_ID_SOUNDGRAPH, USB_DEVICE_ID_SOUNDGRAPH_IMON_LCD4) },
-	{ HID_USB_DEVICE(USB_VENDOR_ID_SOUNDGRAPH, USB_DEVICE_ID_SOUNDGRAPH_IMON_LCD5) },
 	{ HID_USB_DEVICE(USB_VENDOR_ID_TENX, USB_DEVICE_ID_TENX_IBUDDY1) },
 	{ HID_USB_DEVICE(USB_VENDOR_ID_TENX, USB_DEVICE_ID_TENX_IBUDDY2) },
 	{ HID_USB_DEVICE(USB_VENDOR_ID_VERNIER, USB_DEVICE_ID_VERNIER_LABPRO) },
@@ -1698,6 +1693,11 @@  static bool hid_ignore(struct hid_device *hdev)
 				hdev->product <= USB_DEVICE_ID_LOGITECH_HARMONY_LAST)
 			return true;
 		break;
+	case USB_VENDOR_ID_SOUNDGRAPH:
+		if (hdev->product >= USB_DEVICE_ID_SOUNDGRAPH_IMON_FIRST &&
+		    hdev->product <= USB_DEVICE_ID_SOUNDGRAPH_IMON_LAST)
+			return true;
+		break;
 	}
 
 	if (hdev->type == HID_TYPE_USBMOUSE &&
diff --git a/drivers/hid/hid-ids.h b/drivers/hid/hid-ids.h
index 3058e47..35752fc 100644
--- a/drivers/hid/hid-ids.h
+++ b/drivers/hid/hid-ids.h
@@ -377,11 +377,8 @@ 
 #define USB_DEVICE_ID_SONY_PS3_CONTROLLER	0x0268
 
 #define USB_VENDOR_ID_SOUNDGRAPH	0x15c2
-#define USB_DEVICE_ID_SOUNDGRAPH_IMON_LCD	0x0038
-#define USB_DEVICE_ID_SOUNDGRAPH_IMON_LCD2	0x0036
-#define USB_DEVICE_ID_SOUNDGRAPH_IMON_LCD3	0x0034
-#define USB_DEVICE_ID_SOUNDGRAPH_IMON_LCD4	0x0044
-#define USB_DEVICE_ID_SOUNDGRAPH_IMON_LCD5	0x0045
+#define USB_DEVICE_ID_SOUNDGRAPH_IMON_FIRST	0x0034
+#define USB_DEVICE_ID_SOUNDGRAPH_IMON_LAST	0x0046
 
 #define USB_VENDOR_ID_SUN		0x0430
 #define USB_DEVICE_ID_RARITAN_KVM_DONGLE	0xcdab