Message ID | 1265141164-3329-1-git-send-email-surbhi.palande@canonical.com |
---|---|
State | Accepted |
Delegated to: | Stefan Bader |
Headers | show |
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>
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>
Applied to Karmic
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