[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 <jkosina@suse.cz> Signed-off-by: Marcel Holtmann <marcel@holtmann.org> Signed-off-by: Andrew Morton <akpm@linux-foundation.org> Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
This commit is contained in:
parent
e6d1fc3d83
commit
cb3fecc2f2
1 changed files with 23 additions and 0 deletions
|
@ -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);
|
||||
|
||||
|
|
Loading…
Reference in a new issue