Skip to contentSkip to conversation

usb initialization order (usbhid vs. appletouch)

PATCH In review Soeren Sonnenburg 8 participants 27 messages Oct 26, 2006 – Jan 30, 2007 1 message not in the archive

Subsystems (2)
lore
Share & tools
lore
#0 lore raw

Dear all,

I've noticed that the appletouch driver needs to be loaded *before* the usbhid driver to function. This is currently impossible when built into the kernel (and not modules). So I wonder how one can change the ordering of when the usb drivers are loaded.

Suggestions ?

Soeren

Signature · 2 lines
For the one fact about the future of which we can be certain is that it
will be utterly fantastic. -- Arthur C. Clarke, 1962
#1 lore raw

Am Donnerstag, 26. Oktober 2006 11:53 schrieb Soeren Sonnenburg:

Quoted 8 lines

Dear all,

I've noticed that the appletouch driver needs to be loaded *before* the usbhid driver to function. This is currently impossible when built into the kernel (and not modules). So I wonder how one can change the ordering of when the usb drivers are loaded.

Suggestions ?

Add a quirk to HID. Messing around with probing orders is not a sure thing.

Regards
Oliver

#2 lore raw
Quoted 8 lines · Oliver Neukum

Am Donnerstag, 26. Oktober 2006 11:53 schrieb Soeren Sonnenburg:

Quoted 7 lines

Dear all,

I've noticed that the appletouch driver needs to be loaded *before* the usbhid driver to function. This is currently impossible when built into the kernel (and not modules). So I wonder how one can change the ordering of when the usb drivers are loaded.

Quoted 4 lines
Quoted 1 line

Suggestions ?

Add a quirk to HID. Messing around with probing orders is not a sure thing.

what do you have in mind ? if appletouch is turned on ignore IDs that appear in appletouch ?

Soeren

Signature · 2 lines
Sometimes, there's a moment as you're waking, when you become aware of
the real world around you, but you're still dreaming.
#3 lore raw

Am Donnerstag, 26. Oktober 2006 13:49 schrieb Soeren Sonnenburg:

Quoted 9 lines · Oliver Neukum
Quoted 8 lines

Am Donnerstag, 26. Oktober 2006 11:53 schrieb Soeren Sonnenburg:

Quoted 7 lines

Dear all,

I've noticed that the appletouch driver needs to be loaded *before* the usbhid driver to function. This is currently impossible when built into the kernel (and not modules). So I wonder how one can change the ordering of when the usb drivers are loaded.

Quoted 7 lines
Quoted 4 lines
Quoted 1 line

Suggestions ?

Add a quirk to HID. Messing around with probing orders is not a sure thing.

what do you have in mind ? if appletouch is turned on ignore IDs that appear in appletouch ?

Yes, or even make it unconditional. There is a specific driver for a device. It exists for a reason.

Regards
Oliver

#4 lore raw
Quoted 12 lines · Oliver Neukum

Am Donnerstag, 26. Oktober 2006 13:49 schrieb Soeren Sonnenburg:

Quoted 11 lines · Oliver Neukum
Quoted 10 lines

Am Donnerstag, 26. Oktober 2006 11:53 schrieb Soeren Sonnenburg:

Quoted 8 lines

Dear all,

I've noticed that the appletouch driver needs to be loaded *before* the usbhid driver to function. This is currently impossible when built into the kernel (and not modules). So I wonder how one can change the ordering of when the usb drivers are loaded.

Suggestions ?

Quoted 8 lines
Quoted 5 lines
Quoted 2 lines

Add a quirk to HID. Messing around with probing orders is not a sure thing.

what do you have in mind ? if appletouch is turned on ignore IDs that appear in appletouch ?

Yes, or even make it unconditional. There is a specific driver for a device. It exists for a reason.

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.

It will however work for the internal infrared receiver (which is also affected).

#define USB_DEVICE_ID_APPLE_IR 0x8240

{ USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_IR, HID_QUIRK_IGNORE },

Could someone please add this to the quirk list in hid-core.c in git ? Please note that one can even do this from userspace via

        libhid-detach-device 05ac:8240
        modprobe appleir

