Blame view
drivers/hid/hid-generic.c
1.88 KB
2874c5fd2
|
1 |
// SPDX-License-Identifier: GPL-2.0-or-later |
8215d557e
|
2 3 4 5 6 7 8 9 10 11 12 13 |
/* * HID support for Linux * * Copyright (c) 1999 Andreas Gal * Copyright (c) 2000-2005 Vojtech Pavlik <vojtech@suse.cz> * Copyright (c) 2005 Michael Haboustak <mike-@cinci.rr.com> for Concept2, Inc * Copyright (c) 2007-2008 Oliver Neukum * Copyright (c) 2006-2012 Jiri Kosina * Copyright (c) 2012 Henrik Rydberg */ /* |
8215d557e
|
14 15 16 17 18 19 20 21 22 |
*/ #include <linux/module.h> #include <linux/slab.h> #include <linux/kernel.h> #include <asm/unaligned.h> #include <asm/byteorder.h> #include <linux/hid.h> |
e04a0442d
|
23 |
static struct hid_driver hid_generic; |
e04a0442d
|
24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 |
static int __check_hid_generic(struct device_driver *drv, void *data) { struct hid_driver *hdrv = to_hid_driver(drv); struct hid_device *hdev = data; if (hdrv == &hid_generic) return 0; return hid_match_device(hdev, hdrv) != NULL; } static bool hid_generic_match(struct hid_device *hdev, bool ignore_special_driver) { if (ignore_special_driver) return true; if (hdev->quirks & HID_QUIRK_HAVE_SPECIAL_DRIVER) return false; /* * If any other driver wants the device, leave the device to this other * driver. */ if (bus_for_each_drv(&hid_bus_type, NULL, hdev, __check_hid_generic)) return false; return true; } |
f07b3c1da
|
53 54 55 56 57 58 59 60 61 62 63 64 65 |
static int hid_generic_probe(struct hid_device *hdev, const struct hid_device_id *id) { int ret; hdev->quirks |= HID_QUIRK_INPUT_PER_APP; ret = hid_parse(hdev); if (ret) return ret; return hid_hw_start(hdev, HID_CONNECT_DEFAULT); } |
8215d557e
|
66 |
static const struct hid_device_id hid_table[] = { |
e04a0442d
|
67 |
{ HID_DEVICE(HID_BUS_ANY, HID_GROUP_ANY, HID_ANY_ID, HID_ANY_ID) }, |
8215d557e
|
68 69 70 71 72 73 74 |
{ } }; MODULE_DEVICE_TABLE(hid, hid_table); static struct hid_driver hid_generic = { .name = "hid-generic", .id_table = hid_table, |
e04a0442d
|
75 |
.match = hid_generic_match, |
f07b3c1da
|
76 |
.probe = hid_generic_probe, |
8215d557e
|
77 |
}; |
f425458ea
|
78 |
module_hid_driver(hid_generic); |
8215d557e
|
79 80 81 82 |
MODULE_AUTHOR("Henrik Rydberg"); MODULE_DESCRIPTION("HID generic driver"); MODULE_LICENSE("GPL"); |