All of lore.kernel.org
 help / color / mirror / Atom feed
From: Andrew Morton <akpm@linux-foundation.org>
To: Tomoki Sekiyama <tomoki.sekiyama@gmail.com>
Cc: "Rafael J. Wysocki" <rjw@sisk.pl>,
	Maciej Rutecki <maciej.rutecki@gmail.com>,
	Greg KH <gregkh@suse.de>,
	linux-kernel@vger.kernel.org, linux-usb@vger.kernel.org
Subject: Re: [PATCH][Bug 26922]USB: yurex: recognize GeneralKeys wireless presenter as generic HID (Re: New: 2.6.37 breaks USB wireless presenter HID device)
Date: Thu, 20 Jan 2011 14:57:28 -0800	[thread overview]
Message-ID: <20110120145728.453ccacd.akpm@linux-foundation.org> (raw)
In-Reply-To: <4D38B721.9090906@gmail.com>

On Fri, 21 Jan 2011 07:28:49 +0900
Tomoki Sekiyama <tomoki.sekiyama@gmail.com> wrote:

> --- a/drivers/hid/hid-core.c
> +++ b/drivers/hid/hid-core.c
> @@ -1672,7 +1672,6 @@ static const struct hid_device_id 
> hid_ignore_list[] = {
>       { HID_USB_DEVICE(USB_VENDOR_ID_GTCO, USB_DEVICE_ID_GTCO_1006) },
>       { HID_USB_DEVICE(USB_VENDOR_ID_GTCO, USB_DEVICE_ID_GTCO_1007) },
>       { HID_USB_DEVICE(USB_VENDOR_ID_IMATION, USB_DEVICE_ID_DISC_STAKKA) },

You hit the jackpot.  The patch was wordwrapped, space-stuffed and
tab-replaced!

Here's my attempt to reconstruct it:

From: Tomoki Sekiyama <tomoki.sekiyama@gmail.com>

Unfortunately, the device seems to have the same Vendor ID and Product ID
as YUREX leg-shakes sensors, and the commit 6bc235a2e2 ("USB: add driver
for Meywa-Denki & Kayac YUREX") added the ID to hid_ignore_list.

I believe that we can distinguish YUREX and the Wireless Presenter by
device type.  The patch below makes the driver ignore only YUREX
(bInterfaceProtocol==0), and recognize Wireless Presenter
(bInterfaceProtocol is keyboard or mouse) as generic HID.  (I don't have
the Wireless Presenter, so not yet ested.)

** YUREX lsusb information:
Bus 002 Device 007: ID 0c45:1010 Microdia
Device Descriptor:
   bLength                18
   bDescriptorType         1
   bcdUSB               1.10
   bDeviceClass            0 (Defined at Interface level)
   bDeviceSubClass         0
   bDeviceProtocol         0
   bMaxPacketSize0         8
   idVendor           0x0c45 Microdia
   idProduct          0x1010
   bcdDevice            0.03
   iManufacturer           1 JESS
   iProduct                2 YUREX
   iSerial                 3 10000269
   bNumConfigurations      1
   Configuration Descriptor:
     bLength                 9
     bDescriptorType         2
     wTotalLength           34
     bNumInterfaces          1
     bConfigurationValue     1
     iConfiguration          0
     bmAttributes         0xa0
       (Bus Powered)
       Remote Wakeup
     MaxPower              100mA
     Interface Descriptor:
       bLength                 9
       bDescriptorType         4
       bInterfaceNumber        0
       bAlternateSetting       0
       bNumEndpoints           1
       bInterfaceClass         3 Human Interface Device
       bInterfaceSubClass      1 Boot Interface Subclass
       bInterfaceProtocol      0 None
       iInterface              0
         HID Device Descriptor:
           bLength                 9
           bDescriptorType        33
           bcdHID               1.10
           bCountryCode            0 Not supported
           bNumDescriptors         1
           bDescriptorType        34 Report
           wDescriptorLength      31
          Report Descriptors:
            ** UNAVAILABLE **
       Endpoint Descriptor:
         bLength                 7
         bDescriptorType         5
         bEndpointAddress     0x81  EP 1 IN
         bmAttributes            3
           Transfer Type            Interrupt
           Synch Type               None
           Usage Type               Data
         wMaxPacketSize     0x0008  1x 8 bytes
         bInterval              10
Device Status:     0x0002
   (Bus Powered)
   Remote Wakeup Enabled

Addresses https://bugzilla.kernel.org/show_bug.cgi?id=26922

Signed-off-by: Tomoki Sekiyama <tomoki.sekiyama@gmail.com>
Cc: Greg KH <gregkh@suse.de>
Cc: "Rafael J. Wysocki" <rjw@sisk.pl>
Cc: Maciej Rutecki <maciej.rutecki@gmail.com>
Reported-by: Thomas B_chler <thomas@archlinux.org>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
---

 drivers/hid/hid-core.c        |    6 +++++-
 drivers/hid/usbhid/hid-core.c |    2 ++
 include/linux/hid.h           |    3 ++-
 3 files changed, 9 insertions(+), 2 deletions(-)

diff -puN drivers/hid/hid-core.c~usb-yurex-recognize-generalkeys-wireless-presenter-as-generic-hid-re-new-2637-breaks-usb-wireless-presenter-hid-device drivers/hid/hid-core.c
--- a/drivers/hid/hid-core.c~usb-yurex-recognize-generalkeys-wireless-presenter-as-generic-hid-re-new-2637-breaks-usb-wireless-presenter-hid-device
+++ a/drivers/hid/hid-core.c
@@ -1710,7 +1710,6 @@ static const struct hid_device_id hid_ig
 	{ HID_USB_DEVICE(USB_VENDOR_ID_GTCO, USB_DEVICE_ID_GTCO_1006) },
 	{ HID_USB_DEVICE(USB_VENDOR_ID_GTCO, USB_DEVICE_ID_GTCO_1007) },
 	{ HID_USB_DEVICE(USB_VENDOR_ID_IMATION, USB_DEVICE_ID_DISC_STAKKA) },
-	{ HID_USB_DEVICE(USB_VENDOR_ID_JESS, USB_DEVICE_ID_JESS_YUREX) },
 	{ HID_USB_DEVICE(USB_VENDOR_ID_KBGEAR, USB_DEVICE_ID_KBGEAR_JAMSTUDIO) },
 	{ HID_USB_DEVICE(USB_VENDOR_ID_KWORLD, USB_DEVICE_ID_KWORLD_RADIO_FM700) },
 	{ HID_USB_DEVICE(USB_VENDOR_ID_KYE, USB_DEVICE_ID_KYE_GPEN_560) },
@@ -1830,6 +1829,11 @@ static bool hid_ignore(struct hid_device
 		    hdev->product <= USB_DEVICE_ID_HANWANG_TABLET_LAST)
 			return true;
 		break;
+	case USB_VENDOR_ID_JESS:
+		if (hdev->product == USB_DEVICE_ID_JESS_YUREX &&
+				hdev->type == HID_TYPE_USBNONE)
+			return true;
+	break;
 	}
 
 	if (hdev->type == HID_TYPE_USBMOUSE &&
diff -puN drivers/hid/usbhid/hid-core.c~usb-yurex-recognize-generalkeys-wireless-presenter-as-generic-hid-re-new-2637-breaks-usb-wireless-presenter-hid-device drivers/hid/usbhid/hid-core.c
--- a/drivers/hid/usbhid/hid-core.c~usb-yurex-recognize-generalkeys-wireless-presenter-as-generic-hid-re-new-2637-breaks-usb-wireless-presenter-hid-device
+++ a/drivers/hid/usbhid/hid-core.c
@@ -1156,6 +1156,8 @@ static int usbhid_probe(struct usb_inter
 	if (intf->cur_altsetting->desc.bInterfaceProtocol ==
 			USB_INTERFACE_PROTOCOL_MOUSE)
 		hid->type = HID_TYPE_USBMOUSE;
+	else if (intf->cur_altsetting->desc.bInterfaceProtocol == 0)
+		hid->type = HID_TYPE_USBNONE;
 
 	if (dev->manufacturer)
 		strlcpy(hid->name, dev->manufacturer, sizeof(hid->name));
diff -puN include/linux/hid.h~usb-yurex-recognize-generalkeys-wireless-presenter-as-generic-hid-re-new-2637-breaks-usb-wireless-presenter-hid-device include/linux/hid.h
--- a/include/linux/hid.h~usb-yurex-recognize-generalkeys-wireless-presenter-as-generic-hid-re-new-2637-breaks-usb-wireless-presenter-hid-device
+++ a/include/linux/hid.h
@@ -453,7 +453,8 @@ struct hid_input {
 
 enum hid_type {
 	HID_TYPE_OTHER = 0,
-	HID_TYPE_USBMOUSE
+	HID_TYPE_USBMOUSE,
+	HID_TYPE_USBNONE = -1,
 };
 
 struct hid_driver;
_


  reply	other threads:[~2011-01-20 22:57 UTC|newest]

Thread overview: 3+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
     [not found] <bug-26922-10286@https.bugzilla.kernel.org/>
     [not found] ` <20110119132659.3e815450.akpm@linux-foundation.org>
2011-01-20 22:28   ` [PATCH][Bug 26922]USB: yurex: recognize GeneralKeys wireless presenter as generic HID (Re: New: 2.6.37 breaks USB wireless presenter HID device) Tomoki Sekiyama
2011-01-20 22:57     ` Andrew Morton [this message]
2011-03-03 16:48       ` Tomoki Sekiyama

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20110120145728.453ccacd.akpm@linux-foundation.org \
    --to=akpm@linux-foundation.org \
    --cc=gregkh@suse.de \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-usb@vger.kernel.org \
    --cc=maciej.rutecki@gmail.com \
    --cc=rjw@sisk.pl \
    --cc=tomoki.sekiyama@gmail.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.