Gitweb:     
http://git.kernel.org/git/?p=linux/kernel/git/torvalds/linux-2.6.git;a=commit;h=cb3fecc2f29056e89658e7eb371e7f9be66cda6d
Commit:     cb3fecc2f29056e89658e7eb371e7f9be66cda6d
Parent:     e6d1fc3d83317678a57db1c1deb2fc0bede73aaf
Author:     Jiri Kosina <[EMAIL PROTECTED]>
AuthorDate: Thu Mar 29 01:20:25 2007 -0700
Committer:  Linus Torvalds <[EMAIL PROTECTED]>
CommitDate: Thu Mar 29 08:22:24 2007 -0700

    [PATCH] bluetooth hid quirks: mightymouse quirk
    
    I have a bugreport that scrollwheel of bluetooth version of apple
    mightymouse doesn't work.  The USB version of mightymouse works, as there
    is a quirk for handling scrollwheel in hid/usbhid for it.
    
    Now that bluetooth git tree is hooked to generic hid layer, it could easily
    use the quirks which are already present in generic hid parser, hid-input,
    etc.
    
    Below is a simple patch against bluetooth git tree, which adds quirk
    handling to current bluetooth hidp code, and sets quirk flags for device
    0x05ac/0x030c, which is the bluetooth version of the apple mightymouse.
    
    Signed-off-by: Jiri Kosina <[EMAIL PROTECTED]>
    Signed-off-by: Marcel Holtmann <[EMAIL PROTECTED]>
    Signed-off-by: Andrew Morton <[EMAIL PROTECTED]>
    Signed-off-by: Linus Torvalds <[EMAIL PROTECTED]>
---
 net/bluetooth/hidp/core.c |   23 +++++++++++++++++++++++
 1 files changed, 23 insertions(+), 0 deletions(-)

diff --git a/net/bluetooth/hidp/core.c b/net/bluetooth/hidp/core.c
index ecfe8da..d342e89 100644
--- a/net/bluetooth/hidp/core.c
+++ b/net/bluetooth/hidp/core.c
@@ -679,6 +679,27 @@ static void hidp_close(struct hid_device *hid)
 {
 }
 
+static const struct {
+       __u16 idVendor;
+       __u16 idProduct;
+       unsigned quirks;
+} hidp_blacklist[] = {
+       /* Apple wireless Mighty Mouse */
+       { 0x05ac, 0x030c, HID_QUIRK_MIGHTYMOUSE | HID_QUIRK_INVERT_HWHEEL },
+
+       { }     /* Terminating entry */
+};
+
+static void hidp_setup_quirks(struct hid_device *hid)
+{
+       unsigned int n;
+
+       for (n = 0; hidp_blacklist[n].idVendor; n++)
+               if (hidp_blacklist[n].idVendor == le16_to_cpu(hid->vendor) &&
+                               hidp_blacklist[n].idProduct == 
le16_to_cpu(hid->product))
+                       hid->quirks = hidp_blacklist[n].quirks;
+}
+
 static inline void hidp_setup_hid(struct hidp_session *session, struct 
hidp_connadd_req *req)
 {
        struct hid_device *hid = session->hid;
@@ -708,6 +729,8 @@ static inline void hidp_setup_hid(struct hidp_session 
*session, struct hidp_conn
 
        hid->hidinput_input_event = hidp_hidinput_event;
 
+       hidp_setup_quirks(hid);
+
        list_for_each_entry(report, 
&hid->report_enum[HID_INPUT_REPORT].report_list, list)
                hidp_send_report(session, report);
 
-
To unsubscribe from this list: send the line "unsubscribe git-commits-head" in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Reply via email to