diff --git a/[refs] b/[refs] index fd6fc58c8015..9eba8acdad31 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: affbb8c6e690be2196258e65f3cc92d55b18d9fa +refs/heads/master: 44cb2db10d05fc263c9fa44347d350d4f7f5890c diff --git a/trunk/drivers/hid/Kconfig b/trunk/drivers/hid/Kconfig index aba8facecce8..7831a0318d3c 100644 --- a/trunk/drivers/hid/Kconfig +++ b/trunk/drivers/hid/Kconfig @@ -152,13 +152,6 @@ config HID_GYRATION ---help--- Support for Gyration remote control. -config HID_TWINHAN - tristate "Twinhan" if EMBEDDED - depends on USB_HID - default !EMBEDDED - ---help--- - Support for Twinhan IR remote control. - config HID_KENSINGTON tristate "Kensington" if EMBEDDED depends on USB_HID @@ -183,7 +176,6 @@ config LOGITECH_FF - Logitech WingMan Cordless RumblePad 2 - Logitech WingMan Force 3D - Logitech Formula Force EX - - Logitech WingMan Formula Force GP - Logitech MOMO Force wheel and if you want to enable force feedback for them. @@ -322,9 +314,9 @@ config THRUSTMASTER_FF depends on HID_THRUSTMASTER select INPUT_FF_MEMLESS ---help--- - Say Y here if you have a THRUSTMASTER FireStore Dual Power 2 or 3, - a THRUSTMASTER Dual Trigger 3-in-1 or a THRUSTMASTER Ferrari GT - Rumble Force or Force Feedback Wheel. + Say Y here if you have a THRUSTMASTER FireStore Dual Power 2 or + a THRUSTMASTER Ferrari GT Rumble Force or Force Feedback Wheel and + want to enable force feedback support for it. config HID_WACOM tristate "Wacom Bluetooth devices support" if EMBEDDED diff --git a/trunk/drivers/hid/Makefile b/trunk/drivers/hid/Makefile index 9b9271d6527a..db35151673b1 100644 --- a/trunk/drivers/hid/Makefile +++ b/trunk/drivers/hid/Makefile @@ -40,7 +40,6 @@ obj-$(CONFIG_HID_SUNPLUS) += hid-sunplus.o obj-$(CONFIG_HID_GREENASIA) += hid-gaff.o obj-$(CONFIG_HID_THRUSTMASTER) += hid-tmff.o obj-$(CONFIG_HID_TOPSEED) += hid-topseed.o -obj-$(CONFIG_HID_TWINHAN) += hid-twinhan.o obj-$(CONFIG_HID_ZEROPLUS) += hid-zpff.o obj-$(CONFIG_HID_WACOM) += hid-wacom.o diff --git a/trunk/drivers/hid/hid-a4tech.c b/trunk/drivers/hid/hid-a4tech.c index df474c699fb8..42ea359e94cf 100644 --- a/trunk/drivers/hid/hid-a4tech.c +++ b/trunk/drivers/hid/hid-a4tech.c @@ -145,12 +145,12 @@ static struct hid_driver a4_driver = { .remove = a4_remove, }; -static int __init a4_init(void) +static int a4_init(void) { return hid_register_driver(&a4_driver); } -static void __exit a4_exit(void) +static void a4_exit(void) { hid_unregister_driver(&a4_driver); } diff --git a/trunk/drivers/hid/hid-apple.c b/trunk/drivers/hid/hid-apple.c index 4b96e7a898cf..303ccce05bb3 100644 --- a/trunk/drivers/hid/hid-apple.c +++ b/trunk/drivers/hid/hid-apple.c @@ -451,7 +451,7 @@ static struct hid_driver apple_driver = { .input_mapped = apple_input_mapped, }; -static int __init apple_init(void) +static int apple_init(void) { int ret; @@ -462,7 +462,7 @@ static int __init apple_init(void) return ret; } -static void __exit apple_exit(void) +static void apple_exit(void) { hid_unregister_driver(&apple_driver); } diff --git a/trunk/drivers/hid/hid-belkin.c b/trunk/drivers/hid/hid-belkin.c index 4ce7aa3a519f..2f6723133a4b 100644 --- a/trunk/drivers/hid/hid-belkin.c +++ b/trunk/drivers/hid/hid-belkin.c @@ -88,12 +88,12 @@ static struct hid_driver belkin_driver = { .probe = belkin_probe, }; -static int __init belkin_init(void) +static int belkin_init(void) { return hid_register_driver(&belkin_driver); } -static void __exit belkin_exit(void) +static void belkin_exit(void) { hid_unregister_driver(&belkin_driver); } diff --git a/trunk/drivers/hid/hid-cherry.c b/trunk/drivers/hid/hid-cherry.c index 7e597d7f770f..ab8209e7e45c 100644 --- a/trunk/drivers/hid/hid-cherry.c +++ b/trunk/drivers/hid/hid-cherry.c @@ -70,12 +70,12 @@ static struct hid_driver ch_driver = { .input_mapping = ch_input_mapping, }; -static int __init ch_init(void) +static int ch_init(void) { return hid_register_driver(&ch_driver); } -static void __exit ch_exit(void) +static void ch_exit(void) { hid_unregister_driver(&ch_driver); } diff --git a/trunk/drivers/hid/hid-chicony.c b/trunk/drivers/hid/hid-chicony.c index 8965ad93d510..7f91076d8493 100644 --- a/trunk/drivers/hid/hid-chicony.c +++ b/trunk/drivers/hid/hid-chicony.c @@ -63,12 +63,12 @@ static struct hid_driver ch_driver = { .input_mapping = ch_input_mapping, }; -static int __init ch_init(void) +static int ch_init(void) { return hid_register_driver(&ch_driver); } -static void __exit ch_exit(void) +static void ch_exit(void) { hid_unregister_driver(&ch_driver); } diff --git a/trunk/drivers/hid/hid-core.c b/trunk/drivers/hid/hid-core.c index 48567d8fe358..5eb10c2ce665 100644 --- a/trunk/drivers/hid/hid-core.c +++ b/trunk/drivers/hid/hid-core.c @@ -1292,7 +1292,6 @@ static const struct hid_device_id hid_blacklist[] = { { HID_USB_DEVICE(USB_VENDOR_ID_LOGITECH, USB_DEVICE_ID_LOGITECH_RUMBLEPAD) }, { HID_USB_DEVICE(USB_VENDOR_ID_LOGITECH, USB_DEVICE_ID_LOGITECH_RUMBLEPAD2_2) }, { HID_USB_DEVICE(USB_VENDOR_ID_LOGITECH, USB_DEVICE_ID_LOGITECH_WINGMAN_F3D) }, - { HID_USB_DEVICE(USB_VENDOR_ID_LOGITECH, USB_DEVICE_ID_LOGITECH_WINGMAN_FFG ) }, { HID_USB_DEVICE(USB_VENDOR_ID_LOGITECH, USB_DEVICE_ID_LOGITECH_FORCE3D_PRO) }, { HID_USB_DEVICE(USB_VENDOR_ID_LOGITECH, USB_DEVICE_ID_LOGITECH_MOMO_WHEEL) }, { HID_USB_DEVICE(USB_VENDOR_ID_LOGITECH, USB_DEVICE_ID_LOGITECH_MOMO_WHEEL2) }, @@ -1312,12 +1311,9 @@ static const struct hid_device_id hid_blacklist[] = { { HID_USB_DEVICE(USB_VENDOR_ID_SUNPLUS, USB_DEVICE_ID_SUNPLUS_WDESKTOP) }, { HID_USB_DEVICE(USB_VENDOR_ID_THRUSTMASTER, 0xb300) }, { HID_USB_DEVICE(USB_VENDOR_ID_THRUSTMASTER, 0xb304) }, - { HID_USB_DEVICE(USB_VENDOR_ID_THRUSTMASTER, 0xb323) }, - { HID_USB_DEVICE(USB_VENDOR_ID_THRUSTMASTER, 0xb324) }, { HID_USB_DEVICE(USB_VENDOR_ID_THRUSTMASTER, 0xb651) }, { HID_USB_DEVICE(USB_VENDOR_ID_THRUSTMASTER, 0xb654) }, { HID_USB_DEVICE(USB_VENDOR_ID_TOPSEED, USB_DEVICE_ID_TOPSEED_CYBERLINK) }, - { HID_USB_DEVICE(USB_VENDOR_ID_TWINHAN, USB_DEVICE_ID_TWINHAN_IR_REMOTE) }, { HID_USB_DEVICE(USB_VENDOR_ID_WISEGROUP, USB_DEVICE_ID_SMARTJOY_PLUS) }, { HID_BLUETOOTH_DEVICE(USB_VENDOR_ID_WACOM, USB_DEVICE_ID_WACOM_GRAPHIRE_BLUETOOTH) }, { HID_USB_DEVICE(USB_VENDOR_ID_ZEROPLUS, 0x0005) }, @@ -1626,8 +1622,12 @@ static const struct hid_device_id hid_ignore_list[] = { { HID_USB_DEVICE(USB_VENDOR_ID_PANJIT, 0x0002) }, { HID_USB_DEVICE(USB_VENDOR_ID_PANJIT, 0x0003) }, { HID_USB_DEVICE(USB_VENDOR_ID_PANJIT, 0x0004) }, - { HID_USB_DEVICE(USB_VENDOR_ID_PHILIPS, USB_DEVICE_ID_PHILIPS_IEEE802154_DONGLE) }, { HID_USB_DEVICE(USB_VENDOR_ID_POWERCOM, USB_DEVICE_ID_POWERCOM_UPS) }, + { HID_USB_DEVICE(USB_VENDOR_ID_SOUNDGRAPH, USB_DEVICE_ID_SOUNDGRAPH_IMON_LCD) }, + { HID_USB_DEVICE(USB_VENDOR_ID_SOUNDGRAPH, USB_DEVICE_ID_SOUNDGRAPH_IMON_LCD2) }, + { HID_USB_DEVICE(USB_VENDOR_ID_SOUNDGRAPH, USB_DEVICE_ID_SOUNDGRAPH_IMON_LCD3) }, + { HID_USB_DEVICE(USB_VENDOR_ID_SOUNDGRAPH, USB_DEVICE_ID_SOUNDGRAPH_IMON_LCD4) }, + { HID_USB_DEVICE(USB_VENDOR_ID_SOUNDGRAPH, USB_DEVICE_ID_SOUNDGRAPH_IMON_LCD5) }, { HID_USB_DEVICE(USB_VENDOR_ID_TENX, USB_DEVICE_ID_TENX_IBUDDY1) }, { HID_USB_DEVICE(USB_VENDOR_ID_TENX, USB_DEVICE_ID_TENX_IBUDDY2) }, { HID_USB_DEVICE(USB_VENDOR_ID_VERNIER, USB_DEVICE_ID_VERNIER_LABPRO) }, @@ -1694,11 +1694,6 @@ static bool hid_ignore(struct hid_device *hdev) hdev->product <= USB_DEVICE_ID_LOGITECH_HARMONY_LAST) return true; break; - case USB_VENDOR_ID_SOUNDGRAPH: - if (hdev->product >= USB_DEVICE_ID_SOUNDGRAPH_IMON_FIRST && - hdev->product <= USB_DEVICE_ID_SOUNDGRAPH_IMON_LAST) - return true; - break; } if (hdev->type == HID_TYPE_USBMOUSE && diff --git a/trunk/drivers/hid/hid-cypress.c b/trunk/drivers/hid/hid-cypress.c index 62e9cb10e88c..9d6d3b91773b 100644 --- a/trunk/drivers/hid/hid-cypress.c +++ b/trunk/drivers/hid/hid-cypress.c @@ -141,12 +141,12 @@ static struct hid_driver cp_driver = { .probe = cp_probe, }; -static int __init cp_init(void) +static int cp_init(void) { return hid_register_driver(&cp_driver); } -static void __exit cp_exit(void) +static void cp_exit(void) { hid_unregister_driver(&cp_driver); } diff --git a/trunk/drivers/hid/hid-ezkey.c b/trunk/drivers/hid/hid-ezkey.c index ca1163e9d42d..0a1fe054799b 100644 --- a/trunk/drivers/hid/hid-ezkey.c +++ b/trunk/drivers/hid/hid-ezkey.c @@ -78,12 +78,12 @@ static struct hid_driver ez_driver = { .event = ez_event, }; -static int __init ez_init(void) +static int ez_init(void) { return hid_register_driver(&ez_driver); } -static void __exit ez_exit(void) +static void ez_exit(void) { hid_unregister_driver(&ez_driver); } diff --git a/trunk/drivers/hid/hid-gyration.c b/trunk/drivers/hid/hid-gyration.c index cab13e8c7d29..d42d222097a8 100644 --- a/trunk/drivers/hid/hid-gyration.c +++ b/trunk/drivers/hid/hid-gyration.c @@ -81,12 +81,12 @@ static struct hid_driver gyration_driver = { .event = gyration_event, }; -static int __init gyration_init(void) +static int gyration_init(void) { return hid_register_driver(&gyration_driver); } -static void __exit gyration_exit(void) +static void gyration_exit(void) { hid_unregister_driver(&gyration_driver); } diff --git a/trunk/drivers/hid/hid-ids.h b/trunk/drivers/hid/hid-ids.h index adbef5d069c4..630101037921 100644 --- a/trunk/drivers/hid/hid-ids.h +++ b/trunk/drivers/hid/hid-ids.h @@ -296,7 +296,6 @@ #define USB_DEVICE_ID_LOGITECH_WINGMAN_F3D 0xc283 #define USB_DEVICE_ID_LOGITECH_FORCE3D_PRO 0xc286 #define USB_DEVICE_ID_LOGITECH_WHEEL 0xc294 -#define USB_DEVICE_ID_LOGITECH_WINGMAN_FFG 0xc293 #define USB_DEVICE_ID_LOGITECH_MOMO_WHEEL 0xc295 #define USB_DEVICE_ID_LOGITECH_G25_WHEEL 0xc299 #define USB_DEVICE_ID_LOGITECH_ELITE_KBD 0xc30a @@ -360,9 +359,6 @@ #define USB_VENDOR_ID_PETALYNX 0x18b1 #define USB_DEVICE_ID_PETALYNX_MAXTER_REMOTE 0x0037 -#define USB_VENDOR_ID_PHILIPS 0x0471 -#define USB_DEVICE_ID_PHILIPS_IEEE802154_DONGLE 0x0617 - #define USB_VENDOR_ID_PLAYDOTCOM 0x0b43 #define USB_DEVICE_ID_PLAYDOTCOM_EMS_USBII 0x0003 @@ -380,8 +376,11 @@ #define USB_DEVICE_ID_SONY_PS3_CONTROLLER 0x0268 #define USB_VENDOR_ID_SOUNDGRAPH 0x15c2 -#define USB_DEVICE_ID_SOUNDGRAPH_IMON_FIRST 0x0034 -#define USB_DEVICE_ID_SOUNDGRAPH_IMON_LAST 0x0046 +#define USB_DEVICE_ID_SOUNDGRAPH_IMON_LCD 0x0038 +#define USB_DEVICE_ID_SOUNDGRAPH_IMON_LCD2 0x0036 +#define USB_DEVICE_ID_SOUNDGRAPH_IMON_LCD3 0x0034 +#define USB_DEVICE_ID_SOUNDGRAPH_IMON_LCD4 0x0044 +#define USB_DEVICE_ID_SOUNDGRAPH_IMON_LCD5 0x0045 #define USB_VENDOR_ID_SUN 0x0430 #define USB_DEVICE_ID_RARITAN_KVM_DONGLE 0xcdab @@ -404,9 +403,6 @@ #define USB_VENDOR_ID_TURBOX 0x062a #define USB_DEVICE_ID_TURBOX_KEYBOARD 0x0201 -#define USB_VENDOR_ID_TWINHAN 0x6253 -#define USB_DEVICE_ID_TWINHAN_IR_REMOTE 0x0100 - #define USB_VENDOR_ID_UCLOGIC 0x5543 #define USB_DEVICE_ID_UCLOGIC_TABLET_PF1209 0x0042 diff --git a/trunk/drivers/hid/hid-kensington.c b/trunk/drivers/hid/hid-kensington.c index a5b4016e9bd7..7353bd79cbe9 100644 --- a/trunk/drivers/hid/hid-kensington.c +++ b/trunk/drivers/hid/hid-kensington.c @@ -48,12 +48,12 @@ static struct hid_driver ks_driver = { .input_mapping = ks_input_mapping, }; -static int __init ks_init(void) +static int ks_init(void) { return hid_register_driver(&ks_driver); } -static void __exit ks_exit(void) +static void ks_exit(void) { hid_unregister_driver(&ks_driver); } diff --git a/trunk/drivers/hid/hid-kye.c b/trunk/drivers/hid/hid-kye.c index f8871712b7b5..72ee3fec56d9 100644 --- a/trunk/drivers/hid/hid-kye.c +++ b/trunk/drivers/hid/hid-kye.c @@ -54,12 +54,12 @@ static struct hid_driver kye_driver = { .report_fixup = kye_report_fixup, }; -static int __init kye_init(void) +static int kye_init(void) { return hid_register_driver(&kye_driver); } -static void __exit kye_exit(void) +static void kye_exit(void) { hid_unregister_driver(&kye_driver); } diff --git a/trunk/drivers/hid/hid-lg.c b/trunk/drivers/hid/hid-lg.c index 0f870a3243ed..7afbaa0efd18 100644 --- a/trunk/drivers/hid/hid-lg.c +++ b/trunk/drivers/hid/hid-lg.c @@ -299,8 +299,6 @@ static const struct hid_device_id lg_devices[] = { .driver_data = LG_FF }, { HID_USB_DEVICE(USB_VENDOR_ID_LOGITECH, USB_DEVICE_ID_LOGITECH_G25_WHEEL), .driver_data = LG_FF }, - { HID_USB_DEVICE(USB_VENDOR_ID_LOGITECH, USB_DEVICE_ID_LOGITECH_WINGMAN_FFG ), - .driver_data = LG_FF }, { HID_USB_DEVICE(USB_VENDOR_ID_LOGITECH, USB_DEVICE_ID_LOGITECH_RUMBLEPAD2), .driver_data = LG_FF2 }, { } @@ -317,12 +315,12 @@ static struct hid_driver lg_driver = { .probe = lg_probe, }; -static int __init lg_init(void) +static int lg_init(void) { return hid_register_driver(&lg_driver); } -static void __exit lg_exit(void) +static void lg_exit(void) { hid_unregister_driver(&lg_driver); } diff --git a/trunk/drivers/hid/hid-lgff.c b/trunk/drivers/hid/hid-lgff.c index 987abebe0829..56099709581c 100644 --- a/trunk/drivers/hid/hid-lgff.c +++ b/trunk/drivers/hid/hid-lgff.c @@ -67,7 +67,6 @@ static const struct dev_type devices[] = { { 0x046d, 0xc219, ff_rumble }, { 0x046d, 0xc283, ff_joystick }, { 0x046d, 0xc286, ff_joystick_ac }, - { 0x046d, 0xc293, ff_joystick }, { 0x046d, 0xc294, ff_wheel }, { 0x046d, 0xc295, ff_joystick }, { 0x046d, 0xca03, ff_wheel }, @@ -151,6 +150,11 @@ int lgff_init(struct hid_device* hid) /* Check that the report looks ok */ report = list_entry(report_list->next, struct hid_report, list); + if (!report) { + err_hid("NULL output report"); + return -1; + } + field = report->field[0]; if (!field) { err_hid("NULL field"); diff --git a/trunk/drivers/hid/hid-microsoft.c b/trunk/drivers/hid/hid-microsoft.c index 359cc447c6c6..5e9e37a0506d 100644 --- a/trunk/drivers/hid/hid-microsoft.c +++ b/trunk/drivers/hid/hid-microsoft.c @@ -197,12 +197,12 @@ static struct hid_driver ms_driver = { .probe = ms_probe, }; -static int __init ms_init(void) +static int ms_init(void) { return hid_register_driver(&ms_driver); } -static void __exit ms_exit(void) +static void ms_exit(void) { hid_unregister_driver(&ms_driver); } diff --git a/trunk/drivers/hid/hid-monterey.c b/trunk/drivers/hid/hid-monterey.c index 2cd05aa244b9..240f87618be6 100644 --- a/trunk/drivers/hid/hid-monterey.c +++ b/trunk/drivers/hid/hid-monterey.c @@ -65,12 +65,12 @@ static struct hid_driver mr_driver = { .input_mapping = mr_input_mapping, }; -static int __init mr_init(void) +static int mr_init(void) { return hid_register_driver(&mr_driver); } -static void __exit mr_exit(void) +static void mr_exit(void) { hid_unregister_driver(&mr_driver); } diff --git a/trunk/drivers/hid/hid-ntrig.c b/trunk/drivers/hid/hid-ntrig.c index 49ce69d7bba7..75ed9d2c1a36 100644 --- a/trunk/drivers/hid/hid-ntrig.c +++ b/trunk/drivers/hid/hid-ntrig.c @@ -27,9 +27,6 @@ struct ntrig_data { __s32 x, y, id, w, h; char reading_a_point, found_contact_id; - char pen_active; - char finger_active; - char inverted; }; /* @@ -66,7 +63,10 @@ static int ntrig_input_mapping(struct hid_device *hdev, struct hid_input *hi, case HID_UP_DIGITIZER: switch (usage->hid) { /* we do not want to map these for now */ + case HID_DG_INVERT: /* value is always 0 */ + case HID_DG_ERASER: /* value is always 0 */ case HID_DG_CONTACTID: /* value is useless */ + case HID_DG_BARRELSWITCH: /* doubtful */ case HID_DG_INPUTMODE: case HID_DG_DEVICEINDEX: case HID_DG_CONTACTCOUNT: @@ -125,18 +125,6 @@ static int ntrig_event (struct hid_device *hid, struct hid_field *field, if (hid->claimed & HID_CLAIMED_INPUT) { switch (usage->hid) { - - case HID_DG_INRANGE: - if (field->application & 0x3) - nd->pen_active = (value != 0); - else - nd->finger_active = (value != 0); - return 0; - - case HID_DG_INVERT: - nd->inverted = value; - return 0; - case HID_GD_X: nd->x = value; nd->reading_a_point = 1; @@ -159,11 +147,7 @@ static int ntrig_event (struct hid_device *hid, struct hid_field *field, * report received in a finger event. We want * to emit a normal (X, Y) position */ - if (!nd->found_contact_id) { - if (nd->pen_active && nd->finger_active) { - input_report_key(input, BTN_TOOL_DOUBLETAP, 0); - input_report_key(input, BTN_TOOL_DOUBLETAP, 1); - } + if (! nd->found_contact_id) { input_event(input, EV_ABS, ABS_X, nd->x); input_event(input, EV_ABS, ABS_Y, nd->y); } @@ -175,14 +159,6 @@ static int ntrig_event (struct hid_device *hid, struct hid_field *field, * to emit a normal (X, Y) position */ if (! nd->found_contact_id) { - if (nd->pen_active && nd->finger_active) { - input_report_key(input, - nd->inverted ? BTN_TOOL_RUBBER : BTN_TOOL_PEN - , 0); - input_report_key(input, - nd->inverted ? BTN_TOOL_RUBBER : BTN_TOOL_PEN - , 1); - } input_event(input, EV_ABS, ABS_X, nd->x); input_event(input, EV_ABS, ABS_Y, nd->y); input_event(input, EV_ABS, ABS_PRESSURE, value); @@ -257,7 +233,6 @@ static int ntrig_probe(struct hid_device *hdev, const struct hid_device_id *id) if (ret) kfree (nd); - return ret; } @@ -290,12 +265,12 @@ static struct hid_driver ntrig_driver = { .event = ntrig_event, }; -static int __init ntrig_init(void) +static int ntrig_init(void) { return hid_register_driver(&ntrig_driver); } -static void __exit ntrig_exit(void) +static void ntrig_exit(void) { hid_unregister_driver(&ntrig_driver); } diff --git a/trunk/drivers/hid/hid-petalynx.c b/trunk/drivers/hid/hid-petalynx.c index 500fbd0652dc..2e83e8ff891a 100644 --- a/trunk/drivers/hid/hid-petalynx.c +++ b/trunk/drivers/hid/hid-petalynx.c @@ -105,12 +105,12 @@ static struct hid_driver pl_driver = { .probe = pl_probe, }; -static int __init pl_init(void) +static int pl_init(void) { return hid_register_driver(&pl_driver); } -static void __exit pl_exit(void) +static void pl_exit(void) { hid_unregister_driver(&pl_driver); } diff --git a/trunk/drivers/hid/hid-pl.c b/trunk/drivers/hid/hid-pl.c index c6d7dbc935b1..4db9a3483760 100644 --- a/trunk/drivers/hid/hid-pl.c +++ b/trunk/drivers/hid/hid-pl.c @@ -217,12 +217,12 @@ static struct hid_driver pl_driver = { .probe = pl_probe, }; -static int __init pl_init(void) +static int pl_init(void) { return hid_register_driver(&pl_driver); } -static void __exit pl_exit(void) +static void pl_exit(void) { hid_unregister_driver(&pl_driver); } diff --git a/trunk/drivers/hid/hid-samsung.c b/trunk/drivers/hid/hid-samsung.c index 5b222eed0692..07083aa6c19a 100644 --- a/trunk/drivers/hid/hid-samsung.c +++ b/trunk/drivers/hid/hid-samsung.c @@ -25,48 +25,25 @@ /* * Samsung IrDA remote controller (reports as Cypress USB Mouse). * - * There are several variants for 0419:0001: - * - * 1. 184 byte report descriptor * Vendor specific report #4 has a size of 48 bit, * and therefore is not accepted when inspecting the descriptors. * As a workaround we reinterpret the report as: * Variable type, count 6, size 8 bit, log. maximum 255 * The burden to reconstruct the data is moved into user space. - * - * 2. 203 byte report descriptor - * Report #4 has an array field with logical range 0..18 instead of 1..15. - * - * 3. 135 byte report descriptor - * Report #4 has an array field with logical range 0..17 instead of 1..14. */ static void samsung_report_fixup(struct hid_device *hdev, __u8 *rdesc, unsigned int rsize) { - if (rsize == 184 && rdesc[175] == 0x25 && rdesc[176] == 0x40 && + if (rsize >= 182 && rdesc[175] == 0x25 && rdesc[176] == 0x40 && rdesc[177] == 0x75 && rdesc[178] == 0x30 && rdesc[179] == 0x95 && rdesc[180] == 0x01 && rdesc[182] == 0x40) { - dev_info(&hdev->dev, "fixing up Samsung IrDA %d byte report " - "descriptor\n", 184); + dev_info(&hdev->dev, "fixing up Samsung IrDA report " + "descriptor\n"); rdesc[176] = 0xff; rdesc[178] = 0x08; rdesc[180] = 0x06; rdesc[182] = 0x42; - } else - if (rsize == 203 && rdesc[192] == 0x15 && rdesc[193] == 0x0 && - rdesc[194] == 0x25 && rdesc[195] == 0x12) { - dev_info(&hdev->dev, "fixing up Samsung IrDA %d byte report " - "descriptor\n", 203); - rdesc[193] = 0x1; - rdesc[195] = 0xf; - } else - if (rsize == 135 && rdesc[124] == 0x15 && rdesc[125] == 0x0 && - rdesc[126] == 0x25 && rdesc[127] == 0x11) { - dev_info(&hdev->dev, "fixing up Samsung IrDA %d byte report " - "descriptor\n", 135); - rdesc[125] = 0x1; - rdesc[127] = 0xe; } } @@ -74,7 +51,6 @@ static int samsung_probe(struct hid_device *hdev, const struct hid_device_id *id) { int ret; - unsigned int cmask = HID_CONNECT_DEFAULT; ret = hid_parse(hdev); if (ret) { @@ -82,13 +58,8 @@ static int samsung_probe(struct hid_device *hdev, goto err_free; } - if (hdev->rsize == 184) { - /* disable hidinput, force hiddev */ - cmask = (cmask & ~HID_CONNECT_HIDINPUT) | - HID_CONNECT_HIDDEV_FORCE; - } - - ret = hid_hw_start(hdev, cmask); + ret = hid_hw_start(hdev, (HID_CONNECT_DEFAULT & ~HID_CONNECT_HIDINPUT) | + HID_CONNECT_HIDDEV_FORCE); if (ret) { dev_err(&hdev->dev, "hw start failed\n"); goto err_free; @@ -112,12 +83,12 @@ static struct hid_driver samsung_driver = { .probe = samsung_probe, }; -static int __init samsung_init(void) +static int samsung_init(void) { return hid_register_driver(&samsung_driver); } -static void __exit samsung_exit(void) +static void samsung_exit(void) { hid_unregister_driver(&samsung_driver); } diff --git a/trunk/drivers/hid/hid-sjoy.c b/trunk/drivers/hid/hid-sjoy.c index 203c438b016f..eab169e5c371 100644 --- a/trunk/drivers/hid/hid-sjoy.c +++ b/trunk/drivers/hid/hid-sjoy.c @@ -163,12 +163,12 @@ static struct hid_driver sjoy_driver = { .probe = sjoy_probe, }; -static int __init sjoy_init(void) +static int sjoy_init(void) { return hid_register_driver(&sjoy_driver); } -static void __exit sjoy_exit(void) +static void sjoy_exit(void) { hid_unregister_driver(&sjoy_driver); } diff --git a/trunk/drivers/hid/hid-sony.c b/trunk/drivers/hid/hid-sony.c index 4e8450228a24..c2599388a350 100644 --- a/trunk/drivers/hid/hid-sony.c +++ b/trunk/drivers/hid/hid-sony.c @@ -135,12 +135,12 @@ static struct hid_driver sony_driver = { .report_fixup = sony_report_fixup, }; -static int __init sony_init(void) +static int sony_init(void) { return hid_register_driver(&sony_driver); } -static void __exit sony_exit(void) +static void sony_exit(void) { hid_unregister_driver(&sony_driver); } diff --git a/trunk/drivers/hid/hid-sunplus.c b/trunk/drivers/hid/hid-sunplus.c index 438107d9f1b2..e0a8fd36a85b 100644 --- a/trunk/drivers/hid/hid-sunplus.c +++ b/trunk/drivers/hid/hid-sunplus.c @@ -65,12 +65,12 @@ static struct hid_driver sp_driver = { .input_mapping = sp_input_mapping, }; -static int __init sp_init(void) +static int sp_init(void) { return hid_register_driver(&sp_driver); } -static void __exit sp_exit(void) +static void sp_exit(void) { hid_unregister_driver(&sp_driver); } diff --git a/trunk/drivers/hid/hid-tmff.c b/trunk/drivers/hid/hid-tmff.c index 167ea746fb9c..fcd6ccd02fee 100644 --- a/trunk/drivers/hid/hid-tmff.c +++ b/trunk/drivers/hid/hid-tmff.c @@ -243,11 +243,7 @@ static int tm_probe(struct hid_device *hdev, const struct hid_device_id *id) static const struct hid_device_id tm_devices[] = { { HID_USB_DEVICE(USB_VENDOR_ID_THRUSTMASTER, 0xb300), .driver_data = (unsigned long)ff_rumble }, - { HID_USB_DEVICE(USB_VENDOR_ID_THRUSTMASTER, 0xb304), /* FireStorm Dual Power 2 (and 3) */ - .driver_data = (unsigned long)ff_rumble }, - { HID_USB_DEVICE(USB_VENDOR_ID_THRUSTMASTER, 0xb323), /* Dual Trigger 3-in-1 (PC Mode) */ - .driver_data = (unsigned long)ff_rumble }, - { HID_USB_DEVICE(USB_VENDOR_ID_THRUSTMASTER, 0xb324), /* Dual Trigger 3-in-1 (PS3 Mode) */ + { HID_USB_DEVICE(USB_VENDOR_ID_THRUSTMASTER, 0xb304), .driver_data = (unsigned long)ff_rumble }, { HID_USB_DEVICE(USB_VENDOR_ID_THRUSTMASTER, 0xb651), /* FGT Rumble Force Wheel */ .driver_data = (unsigned long)ff_rumble }, @@ -263,12 +259,12 @@ static struct hid_driver tm_driver = { .probe = tm_probe, }; -static int __init tm_init(void) +static int tm_init(void) { return hid_register_driver(&tm_driver); } -static void __exit tm_exit(void) +static void tm_exit(void) { hid_unregister_driver(&tm_driver); } diff --git a/trunk/drivers/hid/hid-topseed.c b/trunk/drivers/hid/hid-topseed.c index 6925eda1081a..152ccfabeba5 100644 --- a/trunk/drivers/hid/hid-topseed.c +++ b/trunk/drivers/hid/hid-topseed.c @@ -60,12 +60,12 @@ static struct hid_driver ts_driver = { .input_mapping = ts_input_mapping, }; -static int __init ts_init(void) +static int ts_init(void) { return hid_register_driver(&ts_driver); } -static void __exit ts_exit(void) +static void ts_exit(void) { hid_unregister_driver(&ts_driver); } diff --git a/trunk/drivers/hid/hid-twinhan.c b/trunk/drivers/hid/hid-twinhan.c deleted file mode 100644 index b05f602c051e..000000000000 --- a/trunk/drivers/hid/hid-twinhan.c +++ /dev/null @@ -1,147 +0,0 @@ -/* - * HID driver for TwinHan IR remote control - * - * Based on hid-gyration.c - * - * Copyright (c) 2009 Bruno Prémont - */ - -/* - * This program is free software; you can redistribute it and/or modify it - * under the terms of the GNU General Public License as published by the Free - * Software Foundation; either version 2 of the License. - */ - -#include -#include -#include -#include - -#include "hid-ids.h" - -/* Remote control key layout + listing: - * - * Full Screen Power - * KEY_SCREEN KEY_POWER2 - * - * 1 2 3 - * KEY_NUMERIC_1 KEY_NUMERIC_2 KEY_NUMERIC_3 - * - * 4 5 6 - * KEY_NUMERIC_4 KEY_NUMERIC_5 KEY_NUMERIC_6 - * - * 7 8 9 - * KEY_NUMERIC_7 KEY_NUMERIC_8 KEY_NUMERIC_9 - * - * REC 0 Favorite - * KEY_RECORD KEY_NUMERIC_0 KEY_FAVORITES - * - * Rewind Forward - * KEY_REWIND CH+ KEY_FORWARD - * KEY_CHANNELUP - * - * VOL- > VOL+ - * KEY_VOLUMEDOWN KEY_PLAY KEY_VOLUMEUP - * - * CH- - * KEY_CHANNELDOWN - * Recall Stop - * KEY_RESTART KEY_STOP - * - * Timeshift/Pause Mute Cancel - * KEY_PAUSE KEY_MUTE KEY_CANCEL - * - * Capture Preview EPG - * KEY_PRINT KEY_PROGRAM KEY_EPG - * - * Record List Tab Teletext - * KEY_LIST KEY_TAB KEY_TEXT - */ - -#define th_map_key_clear(c) hid_map_usage_clear(hi, usage, bit, max, \ - EV_KEY, (c)) -static int twinhan_input_mapping(struct hid_device *hdev, struct hid_input *hi, - struct hid_field *field, struct hid_usage *usage, - unsigned long **bit, int *max) -{ - if ((usage->hid & HID_USAGE_PAGE) != HID_UP_KEYBOARD) - return 0; - - switch (usage->hid & HID_USAGE) { - /* Map all keys from Twinhan Remote */ - case 0x004: th_map_key_clear(KEY_TEXT); break; - case 0x006: th_map_key_clear(KEY_RESTART); break; - case 0x008: th_map_key_clear(KEY_EPG); break; - case 0x00c: th_map_key_clear(KEY_REWIND); break; - case 0x00e: th_map_key_clear(KEY_PROGRAM); break; - case 0x00f: th_map_key_clear(KEY_LIST); break; - case 0x010: th_map_key_clear(KEY_MUTE); break; - case 0x011: th_map_key_clear(KEY_FORWARD); break; - case 0x013: th_map_key_clear(KEY_PRINT); break; - case 0x017: th_map_key_clear(KEY_PAUSE); break; - case 0x019: th_map_key_clear(KEY_FAVORITES); break; - case 0x01d: th_map_key_clear(KEY_SCREEN); break; - case 0x01e: th_map_key_clear(KEY_NUMERIC_1); break; - case 0x01f: th_map_key_clear(KEY_NUMERIC_2); break; - case 0x020: th_map_key_clear(KEY_NUMERIC_3); break; - case 0x021: th_map_key_clear(KEY_NUMERIC_4); break; - case 0x022: th_map_key_clear(KEY_NUMERIC_5); break; - case 0x023: th_map_key_clear(KEY_NUMERIC_6); break; - case 0x024: th_map_key_clear(KEY_NUMERIC_7); break; - case 0x025: th_map_key_clear(KEY_NUMERIC_8); break; - case 0x026: th_map_key_clear(KEY_NUMERIC_9); break; - case 0x027: th_map_key_clear(KEY_NUMERIC_0); break; - case 0x028: th_map_key_clear(KEY_PLAY); break; - case 0x029: th_map_key_clear(KEY_CANCEL); break; - case 0x02b: th_map_key_clear(KEY_TAB); break; - /* Power = 0x0e0 + 0x0e1 + 0x0e2 + 0x03f */ - case 0x03f: th_map_key_clear(KEY_POWER2); break; - case 0x04a: th_map_key_clear(KEY_RECORD); break; - case 0x04b: th_map_key_clear(KEY_CHANNELUP); break; - case 0x04d: th_map_key_clear(KEY_STOP); break; - case 0x04e: th_map_key_clear(KEY_CHANNELDOWN); break; - /* Volume down = 0x0e1 + 0x051 */ - case 0x051: th_map_key_clear(KEY_VOLUMEDOWN); break; - /* Volume up = 0x0e1 + 0x052 */ - case 0x052: th_map_key_clear(KEY_VOLUMEUP); break; - /* Kill the extra keys used for multi-key "power" and "volume" keys - * as well as continuously to release CTRL,ALT,META,... keys */ - case 0x0e0: - case 0x0e1: - case 0x0e2: - case 0x0e3: - case 0x0e4: - case 0x0e5: - case 0x0e6: - case 0x0e7: - default: - return -1; - } - return 1; -} - -static const struct hid_device_id twinhan_devices[] = { - { HID_USB_DEVICE(USB_VENDOR_ID_TWINHAN, USB_DEVICE_ID_TWINHAN_IR_REMOTE) }, - { } -}; -MODULE_DEVICE_TABLE(hid, twinhan_devices); - -static struct hid_driver twinhan_driver = { - .name = "twinhan", - .id_table = twinhan_devices, - .input_mapping = twinhan_input_mapping, -}; - -static int twinhan_init(void) -{ - return hid_register_driver(&twinhan_driver); -} - -static void twinhan_exit(void) -{ - hid_unregister_driver(&twinhan_driver); -} - -module_init(twinhan_init); -module_exit(twinhan_exit); -MODULE_LICENSE("GPL"); diff --git a/trunk/drivers/hid/hid-wacom.c b/trunk/drivers/hid/hid-wacom.c index 747542172242..1f9237f511e3 100644 --- a/trunk/drivers/hid/hid-wacom.c +++ b/trunk/drivers/hid/hid-wacom.c @@ -237,7 +237,7 @@ static struct hid_driver wacom_driver = { .raw_event = wacom_raw_event, }; -static int __init wacom_init(void) +static int wacom_init(void) { int ret; @@ -248,7 +248,7 @@ static int __init wacom_init(void) return ret; } -static void __exit wacom_exit(void) +static void wacom_exit(void) { hid_unregister_driver(&wacom_driver); } diff --git a/trunk/drivers/hid/hid-zpff.c b/trunk/drivers/hid/hid-zpff.c index a79f0d78c6be..57f710757bf4 100644 --- a/trunk/drivers/hid/hid-zpff.c +++ b/trunk/drivers/hid/hid-zpff.c @@ -152,12 +152,12 @@ static struct hid_driver zp_driver = { .probe = zp_probe, }; -static int __init zp_init(void) +static int zp_init(void) { return hid_register_driver(&zp_driver); } -static void __exit zp_exit(void) +static void zp_exit(void) { hid_unregister_driver(&zp_driver); } diff --git a/trunk/drivers/hid/usbhid/hid-core.c b/trunk/drivers/hid/usbhid/hid-core.c index 25f38a5af269..3c1fcb7640ab 100644 --- a/trunk/drivers/hid/usbhid/hid-core.c +++ b/trunk/drivers/hid/usbhid/hid-core.c @@ -489,8 +489,7 @@ static void hid_ctrl(struct urb *urb) wake_up(&usbhid->wait); } -static void __usbhid_submit_report(struct hid_device *hid, struct hid_report *report, - unsigned char dir) +void __usbhid_submit_report(struct hid_device *hid, struct hid_report *report, unsigned char dir) { int head; struct usbhid_device *usbhid = hid->driver_data; @@ -986,6 +985,7 @@ static int usbhid_start(struct hid_device *hid) INIT_WORK(&usbhid->restart_work, __usbhid_restart_queues); setup_timer(&usbhid->io_retry, hid_retry_timeout, (unsigned long) hid); + spin_lock_init(&usbhid->lock); spin_lock_init(&usbhid->lock); usbhid->intf = intf; diff --git a/trunk/drivers/hid/usbhid/hid-quirks.c b/trunk/drivers/hid/usbhid/hid-quirks.c index d8f7423f363e..0d9045aa2c4b 100644 --- a/trunk/drivers/hid/usbhid/hid-quirks.c +++ b/trunk/drivers/hid/usbhid/hid-quirks.c @@ -201,7 +201,7 @@ int usbhid_quirks_init(char **quirks_param) u32 quirks; int n = 0, m; - for (; quirks_param[n] && n < MAX_USBHID_BOOT_QUIRKS; n++) { + for (; n < MAX_USBHID_BOOT_QUIRKS && quirks_param[n]; n++) { m = sscanf(quirks_param[n], "0x%hx:0x%hx:0x%x", &idVendor, &idProduct, &quirks); diff --git a/trunk/drivers/hid/usbhid/hiddev.c b/trunk/drivers/hid/usbhid/hiddev.c index 4d1dc0cf1401..215b2addddbb 100644 --- a/trunk/drivers/hid/usbhid/hiddev.c +++ b/trunk/drivers/hid/usbhid/hiddev.c @@ -44,7 +44,7 @@ #define HIDDEV_MINOR_BASE 96 #define HIDDEV_MINORS 16 #endif -#define HIDDEV_BUFFER_SIZE 2048 +#define HIDDEV_BUFFER_SIZE 64 struct hiddev { int exist;