lists.openwall.net   lists  /  announce  owl-users  owl-dev  john-users  john-dev  passwdqc-users  yescrypt  popa3d-users  /  oss-security  kernel-hardening  musl  sabotage  tlsify  passwords  /  crypt-dev  xvendor  /  Bugtraq  Full-Disclosure  linux-kernel  linux-netdev  linux-ext4  linux-hardening  linux-cve-announce  PHC 
Open Source and information security mailing list archives
 
Hash Suite for Android: free password hash cracker in your pocket
[<prev] [next>] [<thread-prev] [day] [month] [year] [list]
Message-ID: <20061028191440.GA17787@procyon.home>
Date:	Sat, 28 Oct 2006 23:14:40 +0400
From:	Sergey Vlasov <vsu@...linux.ru>
To:	Soeren Sonnenburg <kernel@....de>
Cc:	Oliver Neukum <oliver@...kum.org>,
	linux-usb-devel@...ts.sourceforge.net,
	Linux Kernel <linux-kernel@...r.kernel.org>
Subject: Re: [linux-usb-devel] usb initialization order (usbhid vs. appletouch)

(sorry for the duplicate - the message was considered as spam by some
servers due to local misconfiguration on my end)

On Sat, Oct 28, 2006 at 06:56:16PM +0200, Soeren Sonnenburg wrote:
[...]
> OK, so I tried adding all of them to the HID_QUIRK_IGNORE LIST, i.e.
> 
> 
> #define USB_DEVICE_ID_APPLE_GEYSER_ANSI 0x0214
> #define USB_DEVICE_ID_APPLE_GEYSER_ISO  0x0215
> #define USB_DEVICE_ID_APPLE_GEYSER_JIS  0x0216
> #define USB_DEVICE_ID_APPLE_GEYSER3_ANSI    0x0217
> #define USB_DEVICE_ID_APPLE_GEYSER3_ISO     0x0218
> #define USB_DEVICE_ID_APPLE_GEYSER3_JIS     0x0219
> 
> 
>     { USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_GEYSER_ANSI, HID_QUIRK_IGNORE },
>     { USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_GEYSER_ISO, HID_QUIRK_IGNORE },
>     { USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_GEYSER_JIS, HID_QUIRK_IGNORE },
>     { USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_GEYSER3_ANSI, HID_QUIRK_IGNORE },
>     { USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_GEYSER3_ISO, HID_QUIRK_IGNORE },
>     { USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_GEYSER3_JIS, HID_QUIRK_IGNORE },
>     { USB_VENDOR_ID_APPLE, 0x020E, HID_QUIRK_IGNORE },
>     { USB_VENDOR_ID_APPLE, 0x020F, HID_QUIRK_IGNORE },
>     { USB_VENDOR_ID_APPLE, 0x030A, HID_QUIRK_IGNORE },
>     { USB_VENDOR_ID_APPLE, 0x030B, HID_QUIRK_IGNORE },
> 
> 
> however this did (and cannot) work, as the product id stands for both
> keyboard AND mouse. 

You mean that the device has multiple HID interfaces, but only one of
them should be ignored by usbhid and passed to appletouch?  Then you
probably need to add a new quirk flag to hiddev (patch completely
untested):

---

From: Sergey Vlasov <vsu@...linux.ru>
Subject: usbhid: Add HID_QUIRK_IGNORE_MOUSE flag

Some HID devices by Apple have both keyboard and mouse interfaces; the
keyboard interface is handled by usbhid, but the mouse (really
touchpad) interface must be handled by the separate 'appletouch'
driver.  Using HID_QUIRK_IGNORE will make hiddev ignore both
interfaces, therefore a new quirk flag to ignore only the mouse
interface is required.

Signed-off-by: Sergey Vlasov <vsu@...linux.ru>

diff --git a/drivers/usb/input/hid-core.c b/drivers/usb/input/hid-core.c
index 45f44fe..feb41e7 100644
--- a/drivers/usb/input/hid-core.c
+++ b/drivers/usb/input/hid-core.c
@@ -1872,6 +1872,9 @@ static struct hid_device *usb_hid_config
 
 	if (quirks & HID_QUIRK_IGNORE)
 		return NULL;
+	if ((quirks & HID_QUIRK_IGNORE_MOUSE) &&
+	    (interface->desc.bInterfaceProtocol == USB_INTERFACE_PROTOCOL_MOUSE))
+		return NULL;
 
 	if (usb_get_extra_descriptor(interface, HID_DT_HID, &hdesc) &&
 	    (!interface->desc.bNumEndpoints ||
diff --git a/drivers/usb/input/hid.h b/drivers/usb/input/hid.h
index 9b50eff..abd7b52 100644
--- a/drivers/usb/input/hid.h
+++ b/drivers/usb/input/hid.h
@@ -260,6 +260,7 @@ struct hid_item {
 #define HID_QUIRK_POWERBOOK_HAS_FN		0x00001000
 #define HID_QUIRK_POWERBOOK_FN_ON		0x00002000
 #define HID_QUIRK_INVERT_HWHEEL			0x00004000
+#define HID_QUIRK_IGNORE_MOUSE			0x00008000
 
 /*
  * This is the global environment of the parser. This information is

Download attachment "signature.asc" of type "application/pgp-signature" (190 bytes)

Powered by blists - more mailing lists

Powered by Openwall GNU/*/Linux Powered by OpenVZ