Anyways, back to the above problem. Can one somehow tell the hid-core to load the appletouch driver when it detects any of these devices and then initialize on top of that ? The appletouch driver is completely ignored (doesn't even enter the atp_prope function as usb_register registers with device/product tuples that are already taken by hid....

Any ideas ?

Soeren

Signature · 2 lines
Sometimes, there's a moment as you're waking, when you become aware of
the real world around you, but you're still dreaming.
#5 lore raw

Am Samstag, 28. Oktober 2006 18:56 schrieb Soeren Sonnenburg:

Quoted 7 lines

Anyways, back to the above problem. Can one somehow tell the hid-core to load the appletouch driver when it detects any of these devices and then initialize on top of that ? The appletouch driver is completely ignored (doesn't even enter the atp_prope function as usb_register registers with device/product tuples that are already taken by hid....

Any ideas ?

Try udev to disconnect the hid driver, then load appletouch.

HTH
Oliver

#6 lore raw
Quoted 10 lines · Oliver Neukum

Am Samstag, 28. Oktober 2006 18:56 schrieb Soeren Sonnenburg:

Quoted 7 lines

Anyways, back to the above problem. Can one somehow tell the hid-core to load the appletouch driver when it detects any of these devices and then initialize on top of that ? The appletouch driver is completely ignored (doesn't even enter the atp_prope function as usb_register registers with device/product tuples that are already taken by hid....

Any ideas ?

Try udev to disconnect the hid driver, then load appletouch.

I don't understand... I can disconnect the driver if I do on cmdline
libhid-detach-device 05ac:<id> ; modprobe appletouch .
However then my keyboard is gone.

Of course there is the workaround of building both the appletouch and hid driver as modules and then loading them in this order ... but I was hoping to have them fix in the kernel. If this is however not doable we should mark it in Kconfig and I will have to live with it.

Soeren

Signature · 2 lines
Sometimes, there's a moment as you're waking, when you become aware of
the real world around you, but you're still dreaming.
#7 lore raw
In reply to Soeren Sonnenburg

On Sat, Oct 28, 2006 at 06:56:16PM +0200, Soeren Sonnenburg wrote:
[...]

Quoted 23 lines

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 },

Quoted 2 lines

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 <[email protected]>
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.

drivers/usb/input/hid-core.c +3 -0
index 45f44fe..feb41e7 100644
@@ -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 ||
drivers/usb/input/hid.h +1 -0
index 9b50eff..abd7b52 100644
@@ -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
#8 lore raw
In reply to Soeren Sonnenburg
Quoted 10 lines · Soeren Sonnenburg
Quoted 10 lines
Quoted 10 lines
Quoted 9 lines
Quoted 6 lines

I've noticed that the appletouch driver needs to be loaded *before* the usbhid driver to function. This is currently impossible when built into the kernel (and not modules). So I wonder how one can change the ordering of when the usb drivers are loaded.

Suggestions ?

Add a quirk to HID. Messing around with probing orders is not a sure thing.

Quoted 7 lines
Quoted 5 lines
Quoted 2 lines

what do you have in mind ? if appletouch is turned on ignore IDs that appear in appletouch ?

Yes, or even make it unconditional. There is a specific driver for a device. It exists for a reason.

OK, so I tried adding all of them to the HID_QUIRK_IGNORE LIST, i.e.

This, of course, cannot possibly work, as we discussed a month ago.
http://lkml.org/lkml/2006/10/1/18

So, you two are just beating a dead horse. It's time to write the code which identifies Apple devices and not try to ride a quirk.

-- Pete

#9 lore raw

Am Samstag, 28. Oktober 2006 20:14 schrieb Pete Zaitcev:

Quoted 7 lines
Quoted 1 line

OK, so I tried adding all of them to the HID_QUIRK_IGNORE LIST, i.e.

This, of course, cannot possibly work, as we discussed a month ago.
 http://lkml.org/lkml/2006/10/1/18

So, you two are just beating a dead horse. It's time to write the code which identifies Apple devices and not try to ride a quirk.

No, this will need a quirk, just one that is more specific. Globally triggering on Apple won't do.

Regards
Oliver

A message that is not in the archive (sent off-list or not yet received): [email protected]

#11 lore raw
Quoted 10 lines

From: Sergey Vlasov <[email protected]>
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.

Exactly. Combing both patches:
Soeren, if this works, please sign it off and send it to Greg.

drivers/usb/input/hid-core.c +23 -0
index 0549ec9..0745fcb 100644
@@ -1626,8 +1626,16 @@ #define USB_DEVICE_ID_LD_POWERCONTROL	0x
 #define USB_DEVICE_ID_LD_MACHINETEST	0x2040
 
 #define USB_VENDOR_ID_APPLE		0x05ac
+
+#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
 #define USB_DEVICE_ID_APPLE_MIGHTYMOUSE	0x0304
 
+
 #define USB_VENDOR_ID_CHERRY		0x046a
 #define USB_DEVICE_ID_CHERRY_CYMOTION	0x0023
 
@@ -1801,6 +1809,18 @@ static const struct hid_blacklist {
 	{ USB_VENDOR_ID_APPLE, 0x030A, HID_QUIRK_POWERBOOK_HAS_FN },
 	{ USB_VENDOR_ID_APPLE, 0x030B, HID_QUIRK_POWERBOOK_HAS_FN },
 
+	{ USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_GEYSER_ANSI, HID_QUIRK_IGNORE_MOUSE },
+	{ USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_GEYSER_ISO, HID_QUIRK_IGNORE_MOUSE },
+	{ USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_GEYSER_JIS, HID_QUIRK_IGNORE_MOUSE },
+	{ USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_GEYSER3_ANSI, HID_QUIRK_IGNORE_MOUSE },
+	{ USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_GEYSER3_ISO, HID_QUIRK_IGNORE_MOUSE },
+	{ USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_GEYSER3_JIS, HID_QUIRK_IGNORE_MOUSE },
+	{ USB_VENDOR_ID_APPLE, 0x020E, HID_QUIRK_IGNORE_MOUSE },
+	{ USB_VENDOR_ID_APPLE, 0x020F, HID_QUIRK_IGNORE_MOUSE },
+	{ USB_VENDOR_ID_APPLE, 0x030A, HID_QUIRK_IGNORE_MOUSE },
+	{ USB_VENDOR_ID_APPLE, 0x030B, HID_QUIRK_IGNORE_MOUSE },
+
+
 	{ USB_VENDOR_ID_PANJIT, 0x0001, HID_QUIRK_IGNORE },
 	{ USB_VENDOR_ID_PANJIT, 0x0002, HID_QUIRK_IGNORE },
 	{ USB_VENDOR_ID_PANJIT, 0x0003, HID_QUIRK_IGNORE },
@@ -1897,6 +1917,9 @@ static struct hid_device *usb_hid_config
 
 	if (quirks & HID_QUIRK_IGNORE)
 		return NULL;
+	if (quirks & HID_QUIRK_IGNORE_MOUSE)
+		if (interface->desc.bInterfaceProtocol == USB_INTERFACE_PROTOCOL_MOUSE)
+			return NULL;
 
 	if (usb_get_extra_descriptor(interface, HID_DT_HID, &hdesc) &&
 	    (!interface->desc.bNumEndpoints ||
drivers/usb/input/hid.h +1 -0
index 9b50eff..abd7b52 100644
@@ -260,6 +260,7 @@ #define HID_QUIRK_CYMOTION			0x00000800
 #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
#12 lore raw
Quoted 4 lines · Oliver Neukum

Exactly. Combing both patches:
Soeren, if this works, please sign it off and send it to Greg.

This looks good. However, the love of meaningless whitespace makes me uneasy. It sets us up for double-patching.

drivers/usb/input/hid-core.c #define USB_DEVICE_ID_LD_POWERCONTROL 0x · line 1640

Quoted 6 lines
drivers/usb/input/hid-core.c +2 -0
+#define USB_DEVICE_ID_APPLE_GEYSER3_JIS	0x0219
 #define USB_DEVICE_ID_APPLE_MIGHTYMOUSE	0x0304
 
+
 #define USB_VENDOR_ID_CHERRY		0x046a
 #define USB_DEVICE_ID_CHERRY_CYMOTION	0x0023

-- Pete

#13 lore raw
In reply to Oliver Neukum
Quoted 10 lines · Oliver Neukum
Quoted 9 lines

From: Sergey Vlasov <[email protected]>
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.

Quoted 2 lines

Exactly. Combing both patches:
Soeren, if this works, please sign it off and send it to Greg.

OK, this works, but as the same IDs need the FN key hacks I or'ed the FN and mouse quirk flags. Also I added the appleir (builtin infrared on the macbook/pro) to the list of ignored IDs. Therefore the patch though very similar is again slightly different.

But hey, it worked for me over the last hour on this mbp :-)) Please comment/apply.

Soeren.

Signature · 2 lines
Sometimes, there's a moment as you're waking, when you become aware of
the real world around you, but you're still dreaming.
drivers/usb/input/hid.h +1 -0
@@ -260,6 +260,7 @@
 #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
drivers/usb/input/hid-core.c +23 -10
@@ -1585,6 +1585,13 @@
 
 #define USB_VENDOR_ID_APPLE		0x05ac
 #define USB_DEVICE_ID_APPLE_MIGHTYMOUSE	0x0304
+#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
+#define USB_DEVICE_ID_APPLE_IR  0x8240
 
 #define USB_VENDOR_ID_CHERRY		0x046a
 #define USB_DEVICE_ID_CHERRY_CYMOTION	0x0023
@@ -1731,16 +1738,18 @@
 
 	{ USB_VENDOR_ID_CHERRY, USB_DEVICE_ID_CHERRY_CYMOTION, HID_QUIRK_CYMOTION },
 
-	{ USB_VENDOR_ID_APPLE, 0x020E, HID_QUIRK_POWERBOOK_HAS_FN },
-	{ USB_VENDOR_ID_APPLE, 0x020F, HID_QUIRK_POWERBOOK_HAS_FN },
-	{ USB_VENDOR_ID_APPLE, 0x0214, HID_QUIRK_POWERBOOK_HAS_FN },
-	{ USB_VENDOR_ID_APPLE, 0x0215, HID_QUIRK_POWERBOOK_HAS_FN },
-	{ USB_VENDOR_ID_APPLE, 0x0216, HID_QUIRK_POWERBOOK_HAS_FN },
-	{ USB_VENDOR_ID_APPLE, 0x0217, HID_QUIRK_POWERBOOK_HAS_FN },
-	{ USB_VENDOR_ID_APPLE, 0x0218, HID_QUIRK_POWERBOOK_HAS_FN },
-	{ USB_VENDOR_ID_APPLE, 0x0219, HID_QUIRK_POWERBOOK_HAS_FN },
-	{ USB_VENDOR_ID_APPLE, 0x030A, HID_QUIRK_POWERBOOK_HAS_FN },
-	{ USB_VENDOR_ID_APPLE, 0x030B, HID_QUIRK_POWERBOOK_HAS_FN },
+	{ USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_GEYSER_ANSI, HID_QUIRK_POWERBOOK_HAS_FN | HID_QUIRK_IGNORE_MOUSE},
+	{ USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_GEYSER_ISO, HID_QUIRK_POWERBOOK_HAS_FN | HID_QUIRK_IGNORE_MOUSE},
+	{ USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_GEYSER_JIS, HID_QUIRK_POWERBOOK_HAS_FN | HID_QUIRK_IGNORE_MOUSE},
+	{ USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_GEYSER3_ANSI, HID_QUIRK_POWERBOOK_HAS_FN | HID_QUIRK_IGNORE_MOUSE},
+	{ USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_GEYSER3_ISO, HID_QUIRK_POWERBOOK_HAS_FN | HID_QUIRK_IGNORE_MOUSE},
+	{ USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_GEYSER3_JIS, HID_QUIRK_POWERBOOK_HAS_FN | HID_QUIRK_IGNORE_MOUSE},
+	{ USB_VENDOR_ID_APPLE, 0x020E, HID_QUIRK_POWERBOOK_HAS_FN | HID_QUIRK_IGNORE_MOUSE},
+	{ USB_VENDOR_ID_APPLE, 0x020F, HID_QUIRK_POWERBOOK_HAS_FN | HID_QUIRK_IGNORE_MOUSE},
+	{ USB_VENDOR_ID_APPLE, 0x030A, HID_QUIRK_POWERBOOK_HAS_FN | HID_QUIRK_IGNORE_MOUSE},
+	{ USB_VENDOR_ID_APPLE, 0x030B, HID_QUIRK_POWERBOOK_HAS_FN | HID_QUIRK_IGNORE_MOUSE},
+
+	{ USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_IR, HID_QUIRK_IGNORE },
 
 	{ USB_VENDOR_ID_PANJIT, 0x0001, HID_QUIRK_IGNORE },
 	{ USB_VENDOR_ID_PANJIT, 0x0002, HID_QUIRK_IGNORE },
@@ -1837,6 +1846,10 @@
 	if (quirks & HID_QUIRK_IGNORE)
 		return NULL;
 
+	if (quirks & HID_QUIRK_IGNORE_MOUSE)
+		if (interface->desc.bInterfaceProtocol == USB_INTERFACE_PROTOCOL_MOUSE)
+			return NULL;
+
 	if (usb_get_extra_descriptor(interface, HID_DT_HID, &hdesc) &&
 	    (!interface->desc.bNumEndpoints ||
 	     usb_get_extra_descriptor(&interface->endpoint[0], HID_DT_HID, &hdesc))) {
#14 lore raw
Quoted 10 lines · Soeren Sonnenburg
Quoted 9 lines · Oliver Neukum
Quoted 9 lines

From: Sergey Vlasov <[email protected]>
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.

The appletouch driver doesn't work properly on the MacBook
(non-Pro). It claims the device, and sort of functions, but is basically unusable.

If this goes in, and blacklists the MacBook touchpad too, Macbook
users will be unhappy. I think the MacBook and the -Pro use the same IDs, though, which makes a problem for this patch until appletouch is fixed on MacBooks.

Quoted 8 lines
Quoted 2 lines

Exactly. Combing both patches:
Soeren, if this works, please sign it off and send it to Greg.

OK, this works, but as the same IDs need the FN key hacks I or'ed the FN and mouse quirk flags. Also I added the appleir (builtin infrared on the macbook/pro) to the list of ignored IDs. Therefore the patch though very similar is again slightly different.

Quoted 7 lines

But hey, it worked for me over the last hour on this mbp :-)) Please comment/apply.

Soeren.

--
Joseph Fannin
[email protected]

#15 lore raw
Quoted 12 lines · Joseph Fannin
Quoted 10 lines · Soeren Sonnenburg
Quoted 9 lines · Oliver Neukum
Quoted 9 lines

From: Sergey Vlasov <[email protected]>
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.

Quoted 8 lines

The appletouch driver doesn't work properly on the MacBook
(non-Pro). It claims the device, and sort of functions, but is basically unusable.

If this goes in, and blacklists the MacBook touchpad too, Macbook
users will be unhappy. I think the MacBook and the -Pro use the same IDs, though, which makes a problem for this patch until appletouch is fixed on MacBooks.

Can you please be a bit more specific on this ? Other sites mention it works http://bbbart.ulyssis.be/gentoomacbook/ ... what are you missing ? Sensitivity and such can all be tweaked in xorg.conf ...

Soeren

Signature · 2 lines
Sometimes, there's a moment as you're waking, when you become aware of
the real world oaround you, but you're still dreaming.
#16 lore raw
Quoted 17 lines · Soeren Sonnenburg
Quoted 16 lines · Joseph Fannin
Quoted 10 lines · Soeren Sonnenburg
Quoted 9 lines · Oliver Neukum
Quoted 9 lines

From: Sergey Vlasov <[email protected]>
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.

The appletouch driver doesn't work properly on the MacBook
(non-Pro). It claims the device, and sort of functions, but is basically unusable.

Quoted 8 lines
Quoted 4 lines

If this goes in, and blacklists the MacBook touchpad too, Macbook
users will be unhappy. I think the MacBook and the -Pro use the same IDs, though, which makes a problem for this patch until appletouch is fixed on MacBooks.

Can you please be a bit more specific on this ? Other sites mention it works http://bbbart.ulyssis.be/gentoomacbook/ ... what are you missing ? Sensitivity and such can all be tweaked in xorg.conf ...

That's the first I've heard of it working on a vanilla MacBook.
I'm glad. I've only heard of failures before, some by people way smarter than me.

I wish I could whip out my 'Book and try it again, but it's away
for service. But here's what I do know:

Enabling the "dbg" parameter of the module produced output only
once, when I switched VTs to X and back quickly. The one time it did work, it dumped so much info to syslog it for all practical purposes locked the machine up, so I didn't learn much.

Printk's I added to the code that initializes absolute mode for
geiser3 did get printed, though.

I couldn't get debug events out of the driver in any other
situation, and I couldn't reproduce it.

The touchpad doesn't respond to any of the xorg.conf knobs, and
synclient doesn't detect any device. Yes, shm or whatever was enabled. (I've had a real synaptics pad working before, for what that's worth.)

Without the ability to tweak the settings, the tap-to-click
sensitivity was way too high, even for people who like that sort of thing, and the pointer speed lower than that of the hid driver, even with the GNOME mouse speed stuff turned all the way up.

All my attempts to enable side-scrolling and so on also failed.

Taken with all the other stuff, it seemed to be that the MacBook
touchpad was getting reset and so dropped out of absolute mode just as soon as the driver enabled it. The one time it actually produced absolute events, it was because the geiser3 init code won the race with whatever was resetting it, due to the quick switch to X and back to vgacon. It was at this point that I decided I was in *way* over my head.

Maybe it's a misconfiguration, or HAL doing something dumb to the
mouse device, and Gentoo dude didn't have HAL installed. Anyway, it looks like *someone* got it working. But lots of people have failed, and they're going to be unhappy when they upgrade their kernel and their trackpad starts behaving badly.

--
Joseph Fannin
[email protected]

#17 lore raw
Quoted 23 lines · Joseph Fannin
Quoted 22 lines · Soeren Sonnenburg
Quoted 20 lines · Joseph Fannin
Quoted 10 lines · Soeren Sonnenburg
Quoted 9 lines · Oliver Neukum
Quoted 9 lines

From: Sergey Vlasov <[email protected]>
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.

The appletouch driver doesn't work properly on the MacBook
(non-Pro). It claims the device, and sort of functions, but is basically unusable.

If this goes in, and blacklists the MacBook touchpad too, Macbook
users will be unhappy. I think the MacBook and the -Pro use the same IDs, though, which makes a problem for this patch until appletouch is fixed on MacBooks.

Quoted 7 lines
Quoted 3 lines

Can you please be a bit more specific on this ? Other sites mention it works http://bbbart.ulyssis.be/gentoomacbook/ ... what are you missing ? Sensitivity and such can all be tweaked in xorg.conf ...

That's the first I've heard of it working on a vanilla MacBook.
I'm glad. I've only heard of failures before, some by people way smarter than me.

[lots of problems with the appletouch driver]

OK I am asking this on the mactel-linux list... Lets see if these problems are gone and I find some happy mb appletouch user...

In the worst case this patch could be a config option or will have to be kept separate.

Soeren.

Signature · 2 lines
Sometimes, there's a moment as you're waking, when you become aware of
the real world around you, but you're still dreaming.
#18 lore raw

PATCH 1/1 usbhid quirks for macbook(pro) (was: Re: Fwd: Re: [linux-usb-devel] usb initialization order (usbhid vs. appletouch))

In reply to Joseph Fannin
Quoted 12 lines · Joseph Fannin
Quoted 10 lines · Soeren Sonnenburg
Quoted 9 lines · Oliver Neukum
Quoted 9 lines

From: Sergey Vlasov <[email protected]>
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.

Quoted 8 lines

The appletouch driver doesn't work properly on the MacBook
(non-Pro). It claims the device, and sort of functions, but is basically unusable.

If this goes in, and blacklists the MacBook touchpad too, Macbook
users will be unhappy. I think the MacBook and the -Pro use the same IDs, though, which makes a problem for this patch until appletouch is fixed on MacBooks.

ok, this patch was now in the mactel svn repository since about a month and I've never ever seen a report about it failing. Also I asked on the mailinglist for anyone having problems with that and got no answer, execpt Joseph, the problem you have been seeing might have been that one:

http://www.mail-archive.com/[email protected]/msg00129.html

I would therefore hope it can be applied and thus appear in .20. I am attaching the version that is now in mactel-svn (which also includes geyser4 support).

Soeren

Signature · 2 lines
Sometimes, there's a moment as you're waking, when you become aware of
the real world around you, but you're still dreaming.
drivers/usb/input/hid-core.c +29 -11
diff -uNr linux-2.6.19/drivers/usb/input/hid-core.c linux-2.6.19-mactel/drivers/usb/input/hid-core.c
@@ -1627,6 +1627,16 @@
 
 #define USB_VENDOR_ID_APPLE		0x05ac
 #define USB_DEVICE_ID_APPLE_MIGHTYMOUSE	0x0304
+#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
+#define USB_DEVICE_ID_APPLE_GEYSER4_ANSI	0x021A
+#define USB_DEVICE_ID_APPLE_GEYSER4_ISO		0x021B
+#define USB_DEVICE_ID_APPLE_GEYSER4_JIS		0x021C
+#define USB_DEVICE_ID_APPLE_IR		0x8240
 
 #define USB_VENDOR_ID_CHERRY		0x046a
 #define USB_DEVICE_ID_CHERRY_CYMOTION	0x0023
@@ -1794,17 +1804,21 @@
 
 	{ USB_VENDOR_ID_CHERRY, USB_DEVICE_ID_CHERRY_CYMOTION, HID_QUIRK_CYMOTION },
 
-	{ USB_VENDOR_ID_APPLE, 0x020E, HID_QUIRK_POWERBOOK_HAS_FN },
-	{ USB_VENDOR_ID_APPLE, 0x020F, HID_QUIRK_POWERBOOK_HAS_FN },
-	{ USB_VENDOR_ID_APPLE, 0x0214, HID_QUIRK_POWERBOOK_HAS_FN },
-	{ USB_VENDOR_ID_APPLE, 0x0215, HID_QUIRK_POWERBOOK_HAS_FN | HID_QUIRK_POWERBOOK_ISO_KEYBOARD},
-	{ USB_VENDOR_ID_APPLE, 0x0216, HID_QUIRK_POWERBOOK_HAS_FN },
-	{ USB_VENDOR_ID_APPLE, 0x0217, HID_QUIRK_POWERBOOK_HAS_FN },
-	{ USB_VENDOR_ID_APPLE, 0x0218, HID_QUIRK_POWERBOOK_HAS_FN | HID_QUIRK_POWERBOOK_ISO_KEYBOARD},
-	{ USB_VENDOR_ID_APPLE, 0x0219, HID_QUIRK_POWERBOOK_HAS_FN },
-	{ USB_VENDOR_ID_APPLE, 0x021B, HID_QUIRK_POWERBOOK_HAS_FN },
-	{ USB_VENDOR_ID_APPLE, 0x030A, HID_QUIRK_POWERBOOK_HAS_FN },
-	{ USB_VENDOR_ID_APPLE, 0x030B, HID_QUIRK_POWERBOOK_HAS_FN },
+	{ USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_GEYSER_ANSI, HID_QUIRK_POWERBOOK_HAS_FN | HID_QUIRK_IGNORE_MOUSE},
+	{ USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_GEYSER_ISO, HID_QUIRK_POWERBOOK_HAS_FN | HID_QUIRK_IGNORE_MOUSE | HID_QUIRK_POWERBOOK_ISO_KEYBOARD},
+	{ USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_GEYSER_JIS, HID_QUIRK_POWERBOOK_HAS_FN | HID_QUIRK_IGNORE_MOUSE},
+	{ USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_GEYSER3_ANSI, HID_QUIRK_POWERBOOK_HAS_FN | HID_QUIRK_IGNORE_MOUSE},
+	{ USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_GEYSER3_ISO, HID_QUIRK_POWERBOOK_HAS_FN | HID_QUIRK_IGNORE_MOUSE | HID_QUIRK_POWERBOOK_ISO_KEYBOARD},
+	{ USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_GEYSER3_JIS, HID_QUIRK_POWERBOOK_HAS_FN | HID_QUIRK_IGNORE_MOUSE},
+	{ USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_GEYSER4_ANSI, HID_QUIRK_POWERBOOK_HAS_FN | HID_QUIRK_IGNORE_MOUSE},
+	{ USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_GEYSER4_ISO, HID_QUIRK_POWERBOOK_HAS_FN | HID_QUIRK_IGNORE_MOUSE | HID_QUIRK_POWERBOOK_ISO_KEYBOARD},
+	{ USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_GEYSER4_JIS, HID_QUIRK_POWERBOOK_HAS_FN | HID_QUIRK_IGNORE_MOUSE},
+	{ USB_VENDOR_ID_APPLE, 0x020E, HID_QUIRK_POWERBOOK_HAS_FN | HID_QUIRK_IGNORE_MOUSE},
+	{ USB_VENDOR_ID_APPLE, 0x020F, HID_QUIRK_POWERBOOK_HAS_FN | HID_QUIRK_IGNORE_MOUSE},
+	{ USB_VENDOR_ID_APPLE, 0x030A, HID_QUIRK_POWERBOOK_HAS_FN | HID_QUIRK_IGNORE_MOUSE},
+	{ USB_VENDOR_ID_APPLE, 0x030B, HID_QUIRK_POWERBOOK_HAS_FN | HID_QUIRK_IGNORE_MOUSE},
+
+	{ USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_IR, HID_QUIRK_IGNORE },
 
 	{ USB_VENDOR_ID_PANJIT, 0x0001, HID_QUIRK_IGNORE },
 	{ USB_VENDOR_ID_PANJIT, 0x0002, HID_QUIRK_IGNORE },
@@ -1903,6 +1917,10 @@
 	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 ||
 	     usb_get_extra_descriptor(&interface->endpoint[0], HID_DT_HID, &hdesc))) {
drivers/usb/input/hid.h +1 -0
diff -uNr linux-2.6.19/drivers/usb/input/hid.h linux-2.6.19-mactel/drivers/usb/input/hid.h
@@ -261,6 +261,7 @@
 #define HID_QUIRK_POWERBOOK_FN_ON		0x00002000
 #define HID_QUIRK_INVERT_HWHEEL			0x00004000
 #define HID_QUIRK_POWERBOOK_ISO_KEYBOARD	0x00008000
+#define HID_QUIRK_IGNORE_MOUSE			0x00010000
 
 /*
  * This is the global environment of the parser. This information is
#19 lore raw

Re: [PATCH] usbhid quirks for macbook(pro) (was: Re: Fwd: Re: [linux-usb-devel] usb initialization order (usbhid vs. appletouch))

Quoted 11 lines · Soeren Sonnenburg

ok, this patch was now in the mactel svn repository since about a month and I've never ever seen a report about it failing. Also I asked on the mailinglist for anyone having problems with that and got no answer, execpt Joseph, the problem you have been seeing might have been that one:

http://www.mail-archive.com/[email protected]/msg00129.html

I would therefore hope it can be applied and thus appear in .20. I am attaching the version that is now in mactel-svn (which also includes geyser4 support).

I've since gotten my Macbook's trackpad working with the Appletouch
driver also, now, so make that no problems, please.

I don't know what the problems I was seeing were anymore, but I
think it was mostly the difficulty in getting it set up. I understand that this should help fix that, and wish I hadn't tried to hold it up!

--
Joseph Fannin
[email protected] | [email protected]

#20 lore raw

Re: [PATCH] usbhid quirks for macbook(pro) (was: Re: Fwd: Re: [linux-usb-devel] usb initialization order (usbhid vs. appletouch))

Quoted 14 lines · Joseph Fannin
Quoted 11 lines · Soeren Sonnenburg

ok, this patch was now in the mactel svn repository since about a month and I've never ever seen a report about it failing. Also I asked on the mailinglist for anyone having problems with that and got no answer, execpt Joseph, the problem you have been seeing might have been that one:

http://www.mail-archive.com/[email protected]/msg00129.html

I would therefore hope it can be applied and thus appear in .20. I am attaching the version that is now in mactel-svn (which also includes geyser4 support).

Quoted 6 lines

I've since gotten my Macbook's trackpad working with the Appletouch
driver also, now, so make that no problems, please.

I don't know what the problems I was seeing were anymore, but I
think it was mostly the difficulty in getting it set up. I understand that this should help fix that, and wish I hadn't tried to hold it up!

Greg,

I've noticed that this patch is not in 2.6.20-rc1. Could you please comment on what is wrong with it / whether it will ever have a chance to be accepted in the way it is done ?

Thanks,
Soeren

#21 lore raw

Re: [PATCH] usbhid quirks for macbook(pro) (was: Re: Fwd: Re: [linux-usb-devel] usb initialization order (usbhid vs. appletouch))

Quoted 22 lines · Soeren Sonnenburg
Quoted 14 lines · Joseph Fannin
Quoted 11 lines · Soeren Sonnenburg

ok, this patch was now in the mactel svn repository since about a month and I've never ever seen a report about it failing. Also I asked on the mailinglist for anyone having problems with that and got no answer, execpt Joseph, the problem you have been seeing might have been that one:

http://www.mail-archive.com/[email protected]/msg00129.html

I would therefore hope it can be applied and thus appear in .20. I am attaching the version that is now in mactel-svn (which also includes geyser4 support).

Quoted 6 lines

I've since gotten my Macbook's trackpad working with the Appletouch
driver also, now, so make that no problems, please.

I don't know what the problems I was seeing were anymore, but I
think it was mostly the difficulty in getting it set up. I understand that this should help fix that, and wish I hadn't tried to hold it up!

Quoted 5 lines

Greg,

I've noticed that this patch is not in 2.6.20-rc1. Could you please comment on what is wrong with it / whether it will ever have a chance to be accepted in the way it is done ?

It's in my queue right now, sorry. I'll catch up on it in a few hours.

thanks,

greg k-h

#22 lore raw

PATCH 1/1 usbhid quirks for macbook(pro) updated to 2.6.20-rc1

Quoted 3 lines · Greg KH
Quoted 2 lines · Soeren Sonnenburg
Quoted 1 line · Joseph Fannin

On Fri, 2006-12-08 at 18:19 +0100, Soeren Sonnenburg wrote:

[...]

Quoted 7 lines
Quoted 5 lines

Greg,

I've noticed that this patch is not in 2.6.20-rc1. Could you please comment on what is wrong with it / whether it will ever have a chance to be accepted in the way it is done ?

It's in my queue right now, sorry. I'll catch up on it in a few hours.

Please find attached a updated version of this patch (for kernel 2.6.20-rc1)

Soeren

Signature · 2 lines
Sometimes, there's a moment as you're waking, when you become aware of
the real world around you, but you're still dreaming.
drivers/usb/input/hid-core.c +19 -13
diff -ur linux-2.6.20-rc1-orig/drivers/usb/input/hid-core.c linux-2.6.20-rc1/drivers/usb/input/hid-core.c
@@ -772,6 +772,7 @@
 #define USB_DEVICE_ID_APPLE_GEYSER4_JIS	0x021c
 #define USB_DEVICE_ID_APPLE_FOUNTAIN_TP_ONLY	0x030a
 #define USB_DEVICE_ID_APPLE_GEYSER1_TP_ONLY	0x030b
+#define USB_DEVICE_ID_APPLE_IR		0x8240
 
 #define USB_VENDOR_ID_CHERRY		0x046a
 #define USB_DEVICE_ID_CHERRY_CYMOTION	0x0023
@@ -942,19 +943,19 @@
 
 	{ USB_VENDOR_ID_CHERRY, USB_DEVICE_ID_CHERRY_CYMOTION, HID_QUIRK_CYMOTION },
 
-	{ USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_FOUNTAIN_ANSI, HID_QUIRK_POWERBOOK_HAS_FN },
-	{ USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_FOUNTAIN_ISO, HID_QUIRK_POWERBOOK_HAS_FN },
-	{ USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_GEYSER_ANSI, HID_QUIRK_POWERBOOK_HAS_FN },
-	{ USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_GEYSER_ISO, HID_QUIRK_POWERBOOK_HAS_FN | HID_QUIRK_POWERBOOK_ISO_KEYBOARD},
-	{ USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_GEYSER_JIS, HID_QUIRK_POWERBOOK_HAS_FN },
-	{ USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_GEYSER3_ANSI, HID_QUIRK_POWERBOOK_HAS_FN },
-	{ USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_GEYSER3_ISO, HID_QUIRK_POWERBOOK_HAS_FN | HID_QUIRK_POWERBOOK_ISO_KEYBOARD},
-	{ USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_GEYSER3_JIS, HID_QUIRK_POWERBOOK_HAS_FN },
-	{ USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_GEYSER4_ANSI, HID_QUIRK_POWERBOOK_HAS_FN },
-	{ USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_GEYSER4_ISO, HID_QUIRK_POWERBOOK_HAS_FN },
-	{ USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_GEYSER4_JIS, HID_QUIRK_POWERBOOK_HAS_FN },
-	{ USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_FOUNTAIN_TP_ONLY, HID_QUIRK_POWERBOOK_HAS_FN },
-	{ USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_GEYSER1_TP_ONLY, HID_QUIRK_POWERBOOK_HAS_FN },
+	{ USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_FOUNTAIN_ANSI, HID_QUIRK_POWERBOOK_HAS_FN | HID_QUIRK_IGNORE_MOUSE },
+	{ USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_FOUNTAIN_ISO, HID_QUIRK_POWERBOOK_HAS_FN | HID_QUIRK_IGNORE_MOUSE },
+	{ USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_GEYSER_ANSI, HID_QUIRK_POWERBOOK_HAS_FN | HID_QUIRK_IGNORE_MOUSE },
+	{ USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_GEYSER_ISO, HID_QUIRK_POWERBOOK_HAS_FN | HID_QUIRK_IGNORE_MOUSE | HID_QUIRK_POWERBOOK_ISO_KEYBOARD},
+	{ USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_GEYSER_JIS, HID_QUIRK_POWERBOOK_HAS_FN | HID_QUIRK_IGNORE_MOUSE },
+	{ USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_GEYSER3_ANSI, HID_QUIRK_POWERBOOK_HAS_FN | HID_QUIRK_IGNORE_MOUSE },
+	{ USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_GEYSER3_ISO, HID_QUIRK_POWERBOOK_HAS_FN | HID_QUIRK_IGNORE_MOUSE | HID_QUIRK_POWERBOOK_ISO_KEYBOARD},
+	{ USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_GEYSER3_JIS, HID_QUIRK_POWERBOOK_HAS_FN | HID_QUIRK_IGNORE_MOUSE },
+	{ USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_GEYSER4_ANSI, HID_QUIRK_POWERBOOK_HAS_FN | HID_QUIRK_IGNORE_MOUSE },
+	{ USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_GEYSER4_ISO, HID_QUIRK_POWERBOOK_HAS_FN | HID_QUIRK_IGNORE_MOUSE | HID_QUIRK_POWERBOOK_ISO_KEYBOARD},
+	{ USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_GEYSER4_JIS, HID_QUIRK_POWERBOOK_HAS_FN | HID_QUIRK_IGNORE_MOUSE },
+	{ USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_FOUNTAIN_TP_ONLY, HID_QUIRK_POWERBOOK_HAS_FN | HID_QUIRK_IGNORE_MOUSE },
+	{ USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_GEYSER1_TP_ONLY, HID_QUIRK_POWERBOOK_HAS_FN | HID_QUIRK_IGNORE_MOUSE },
 
 	{ USB_VENDOR_ID_PANJIT, 0x0001, HID_QUIRK_IGNORE },
 	{ USB_VENDOR_ID_PANJIT, 0x0002, HID_QUIRK_IGNORE },
@@ -1060,6 +1061,11 @@
 	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 ||
 	     usb_get_extra_descriptor(&interface->endpoint[0], HID_DT_HID, &hdesc))) {
include/linux/hid.h +1 -0
diff -ur linux-2.6.20-rc1-orig/include/linux/hid.h linux-2.6.20-rc1/include/linux/hid.h
@@ -264,6 +264,7 @@
 #define HID_QUIRK_INVERT_HWHEEL			0x00004000
 #define HID_QUIRK_POWERBOOK_ISO_KEYBOARD        0x00008000
 #define HID_QUIRK_BAD_RELATIVE_KEYS		0x00010000
+#define HID_QUIRK_IGNORE_MOUSE			0x00020000
 
 /*
  * This is the global environment of the parser. This information is
#23 lore raw

PATCH 1/1 usbhid quirks for macbook(pro) updated to 2.6.20-rc6

Quoted 4 lines · Soeren Sonnenburg
Quoted 3 lines · Greg KH
Quoted 2 lines · Soeren Sonnenburg
Quoted 1 line · Joseph Fannin

On Fri, 2006-12-08 at 18:19 +0100, Soeren Sonnenburg wrote:

Quoted 8 lines

[...]

Quoted 7 lines
Quoted 5 lines

Greg,

I've noticed that this patch is not in 2.6.20-rc1. Could you please comment on what is wrong with it / whether it will ever have a chance to be accepted in the way it is done ?

It's in my queue right now, sorry. I'll catch up on it in a few hours.

This is the updated version for 2.6.20-rc6.

Soeren

Signature · 2 lines
Sometimes, there's a moment as you're waking, when you become aware of
the real world around you, but you're still dreaming.
drivers/usb/input/hid-core.c +21 -13
diff -ur linux-2.6.20-rc6/drivers/usb/input/hid-core.c linux-2.6.20-rc6-sonne/drivers/usb/input/hid-core.c
@@ -777,6 +777,7 @@
 #define USB_DEVICE_ID_APPLE_GEYSER4_JIS	0x021c
 #define USB_DEVICE_ID_APPLE_FOUNTAIN_TP_ONLY	0x030a
 #define USB_DEVICE_ID_APPLE_GEYSER1_TP_ONLY	0x030b
+#define USB_DEVICE_ID_APPLE_IR		0x8240
 
 #define USB_VENDOR_ID_CHERRY		0x046a
 #define USB_DEVICE_ID_CHERRY_CYMOTION	0x0023
@@ -954,19 +955,21 @@
 
 	{ USB_VENDOR_ID_CHERRY, USB_DEVICE_ID_CHERRY_CYMOTION, HID_QUIRK_CYMOTION },
 
-	{ USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_FOUNTAIN_ANSI, HID_QUIRK_POWERBOOK_HAS_FN },
-	{ USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_FOUNTAIN_ISO, HID_QUIRK_POWERBOOK_HAS_FN },
-	{ USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_GEYSER_ANSI, HID_QUIRK_POWERBOOK_HAS_FN },
-	{ USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_GEYSER_ISO, HID_QUIRK_POWERBOOK_HAS_FN | HID_QUIRK_POWERBOOK_ISO_KEYBOARD},
-	{ USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_GEYSER_JIS, HID_QUIRK_POWERBOOK_HAS_FN },
-	{ USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_GEYSER3_ANSI, HID_QUIRK_POWERBOOK_HAS_FN },
-	{ USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_GEYSER3_ISO, HID_QUIRK_POWERBOOK_HAS_FN | HID_QUIRK_POWERBOOK_ISO_KEYBOARD},
-	{ USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_GEYSER3_JIS, HID_QUIRK_POWERBOOK_HAS_FN },
-	{ USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_GEYSER4_ANSI, HID_QUIRK_POWERBOOK_HAS_FN },
-	{ USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_GEYSER4_ISO, HID_QUIRK_POWERBOOK_HAS_FN | HID_QUIRK_POWERBOOK_ISO_KEYBOARD},
-	{ USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_GEYSER4_JIS, HID_QUIRK_POWERBOOK_HAS_FN },
-	{ USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_FOUNTAIN_TP_ONLY, HID_QUIRK_POWERBOOK_HAS_FN },
-	{ USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_GEYSER1_TP_ONLY, HID_QUIRK_POWERBOOK_HAS_FN },
+	{ USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_FOUNTAIN_ANSI, HID_QUIRK_POWERBOOK_HAS_FN | HID_QUIRK_IGNORE_MOUSE },
+	{ USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_FOUNTAIN_ISO, HID_QUIRK_POWERBOOK_HAS_FN | HID_QUIRK_IGNORE_MOUSE },
+	{ USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_GEYSER_ANSI, HID_QUIRK_POWERBOOK_HAS_FN | HID_QUIRK_IGNORE_MOUSE },
+	{ USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_GEYSER_ISO, HID_QUIRK_POWERBOOK_HAS_FN | HID_QUIRK_IGNORE_MOUSE | HID_QUIRK_POWERBOOK_ISO_KEYBOARD},
+	{ USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_GEYSER_JIS, HID_QUIRK_POWERBOOK_HAS_FN | HID_QUIRK_IGNORE_MOUSE },
+	{ USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_GEYSER3_ANSI, HID_QUIRK_POWERBOOK_HAS_FN | HID_QUIRK_IGNORE_MOUSE },
+	{ USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_GEYSER3_ISO, HID_QUIRK_POWERBOOK_HAS_FN | HID_QUIRK_IGNORE_MOUSE | HID_QUIRK_POWERBOOK_ISO_KEYBOARD},
+	{ USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_GEYSER3_JIS, HID_QUIRK_POWERBOOK_HAS_FN | HID_QUIRK_IGNORE_MOUSE },
+	{ USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_GEYSER4_ANSI, HID_QUIRK_POWERBOOK_HAS_FN | HID_QUIRK_IGNORE_MOUSE },
+	{ USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_GEYSER4_ISO, HID_QUIRK_POWERBOOK_HAS_FN | HID_QUIRK_IGNORE_MOUSE | HID_QUIRK_POWERBOOK_ISO_KEYBOARD},
+	{ USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_GEYSER4_JIS, HID_QUIRK_POWERBOOK_HAS_FN | HID_QUIRK_IGNORE_MOUSE },
+	{ USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_FOUNTAIN_TP_ONLY, HID_QUIRK_POWERBOOK_HAS_FN | HID_QUIRK_IGNORE_MOUSE },
+	{ USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_GEYSER1_TP_ONLY, HID_QUIRK_POWERBOOK_HAS_FN | HID_QUIRK_IGNORE_MOUSE },
+
+	{ USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_IR, HID_QUIRK_IGNORE },
 
 	{ USB_VENDOR_ID_PANJIT, 0x0001, HID_QUIRK_IGNORE },
 	{ USB_VENDOR_ID_PANJIT, 0x0002, HID_QUIRK_IGNORE },
@@ -1072,6 +1075,11 @@
 	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 ||
 	     usb_get_extra_descriptor(&interface->endpoint[0], HID_DT_HID, &hdesc))) {
include/linux/hid.h +1 -0
@@ -264,6 +264,7 @@
 #define HID_QUIRK_INVERT_HWHEEL			0x00004000
 #define HID_QUIRK_POWERBOOK_ISO_KEYBOARD        0x00008000
 #define HID_QUIRK_BAD_RELATIVE_KEYS		0x00010000
+#define HID_QUIRK_IGNORE_MOUSE			0x00020000
 
 /*
  * This is the global environment of the parser. This information is
#24 lore raw

Re: [PATCH] usbhid quirks for macbook(pro) updated to 2.6.20-rc6

Quoted 5 lines · Soeren Sonnenburg
Quoted 4 lines
Quoted 4 lines
Quoted 3 lines

I've noticed that this patch is not in 2.6.20-rc1. Could you please comment on what is wrong with it / whether it will ever have a chance to be accepted in the way it is done ?

It's in my queue right now, sorry. I'll catch up on it in a few hours.

This is the updated version for 2.6.20-rc6.

Greg,

do you have this already in your tree, or should I take it over?

Soeren - could you please submit your patch with proper Signed-off-by line?

Thanks,

Signature · 1 line
Jiri Kosina
#25 lore raw

Re: [PATCH] usbhid quirks for macbook(pro) updated to 2.6.20-rc6

Quoted 1 line · Jiri Kosina

On Sat, 27 Jan 2007, Soeren Sonnenburg wrote:

[...]

Quoted 2 lines

Soeren - could you please submit your patch with proper Signed-off-by line?

argh, sorry!

Attached!

Soeren

Signature · 2 lines
Sometimes, there's a moment as you're waking, when you become aware of
the real world around you, but you're still dreaming.
drivers/usb/input/hid-core.c +21 -13
diff -ur linux-2.6.20-rc6/drivers/usb/input/hid-core.c linux-2.6.20-rc6-sonne/drivers/usb/input/hid-core.c
@@ -777,6 +777,7 @@
 #define USB_DEVICE_ID_APPLE_GEYSER4_JIS	0x021c
 #define USB_DEVICE_ID_APPLE_FOUNTAIN_TP_ONLY	0x030a
 #define USB_DEVICE_ID_APPLE_GEYSER1_TP_ONLY	0x030b
+#define USB_DEVICE_ID_APPLE_IR		0x8240
 
 #define USB_VENDOR_ID_CHERRY		0x046a
 #define USB_DEVICE_ID_CHERRY_CYMOTION	0x0023
@@ -954,19 +955,21 @@
 
 	{ USB_VENDOR_ID_CHERRY, USB_DEVICE_ID_CHERRY_CYMOTION, HID_QUIRK_CYMOTION },
 
-	{ USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_FOUNTAIN_ANSI, HID_QUIRK_POWERBOOK_HAS_FN },
-	{ USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_FOUNTAIN_ISO, HID_QUIRK_POWERBOOK_HAS_FN },
-	{ USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_GEYSER_ANSI, HID_QUIRK_POWERBOOK_HAS_FN },
-	{ USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_GEYSER_ISO, HID_QUIRK_POWERBOOK_HAS_FN | HID_QUIRK_POWERBOOK_ISO_KEYBOARD},
-	{ USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_GEYSER_JIS, HID_QUIRK_POWERBOOK_HAS_FN },
-	{ USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_GEYSER3_ANSI, HID_QUIRK_POWERBOOK_HAS_FN },
-	{ USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_GEYSER3_ISO, HID_QUIRK_POWERBOOK_HAS_FN | HID_QUIRK_POWERBOOK_ISO_KEYBOARD},
-	{ USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_GEYSER3_JIS, HID_QUIRK_POWERBOOK_HAS_FN },
-	{ USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_GEYSER4_ANSI, HID_QUIRK_POWERBOOK_HAS_FN },
-	{ USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_GEYSER4_ISO, HID_QUIRK_POWERBOOK_HAS_FN | HID_QUIRK_POWERBOOK_ISO_KEYBOARD},
-	{ USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_GEYSER4_JIS, HID_QUIRK_POWERBOOK_HAS_FN },
-	{ USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_FOUNTAIN_TP_ONLY, HID_QUIRK_POWERBOOK_HAS_FN },
-	{ USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_GEYSER1_TP_ONLY, HID_QUIRK_POWERBOOK_HAS_FN },
+	{ USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_FOUNTAIN_ANSI, HID_QUIRK_POWERBOOK_HAS_FN | HID_QUIRK_IGNORE_MOUSE },
+	{ USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_FOUNTAIN_ISO, HID_QUIRK_POWERBOOK_HAS_FN | HID_QUIRK_IGNORE_MOUSE },
+	{ USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_GEYSER_ANSI, HID_QUIRK_POWERBOOK_HAS_FN | HID_QUIRK_IGNORE_MOUSE },
+	{ USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_GEYSER_ISO, HID_QUIRK_POWERBOOK_HAS_FN | HID_QUIRK_IGNORE_MOUSE | HID_QUIRK_POWERBOOK_ISO_KEYBOARD},
+	{ USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_GEYSER_JIS, HID_QUIRK_POWERBOOK_HAS_FN | HID_QUIRK_IGNORE_MOUSE },
+	{ USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_GEYSER3_ANSI, HID_QUIRK_POWERBOOK_HAS_FN | HID_QUIRK_IGNORE_MOUSE },
+	{ USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_GEYSER3_ISO, HID_QUIRK_POWERBOOK_HAS_FN | HID_QUIRK_IGNORE_MOUSE | HID_QUIRK_POWERBOOK_ISO_KEYBOARD},
+	{ USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_GEYSER3_JIS, HID_QUIRK_POWERBOOK_HAS_FN | HID_QUIRK_IGNORE_MOUSE },
+	{ USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_GEYSER4_ANSI, HID_QUIRK_POWERBOOK_HAS_FN | HID_QUIRK_IGNORE_MOUSE },
+	{ USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_GEYSER4_ISO, HID_QUIRK_POWERBOOK_HAS_FN | HID_QUIRK_IGNORE_MOUSE | HID_QUIRK_POWERBOOK_ISO_KEYBOARD},
+	{ USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_GEYSER4_JIS, HID_QUIRK_POWERBOOK_HAS_FN | HID_QUIRK_IGNORE_MOUSE },
+	{ USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_FOUNTAIN_TP_ONLY, HID_QUIRK_POWERBOOK_HAS_FN | HID_QUIRK_IGNORE_MOUSE },
+	{ USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_GEYSER1_TP_ONLY, HID_QUIRK_POWERBOOK_HAS_FN | HID_QUIRK_IGNORE_MOUSE },
+
+	{ USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_IR, HID_QUIRK_IGNORE },
 
 	{ USB_VENDOR_ID_PANJIT, 0x0001, HID_QUIRK_IGNORE },
 	{ USB_VENDOR_ID_PANJIT, 0x0002, HID_QUIRK_IGNORE },
@@ -1072,6 +1075,11 @@
 	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 ||
 	     usb_get_extra_descriptor(&interface->endpoint[0], HID_DT_HID, &hdesc))) {
include/linux/hid.h +1 -0
@@ -264,6 +264,7 @@
 #define HID_QUIRK_INVERT_HWHEEL			0x00004000
 #define HID_QUIRK_POWERBOOK_ISO_KEYBOARD        0x00008000
 #define HID_QUIRK_BAD_RELATIVE_KEYS		0x00010000
+#define HID_QUIRK_IGNORE_MOUSE			0x00020000
 
 /*
  * This is the global environment of the parser. This information is
#26 lore raw

Re: [PATCH] usbhid quirks for macbook(pro) updated to 2.6.20-rc6

In reply to Jiri Kosina
Quoted 6 lines · Jiri Kosina
Quoted 5 lines
Quoted 4 lines
Quoted 4 lines
Quoted 3 lines

I've noticed that this patch is not in 2.6.20-rc1. Could you please comment on what is wrong with it / whether it will ever have a chance to be accepted in the way it is done ?

It's in my queue right now, sorry. I'll catch up on it in a few hours.

This is the updated version for 2.6.20-rc6.

do you have this already in your tree, or should I take it over?

I have checked that it doesn't seem to be in Greg's patchset, so I merged it into hid tree.

Thanks,

Signature · 1 line
Jiri Kosina
#27 lore raw
In reply to Soeren Sonnenburg

(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:
[...]

Quoted 23 lines

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 },

Quoted 2 lines

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 <[email protected]>
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.

drivers/usb/input/hid-core.c +3 -0
index 45f44fe..feb41e7 100644
@@ -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 ||
drivers/usb/input/hid.h +1 -0
index 9b50eff..abd7b52 100644
@@ -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