diff options
author | Paul Walmsley <paul@booyaka.com> | 2007-04-19 08:56:12 -0400 |
---|---|---|
committer | Jiri Kosina <jkosina@suse.cz> | 2007-04-19 08:56:12 -0400 |
commit | 876b9276b993723f7a74d55b3b49b9186f05d09d (patch) | |
tree | c63653a1a13206f3f37007e334cb9054c05c4807 /drivers/hid/usbhid/hid-core.c | |
parent | 8cef908235bcac898a4f4ccc50c781e08022a579 (diff) |
USB HID: add 'quirks' module parameter
Add a 'quirks' module parameter for the usbhid module, so users can
add or modify quirks at module load time.
Signed-off-by: Paul Walmsley <paul@booyaka.com>
Signed-off-by: Jiri Kosina <jkosina@suse.cz>
Diffstat (limited to 'drivers/hid/usbhid/hid-core.c')
-rw-r--r-- | drivers/hid/usbhid/hid-core.c | 13 |
1 files changed, 13 insertions, 0 deletions
diff --git a/drivers/hid/usbhid/hid-core.c b/drivers/hid/usbhid/hid-core.c index bf118c05a62..91d610358d5 100644 --- a/drivers/hid/usbhid/hid-core.c +++ b/drivers/hid/usbhid/hid-core.c | |||
@@ -53,6 +53,13 @@ static unsigned int hid_mousepoll_interval; | |||
53 | module_param_named(mousepoll, hid_mousepoll_interval, uint, 0644); | 53 | module_param_named(mousepoll, hid_mousepoll_interval, uint, 0644); |
54 | MODULE_PARM_DESC(mousepoll, "Polling interval of mice"); | 54 | MODULE_PARM_DESC(mousepoll, "Polling interval of mice"); |
55 | 55 | ||
56 | /* Quirks specified at module load time */ | ||
57 | static char *quirks_param[MAX_USBHID_BOOT_QUIRKS] = { [ 0 ... (MAX_USBHID_BOOT_QUIRKS - 1) ] = NULL }; | ||
58 | module_param_array_named(quirks, quirks_param, charp, NULL, 0444); | ||
59 | MODULE_PARM_DESC(quirks, "Add/modify USB HID quirks by specifying " | ||
60 | " quirks=vendorID:productID:quirks" | ||
61 | " where vendorID, productID, and quirks are all in" | ||
62 | " 0x-prefixed hex"); | ||
56 | /* | 63 | /* |
57 | * Input submission and I/O error handler. | 64 | * Input submission and I/O error handler. |
58 | */ | 65 | */ |
@@ -1072,6 +1079,9 @@ static struct usb_driver hid_driver = { | |||
1072 | static int __init hid_init(void) | 1079 | static int __init hid_init(void) |
1073 | { | 1080 | { |
1074 | int retval; | 1081 | int retval; |
1082 | retval = usbhid_quirks_init(quirks_param); | ||
1083 | if (retval) | ||
1084 | goto usbhid_quirks_init_fail; | ||
1075 | retval = hiddev_init(); | 1085 | retval = hiddev_init(); |
1076 | if (retval) | 1086 | if (retval) |
1077 | goto hiddev_init_fail; | 1087 | goto hiddev_init_fail; |
@@ -1084,6 +1094,8 @@ static int __init hid_init(void) | |||
1084 | usb_register_fail: | 1094 | usb_register_fail: |
1085 | hiddev_exit(); | 1095 | hiddev_exit(); |
1086 | hiddev_init_fail: | 1096 | hiddev_init_fail: |
1097 | usbhid_quirks_exit(); | ||
1098 | usbhid_quirks_init_fail: | ||
1087 | return retval; | 1099 | return retval; |
1088 | } | 1100 | } |
1089 | 1101 | ||
@@ -1091,6 +1103,7 @@ static void __exit hid_exit(void) | |||
1091 | { | 1103 | { |
1092 | usb_deregister(&hid_driver); | 1104 | usb_deregister(&hid_driver); |
1093 | hiddev_exit(); | 1105 | hiddev_exit(); |
1106 | usbhid_quirks_exit(); | ||
1094 | } | 1107 | } |
1095 | 1108 | ||
1096 | module_init(hid_init); | 1109 | module_init(hid_init); |