bk://kernel.bkbits.net/vojtech/input vojtech@silver.ucw.cz|ChangeSet|20050122101929|63227 vojtech # This is a BitKeeper generated diff -Nru style patch. # # ChangeSet # 2005/01/22 16:16:13-08:00 akpm@bix.(none) # Merge bk://kernel.bkbits.net/vojtech/input # into bix.(none):/usr/src/bk-input # # drivers/usb/input/hid-core.c # 2005/01/22 16:16:09-08:00 akpm@bix.(none) +0 -0 # Auto merged # # Documentation/kernel-parameters.txt # 2005/01/22 16:16:08-08:00 akpm@bix.(none) +0 -0 # Auto merged # # ChangeSet # 2005/01/22 11:19:29+01:00 vojtech@silver.ucw.cz # Merge silver.ucw.cz:/home/vojtech/bk/linus # into silver.ucw.cz:/home/vojtech/bk/input # # drivers/usb/input/hid-core.c # 2005/01/22 11:19:23+01:00 vojtech@silver.ucw.cz +0 -0 # Auto merged # # ChangeSet # 2005/01/19 14:21:45-08:00 akpm@bix.(none) # Merge bix.(none):/usr/src/bk25 into bix.(none):/usr/src/bk-input # # drivers/usb/input/hid-core.c # 2005/01/19 14:21:39-08:00 akpm@bix.(none) +0 -0 # Auto merged # # ChangeSet # 2005/01/13 13:32:43+01:00 vojtech@suse.cz # input: Handle -EILSEQ return code in the HID driver completion # handlers as unplug. # Flush request queue on unplug, too. # # Signed-off-by: Vojtech Pavlik # # drivers/usb/input/hid-core.c # 2005/01/13 13:32:33+01:00 vojtech@suse.cz +18 -5 # input: Handle -EILSEQ return code in the HID driver completion # handlers as unplug. # Flush request queue on unplug, too. # # Signed-off-by: Vojtech Pavlik # # ChangeSet # 2005/01/13 13:20:07+01:00 vojtech@suse.cz # Merge bkbits:input-new into suse.cz:/home/vojtech/bk/input # # Documentation/kernel-parameters.txt # 2005/01/13 13:20:04+01:00 vojtech@suse.cz +0 -0 # Auto merged # # ChangeSet # 2005/01/12 12:29:03-08:00 akpm@bix.(none) # Merge bix.(none):/usr/src/bk25 into bix.(none):/usr/src/bk-input # # Documentation/kernel-parameters.txt # 2005/01/12 12:28:59-08:00 akpm@bix.(none) +0 -0 # Auto merged # # ChangeSet # 2005/01/11 17:45:14+01:00 vojtech@silver.ucw.cz # input: Add support for H-Wheel on Microsoft Explorer and Logitech MX # USB HID mice. # # Signed-off-by: Vojtech Pavlik # # drivers/usb/input/hid.h # 2005/01/11 17:45:02+01:00 vojtech@silver.ucw.cz +1 -0 # input: Add support for H-Wheel on Microsoft Explorer and Logitech MX # USB HID mice. # # drivers/usb/input/hid-input.c # 2005/01/11 17:45:02+01:00 vojtech@silver.ucw.cz +9 -3 # input: Add support for H-Wheel on Microsoft Explorer and Logitech MX # USB HID mice. # # drivers/usb/input/hid-debug.h # 2005/01/11 17:45:02+01:00 vojtech@silver.ucw.cz +14 -10 # input: Add support for H-Wheel on Microsoft Explorer and Logitech MX # USB HID mice. # # ChangeSet # 2005/01/11 13:15:31+01:00 vojtech@silver.ucw.cz # Merge silver.ucw.cz:/home/vojtech/bk/linus # into silver.ucw.cz:/home/vojtech/bk/input # # Documentation/kernel-parameters.txt # 2005/01/11 13:15:23+01:00 vojtech@silver.ucw.cz +0 -0 # Auto merged # # ChangeSet # 2005/01/11 11:05:32+01:00 vojtech@silver.ucw.cz # Merge bkbits:input into silver.ucw.cz:/home/vojtech/bk/input # # Documentation/kernel-parameters.txt # 2005/01/11 11:05:25+01:00 vojtech@silver.ucw.cz +0 -0 # Auto merged # # ChangeSet # 2005/01/10 15:05:31-08:00 akpm@bix.(none) # Merge bix.(none):/usr/src/bk25 into bix.(none):/usr/src/bk-input # # drivers/usb/input/hid-core.c # 2005/01/10 15:05:26-08:00 akpm@bix.(none) +0 -0 # Auto merged # # ChangeSet # 2005/01/08 21:50:33-08:00 akpm@bix.(none) # Merge bix.(none):/usr/src/bk25 into bix.(none):/usr/src/bk-input # # Documentation/kernel-parameters.txt # 2005/01/08 21:50:29-08:00 akpm@bix.(none) +0 -0 # Auto merged # # ChangeSet # 2005/01/04 23:27:11-08:00 akpm@bix.(none) # Merge bix.(none):/usr/src/bk25 into bix.(none):/usr/src/bk-input # # Documentation/kernel-parameters.txt # 2005/01/04 23:27:07-08:00 akpm@bix.(none) +0 -0 # Auto merged # # ChangeSet # 2005/01/04 14:15:59-08:00 akpm@bix.(none) # Merge bix.(none):/usr/src/bk25 into bix.(none):/usr/src/bk-input # # Documentation/kernel-parameters.txt # 2005/01/04 14:15:55-08:00 akpm@bix.(none) +0 -0 # Auto merged # # ChangeSet # 2005/01/04 00:25:03-08:00 akpm@bix.(none) # Merge bk://kernel.bkbits.net/vojtech/input # into bix.(none):/usr/src/bk-input # # Documentation/kernel-parameters.txt # 2005/01/04 00:24:59-08:00 akpm@bix.(none) +0 -0 # Auto merged # # ChangeSet # 2005/01/04 00:23:10-08:00 akpm@bix.(none) # Merge bix.(none):/usr/src/bk25 into bix.(none):/usr/src/bk-input # # Documentation/kernel-parameters.txt # 2005/01/04 00:23:05-08:00 akpm@bix.(none) +0 -0 # Auto merged # # ChangeSet # 2005/01/02 11:54:40+01:00 vojtech@silver.ucw.cz # Merge silver.ucw.cz:/home/vojtech/bk/linus # into silver.ucw.cz:/home/vojtech/bk/input # # Documentation/kernel-parameters.txt # 2005/01/02 11:54:34+01:00 vojtech@silver.ucw.cz +0 -0 # Auto merged # # ChangeSet # 2004/12/29 18:24:03-08:00 akpm@bix.(none) # Merge bix.(none):/usr/src/bk25 into bix.(none):/usr/src/bk-input # # Documentation/kernel-parameters.txt # 2004/12/29 18:23:57-08:00 akpm@bix.(none) +0 -0 # Auto merged # # ChangeSet # 2004/12/28 20:48:26-08:00 akpm@bix.(none) # Merge bk://kernel.bkbits.net/vojtech/input # into bix.(none):/usr/src/bk-input # # drivers/usb/input/hid-core.c # 2004/12/28 20:48:22-08:00 akpm@bix.(none) +0 -0 # Auto merged # # drivers/input/tsdev.c # 2004/12/28 20:48:22-08:00 akpm@bix.(none) +0 -0 # Auto merged # # drivers/input/mousedev.c # 2004/12/28 20:48:22-08:00 akpm@bix.(none) +0 -0 # Auto merged # # drivers/input/joydev.c # 2004/12/28 20:48:22-08:00 akpm@bix.(none) +0 -0 # Auto merged # # drivers/input/evdev.c # 2004/12/28 20:48:22-08:00 akpm@bix.(none) +0 -0 # Auto merged # # Documentation/kernel-parameters.txt # 2004/12/28 20:48:22-08:00 akpm@bix.(none) +0 -0 # Auto merged # # ChangeSet # 2004/12/25 08:59:48-08:00 akpm@bix.(none) # Merge bix.(none):/usr/src/bk25 into bix.(none):/usr/src/bk-input # # drivers/input/tsdev.c # 2004/12/25 08:59:44-08:00 akpm@bix.(none) +0 -5 # Auto merged # # drivers/input/mousedev.c # 2004/12/25 08:59:44-08:00 akpm@bix.(none) +0 -2 # Auto merged # # drivers/input/joydev.c # 2004/12/25 08:59:44-08:00 akpm@bix.(none) +0 -2 # Auto merged # # drivers/input/evdev.c # 2004/12/25 08:59:44-08:00 akpm@bix.(none) +0 -2 # Auto merged # # ChangeSet # 2004/12/16 13:33:00-08:00 akpm@bix.(none) # Merge bk://kernel.bkbits.net/vojtech/input # into bix.(none):/usr/src/bk-input # # drivers/usb/input/hid-core.c # 2004/12/16 13:32:57-08:00 akpm@bix.(none) +0 -0 # Auto merged # # Documentation/kernel-parameters.txt # 2004/12/16 13:32:57-08:00 akpm@bix.(none) +0 -0 # Auto merged # diff -Nru a/drivers/usb/input/hid-core.c b/drivers/usb/input/hid-core.c --- a/drivers/usb/input/hid-core.c 2005-01-23 22:39:29 -08:00 +++ b/drivers/usb/input/hid-core.c 2005-01-23 22:39:29 -08:00 @@ -925,8 +925,9 @@ break; case -ECONNRESET: /* unlink */ case -ENOENT: - case -ESHUTDOWN: case -EPERM: + case -ESHUTDOWN: /* unplug */ + case -EILSEQ: /* unplug timeout on uhci */ return; case -ETIMEDOUT: /* NAK */ break; @@ -1136,12 +1137,15 @@ { struct hid_device *hid = urb->context; unsigned long flags; + int unplug = 0; switch (urb->status) { case 0: /* success */ + case -ESHUTDOWN: /* unplug */ + case -EILSEQ: /* unplug timeout on uhci */ + unplug = 1; case -ECONNRESET: /* unlink */ case -ENOENT: - case -ESHUTDOWN: break; default: /* error */ warn("output irq status %d received", urb->status); @@ -1149,7 +1153,10 @@ spin_lock_irqsave(&hid->outlock, flags); - hid->outtail = (hid->outtail + 1) & (HID_OUTPUT_FIFO_SIZE - 1); + if (unplug) + hid->outtail = hid->outhead; + else + hid->outtail = (hid->outtail + 1) & (HID_OUTPUT_FIFO_SIZE - 1); if (hid->outhead != hid->outtail) { if (hid_submit_out(hid)) { @@ -1173,6 +1180,7 @@ { struct hid_device *hid = urb->context; unsigned long flags; + int unplug = 0; spin_lock_irqsave(&hid->ctrllock, flags); @@ -1180,16 +1188,21 @@ case 0: /* success */ if (hid->ctrl[hid->ctrltail].dir == USB_DIR_IN) hid_input_report(hid->ctrl[hid->ctrltail].report->type, urb, regs); + case -ESHUTDOWN: /* unplug */ + case -EILSEQ: /* unplug timectrl on uhci */ + unplug = 1; case -ECONNRESET: /* unlink */ case -ENOENT: - case -ESHUTDOWN: case -EPIPE: /* report not available */ break; default: /* error */ warn("ctrl urb status %d received", urb->status); } - hid->ctrltail = (hid->ctrltail + 1) & (HID_CONTROL_FIFO_SIZE - 1); + if (unplug) + hid->ctrltail = hid->ctrlhead; + else + hid->ctrltail = (hid->ctrltail + 1) & (HID_CONTROL_FIFO_SIZE - 1); if (hid->ctrlhead != hid->ctrltail) { if (hid_submit_ctrl(hid)) { diff -Nru a/drivers/usb/input/hid-debug.h b/drivers/usb/input/hid-debug.h --- a/drivers/usb/input/hid-debug.h 2005-01-23 22:39:29 -08:00 +++ b/drivers/usb/input/hid-debug.h 2005-01-23 22:39:29 -08:00 @@ -81,15 +81,21 @@ {0, 0x8b, "SystemMenuLeft"}, {0, 0x8c, "SystemMenuUp"}, {0, 0x8d, "SystemMenuDown"}, - {0, 0x90, "D-padUp"}, - {0, 0x91, "D-padDown"}, - {0, 0x92, "D-padRight"}, - {0, 0x93, "D-padLeft"}, + {0, 0x90, "D-PadUp"}, + {0, 0x91, "D-PadDown"}, + {0, 0x92, "D-PadRight"}, + {0, 0x93, "D-PadLeft"}, { 7, 0, "Keyboard" }, + {0, 0x01, "NumLock"}, + {0, 0x02, "CapsLock"}, + {0, 0x03, "ScrollLock"}, + {0, 0x04, "Compose"}, + {0, 0x05, "Kana"}, { 8, 0, "LED" }, { 9, 0, "Button" }, { 10, 0, "Ordinal" }, - { 12, 0, "Hotkey" }, + { 12, 0, "Consumer" }, + {0, 0x238, "HorizontalWheel"}, { 13, 0, "Digitizers" }, {0, 0x01, "Digitizer"}, {0, 0x02, "Pen"}, @@ -653,12 +659,10 @@ [KEY_SLOW] = "Slow", [KEY_SHUFFLE] = "Shuffle", [KEY_BREAK] = "Break", [KEY_PREVIOUS] = "Previous", [KEY_DIGITS] = "Digits", [KEY_TEEN] = "TEEN", - [KEY_TWEN] = "TWEN", [KEY_DEL_EOL] = "Delete EOL", - [KEY_DEL_EOS] = "Delete EOS", [KEY_INS_LINE] = "Insert line", - [KEY_DEL_LINE] = "Delete line", + [KEY_TWEN] = "TWEN", [KEY_DEL_EOL] = "DeleteEOL", + [KEY_DEL_EOS] = "DeleteEOS", [KEY_INS_LINE] = "InsertLine", + [KEY_DEL_LINE] = "DeleteLine", }; - -static char *absval[5] = { "Value", "Min ", "Max ", "Fuzz ", "Flat " }; static char *relatives[REL_MAX + 1] = { [0 ... REL_MAX] = NULL, diff -Nru a/drivers/usb/input/hid-input.c b/drivers/usb/input/hid-input.c --- a/drivers/usb/input/hid-input.c 2005-01-23 22:39:29 -08:00 +++ b/drivers/usb/input/hid-input.c 2005-01-23 22:39:29 -08:00 @@ -185,7 +185,9 @@ break; case HID_UP_LED: - map_led((usage->hid - 1) & 0xf); + if (usage->hid - 1 >= LED_MAX) + goto ignore; + map_led(usage->hid - 1); break; case HID_UP_DIGITIZER: @@ -231,7 +233,6 @@ case HID_UP_CONSUMER: /* USB HUT v1.1, pages 56-62 */ - set_bit(EV_REP, input->evbit); switch (usage->hid & HID_USAGE) { case 0x000: goto ignore; case 0x034: map_key_clear(KEY_SLEEP); break; @@ -268,6 +269,7 @@ case 0x226: map_key_clear(KEY_STOP); break; case 0x227: map_key_clear(KEY_REFRESH); break; case 0x22a: map_key_clear(KEY_BOOKMARKS); break; + case 0x238: map_rel(REL_HWHEEL); break; default: goto unknown; } break; @@ -288,9 +290,13 @@ case 0x084: map_key_clear(KEY_FINANCE); break; case 0x085: map_key_clear(KEY_SPORT); break; case 0x086: map_key_clear(KEY_SHOP); break; - default: goto unknown; + default: goto ignore; } break; + + case HID_UP_MSVENDOR: + + goto ignore; case HID_UP_PID: diff -Nru a/drivers/usb/input/hid.h b/drivers/usb/input/hid.h --- a/drivers/usb/input/hid.h 2005-01-23 22:39:29 -08:00 +++ b/drivers/usb/input/hid.h 2005-01-23 22:39:29 -08:00 @@ -181,6 +181,7 @@ #define HID_UP_DIGITIZER 0x000d0000 #define HID_UP_PID 0x000f0000 #define HID_UP_HPVENDOR 0xff7f0000 +#define HID_UP_MSVENDOR 0xff000000 #define HID_USAGE 0x0000ffff