diff options
author | Paul Walmsley <paul@booyaka.com> | 2007-04-19 13:45:57 +0200 |
---|---|---|
committer | Jiri Kosina <jkosina@suse.cz> | 2007-04-19 13:45:57 +0200 |
commit | 8222fbe67cc6c83bb6d8d9d913aee17957fc0654 (patch) | |
tree | 6fd284a269df1e714e790f081deacb17bd2d0d83 /drivers/hid/usbhid | |
parent | USB HID: encapsulate quirk handling into hid-quirks.c (diff) | |
download | linux-8222fbe67cc6c83bb6d8d9d913aee17957fc0654.tar.xz linux-8222fbe67cc6c83bb6d8d9d913aee17957fc0654.zip |
USB HID: clarify static quirk handling as squirks
Rename existing quirks handling code that operates over a static array
to "squirks" (short for static quirks) to differentiate it from the
dynamically-allocated quirks that will be introduced in the
next patch. Add an accessor function specifically for static quirks,
usbhid_exists_squirk().
Signed-off-by: Paul Walmsley <paul@booyaka.com>
Signed-off-by: Jiri Kosina <jkosina@suse.cz>
Diffstat (limited to 'drivers/hid/usbhid')
-rw-r--r-- | drivers/hid/usbhid/hid-quirks.c | 39 |
1 files changed, 33 insertions, 6 deletions
diff --git a/drivers/hid/usbhid/hid-quirks.c b/drivers/hid/usbhid/hid-quirks.c index 9287a9e684e5..c4fdccdda858 100644 --- a/drivers/hid/usbhid/hid-quirks.c +++ b/drivers/hid/usbhid/hid-quirks.c @@ -447,6 +447,34 @@ static const struct hid_blacklist { { 0, 0 } }; +/** +* usbhid_exists_squirk: return any static quirks for a USB HID device +* @idVendor: the 16-bit USB vendor ID, in native byteorder +* @idProduct: the 16-bit USB product ID, in native byteorder +* +* Description: +* Given a USB vendor ID and product ID, return a pointer to +* the hid_blacklist entry associated with that device. +* +* Returns: pointer if quirk found, or NULL if no quirks found. +*/ +static const struct hid_blacklist *usbhid_exists_squirk(const u16 idVendor, + const u16 idProduct) +{ + const struct hid_blacklist *bl_entry = NULL; + int n = 0; + + for (; hid_blacklist[n].idVendor; n++) + if (hid_blacklist[n].idVendor == idVendor && + hid_blacklist[n].idProduct == idProduct) + bl_entry = &hid_blacklist[n]; + + if (bl_entry != NULL) + dbg("Found squirk 0x%x for USB HID vendor 0x%hx prod 0x%hx\n", + bl_entry->quirks, bl_entry->idVendor, + bl_entry->idProduct); + return bl_entry; +} /** * usbhid_lookup_quirk: return any quirks associated with a USB HID device @@ -462,7 +490,7 @@ static const struct hid_blacklist { u32 usbhid_lookup_quirk(const u16 idVendor, const u16 idProduct) { u32 quirks = 0; - int n = 0; + const struct hid_blacklist *bl_entry = NULL; /* Ignore all Wacom devices */ if (idVendor == USB_VENDOR_ID_WACOM) @@ -474,10 +502,9 @@ u32 usbhid_lookup_quirk(const u16 idVendor, const u16 idProduct) idProduct <= USB_DEVICE_ID_CODEMERCS_IOW_LAST) return HID_QUIRK_IGNORE; - for (; hid_blacklist[n].idVendor; n++) - if (hid_blacklist[n].idVendor == idVendor && - hid_blacklist[n].idProduct == idProduct) - quirks = hid_blacklist[n].quirks; - + bl_entry = usbhid_exists_squirk(idVendor, idProduct); + if (bl_entry) + quirks = bl_entry->quirks; return quirks; } + |